Prevent duplicate leads
Airlead provides two separate protections because a repeated request and a similar person are not always the same problem:- Idempotency recognizes the same upstream event.
- Duplicate detection finds an existing person with the same email address or phone number.
Use an external ID for every integrated lead
Send a stableexternalId from the source system with every webhook request.
For the same source, sending the same external ID again returns the existing lead as an idempotent replay instead of creating another person and interest.
Configure duplicate detection
Duplicate detection can compare new data by:- email address
- phone number
- the current channel
- the entire workspace
- Reject the new lead, or
- Warn and keep it marked as a duplicate for review.
Idempotent replay vs. duplicate
Choose the right scope
Use channel scope when the same contact may legitimately enter different lead programs. Use workspace scope when your organization must review any repeated person before accepting another request. Remember that one person can legitimately have several interests. A previous solar request should not automatically make a later heat-pump request invalid.Before importing or going live
- Decide which upstream field becomes
externalId. - Confirm that it remains stable across retries.
- Enable duplicate detection at workspace level if required.
- Configure email, phone, scope, and warn/reject behavior on the source.
- Submit one synthetic lead.
- Replay the same external ID and expect
idempotent_replay. - Submit a new external ID with the same email or phone and verify the configured duplicate result.
If duplicates already exist
- Open Records → Persons.
- Search by email address and phone number.
- Compare interests, source, external ID, and creation time.
- Preserve valid separate interests.
- Correct or remove only records your process identifies as unintended duplicates.
- Fix the source configuration before importing again.
Manually using a “duplicate record” action intentionally creates another record. It is different from ingest duplicate detection.

