Guides

How to Sync Data into Pipedrive Without Duplicates

By Nehal Azhar, Zoho Certified Consultant / AWS Certified Solutions Architect · Published · Updated

To sync data into Pipedrive without duplicates, store the source system's ID in a custom field, search for that ID with an exact match before every create, and update only the fields that changed. Fix duplicates that already exist with Pipedrive's built-in merge. A sync is safe when running it twice in a row changes nothing.

How do you merge duplicates already in Pipedrive?

Go to Tools and apps, then Merge Duplicates, to see possible duplicate people and organizations. For anything not flagged, open a deal, person or organization, click More (...) and choose Merge. Pick a primary item and use Preview before you finish. The primary item's data wins any conflict.

  • Pipedrive says merging is only available to admins or users with the right permission, and that a merge cannot be undone.
  • The article does not state plan availability, so check your plan.
  • Export a backup first, and fix the sync before merging, or it will recreate what you removed.

Why do API syncs create duplicates?

A sync makes duplicates when it creates first and asks questions later. Pipedrive's add-person documentation describes the required fields and does not describe a duplicate check, so treat every create call as a real create. The check has to be yours.

Add a custom text field such as "Source ID" and write the source system's ID into it on every record you create. Then look records up by that value. Pipedrive's search endpoints take a term, an optional fields list that can be limited to custom_fields, and exact_match. With exact_match only full matches return and, on the general search, case is ignored. The minimum term is 2 characters, or 1 with an exact match.

  • Pipedrive's search docs list only some custom field types as searchable. The list is address, varchar, text, varchar_auto, double, monetary and phone. A plain text field is the safe choice.
  • Search returns up to 100 results per page and uses a cursor for the next page.
  • Fall back in order: source ID, then email, then name plus organization. Stop at the first match.

What does the upsert logic look like?

This is example pseudo-code, not a drop-in script. The endpoints and the custom_fields object follow Pipedrive's v2 docs.

// Example pseudo-code
for each source record r:
  hit = GET /api/v2/persons/search?term=r.id&fields=custom_fields&exact_match=true
  if no hit: hit = search by r.email (fields=email, exact_match=true)
  if no hit: hit = search by r.name, keep only the one in r.organization
  if no hit:
    if not dryRun: POST /api/v2/persons { name, emails, custom_fields: { SOURCE_ID: r.id } }
  else:
    changed = fields where r.value != hit.value
    // emails/phones: merge hit.emails with r.email first, send the full list
    if changed and not dryRun: PATCH /api/v2/persons/{hit.id} changed
  on 429: wait, back off, retry

The v2 update call is a PATCH, so send only the fields that differ. Be careful with multi-value fields. Pipedrive's v2 migration guide says that updating a product's prices replaces the whole array, and it does not say that emails or phones are merged. Assume they are replaced: read the existing values, merge yours in and send the full list, or a sync can wipe values your team added by hand.

Which API version should you use?

Use v2 where it exists. Pipedrive's changelog says deprecated v1 endpoints went out of support on 1 August 2026. v2 uses cursor pagination, nests custom fields in a custom_fields object, and uses PATCH where v1 used PUT.

Leads are the awkward case. In the current docs, adding, updating, getting and deleting a lead are v1 endpoints, while lead search and lead conversion are v2. Lead IDs are UUIDs, a lead must be linked to a person or an organization, and leads reuse the custom field structure of deals. Check each endpoint's label before you build.

How do rate limits affect a sync?

Pipedrive uses a daily token budget: 30,000 base tokens times your plan multiplier times the number of seats. The multipliers are Lite 1, Growth 2, Premium 5 and Ultimate 7. The budget is shared company-wide and resets at midnight in the server's timezone. Over budget, requests get a 429.

  • Search has its own burst limit of 10 requests per 2 seconds on every plan.
  • Pipedrive warns that clients which keep sending high volume after a 429 may get a 403.
  • Read the x-ratelimit-remaining header and slow down before you hit the wall, then retry with exponential backoff.

How do you make a sync safe to re-run?

Test with this rule: two runs in a row change nothing. In our construction lead sync we dedupe by source ID, then email, then name plus organization, and add a dry-run mode that shows what would be written. In an ERP-to-Pipedrive sync the watermark is stored in Pipedrive itself, so no database is needed.

Deleted records are a trap. Pipedrive's deal list includes deleted deals from the last 30 days only when you ask, while search filters list open, won and lost. Test what your sync does when someone deletes a record. For help, see our CRM integration service.

Frequently asked questions

Does Pipedrive search ignore upper and lower case?

It depends on the endpoint. Pipedrive says the general search with exact_match is not case sensitive, while the field-specific search (itemSearch/field) is case sensitive. Store a normalized lower-case email and compare in the same form.

What happens to my sync when Pipedrive returns 429?

You have used the daily token budget or a burst limit. Back off, retry later, and keep sending requests only at a rate the headers allow, since a 403 can follow persistent over-use.

Can I undo a Pipedrive merge?

No. Pipedrive says merged items cannot be un-merged. Export the records first and merge only after you have fixed what caused the duplicates.

Should I search by name?

Only as a last step and with the organization checked too. Names are the weakest key, so match on source ID, then email, and let a person review ambiguous results.

How many records can I update per day?

It depends on your plan, seats and which endpoints you call, because each call costs tokens. Check your daily budget in your account against Pipedrive's rate-limit article.

Sources

Checked 31 Oct 2026. Provider settings and limits change, so confirm against the linked documentation.

Keep going

Duplicates or a sync you don't trust? We'll fix the data and the rules.

We audit the CRM first, then fix the data model and the integration, with dry runs and undo files before anything changes.