Dedupe in Zapier, Make, or n8n

The API is one POST, so no-code tools need no native app: Zapier's Webhooks action, Make's HTTP module, and n8n's HTTP Request node each call it directly. This page has the exact settings for all three and a downloadable n8n workflow you can import as-is.

The request every tool sends

POST https://dedupe.dev/api/dedupe
Authorization: Bearer YOUR_API_KEY
Content-Type: application/json

{"mode":"lines","data":"a@x.com\nb@y.com\na@x.com","options":{"ignoreCase":true}}

The response carries result, kept and removed. Swap in rows mode for CSV or json mode for arrays; the reference documents every option, and a free key covers 1,000 rows a month for wiring things up.

Zapier

  1. Add an action step: Webhooks by Zapier → Custom Request.
  2. Method POST, URL https://dedupe.dev/api/dedupe.
  3. Data: the JSON body above, with your list mapped into data.
  4. Headers: Authorization = Bearer YOUR_API_KEY and Content-Type = application/json.

The step's output gives later steps result (the deduplicated data), kept and removed.

Make (Integromat)

  1. Add an HTTP → Make a request module.
  2. URL https://dedupe.dev/api/dedupe, method POST, body type Raw, content type JSON.
  3. Request content: the JSON body above. Add the Authorization header.
  4. Enable Parse response so result maps into the next module.

n8n

n8n gets its own page with two ready-made imports, including a pipeline that dedupes and then validates a mailing list in one run. The short version: import the minimal workflow (Workflows → Import from File). It contains a manual trigger, a sample-data node you replace with your real source, and an HTTP Request node already configured for the endpoint; paste your key into the request's Authorization header (or move it into an n8n credential) and run. Self-hosted n8n keeps everything on your infrastructure except the one call to the API.

Where this pattern fits

Anywhere a flow accumulates a list before acting on it: dedupe form submissions before they reach the CRM, clean a mailing list before the send step, drop repeated webhook payloads by ID with json mode and options.key. The step is stateless, so it dedupes within what you send it; flows that need "have I ever seen this before" memory across runs should keep using their tool's built-in storage for that part.

FAQ

Frequently asked questions

Do I need a paid Zapier or Make plan?

The dedupe step itself is one HTTP call, which Zapier's Webhooks action, Make's HTTP module, and n8n's HTTP Request node all do on their free tiers. Whether the rest of your flow fits a free tier depends on the rest of your flow.

Which mode should the flow use?

rows for CSV text (with options.keyColumns to pick the identity column), lines for plain lists like an email column joined with newlines, json for arrays of records your flow already holds as structured data.

Is there a native Zapier or Make app?

Not yet, deliberately: the endpoint is one POST, so the built-in webhook modules already do everything a native app would, without another integration holding your API key. If a native app would genuinely help you, say so via /contact.

What happens when the flow sends too much?

The API refuses with a clear JSON error rather than truncating: 413 for oversized or over-cap requests, 429 when a quota or rate limit is hit, each with the limit in the body. Errors are never billed, so a misconfigured flow costs requests, not units.

Last updated