// Deduplication
Collapse duplicates into one clean record.
Detect exact and near-duplicate records and merge them into a single surviving record — through one API.
Who this is for
- RevOps teams whose contact and account counts are inflated by duplicates
- Data teams whose reports don't reconcile across systems
- Developers deduplicating records before an import or migration
The problem
Duplicates creep in from every import, form, and integration. Left alone they inflate counts, split history across records, and make every downstream report wrong.
Where it goes wrong
Exact duplicates from replays
Form double-submits and webhook retries create byte-identical duplicates that inflate counts and fire automations twice.
Near-duplicates from human entry
"Jon Smith" and "John Smith" at the same company are the same person to a human and two records to your database. Exact-match dedupe misses them entirely.
How it works
Send your records
Provide the dataset you want deduplicated — contacts, leads, accounts, or any structured records.
Matching finds duplicates
Exact and fuzzy matching identify duplicate and near-duplicate records, with a confidence score on every match.
One record survives
Survivorship rules merge matched records into a single clean record, keeping the best value for each field.
How Zapinner solves it
Normalize, then match
Deduplication is most reliable after normalization: canonicalize identity fields first so matching compares like with like, then score candidate pairs with exact and fuzzy matching.
Confidence and survivorship
Every match carries a confidence score. Above your threshold, survivorship rules merge the group into one record keeping the best value per field; below it, the pair is left for review rather than merged blindly.
Deduplicate a contact list
curl -X POST https://zapinner.com/api/v1/dedupe \
-H "Authorization: Bearer $ZAPINNER_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"records": [
{ "name": "Jon Smith", "email": "j.smith@acme.io" },
{ "name": "John Smith", "email": "j.smith@acme.io" }
],
"fields": ["name", "email"]
}'
# -> duplicate groups with a confidence score per matchReliability & security
You choose the threshold
Nothing is merged silently below the confidence you set. Deduplication is a decision you control, not a black box that quietly deletes records.
The outcome
Accurate counts, unified history, and reports that finally reconcile — with confidence surfaced on every match.
Frequently asked
- What's the difference between exact and fuzzy matching?
- Exact matching catches byte-identical duplicates; fuzzy matching scores near-duplicates like "Jon" vs. "John" with a confidence value so you can catch human-entry variants.
- How does it decide which record survives?
- Survivorship rules keep the best value for each field across the matched group — for example the most complete or most recently updated — so the surviving record is better than any single input.
