Automatically detects duplicate companies and people in your Attio CRM by monitoring webhook events for record creation and attribute updates. The app checks for duplicates across domains (including redirects), email addresses, and social media profiles (LinkedIn, Twitter, Facebook) using intelligent matching algorithms. When duplicates are found, they're automatically recorded in dedicated deduplication lists with detailed context about why the match occurred, helping maintain data quality and prevent duplicate outreach efforts.
Detect and surface duplicate People and Companies from email, socials (LinkedIn, Twitter, Facebook), and domain redirects. Records are written to a review list with a clear audit trail. Auto-merging is not currently available due to limitations in Attio. The app can be found on the Attio app marketplace here: Duplicate Detection
This app relies on httpstatus.io to find and handle redirects. If you don't already have an account, please visit their website and sign up. For $10, you can validate 10,000 records. For testing purposes, we recommend trying out their generous free tier with 500 requests.
Note: The connection value should be your API key as a plain string. If you leave it empty, domain duplicate detection will be disabled, but email, social media, and other duplicate detection will continue to work.
When you add a connection, this app will do two things:
Create two lists: "Duplicate Companies" and "Duplicate People". As duplicates are found, they are logged in these lists.
Start listening for changes to several attributes:
The social media attributes on People and Companies (LinkedIn, Facebook, Twitter)
Email addresses (People)
Domains (Companies)
When one of the social media attributes changes, the app will check to find any other People or Companies with identical social media handles. If a match is found, the Person or Company is logged to the appropriate List.
When a domain is edited (added or removed), the app will check to see if the new domain redirects to any domains on an existing Company record. If a match is found, it is logged to the "Duplicate Companies" list.
When an email address is edited (added or removed), the app will attempt to normalize that email address (removing any .'s or +'s) and find existing records with that same normalized email. It will also attempt to find that email address that are on domains that redirect from the original email (for example, jon@example.io and jon@example.com, if example.io redirects to example.com)
After adding your connection, you can configure optional duplicate detection checks:
Go to app settings → Workspace Settings
These settings are always enabled and cannot be disabled:
Enable or disable additional duplicate detection checks:
Person Markers:
Company Markers:
Important: After changing optional check settings, click "Save & Sync" to update webhook subscriptions. If you skip this step, optional checks may not be enabled. The settings page will show a sync status indicator to let you know if your settings are in sync.
Each duplicate entry in the lists includes the following fields:
Duplicate Reason: The reason for the duplicate (same linkedin, same email, etc.)
Duplicate Of: The existing record that was found in Attio (record reference)
Input Value: Incoming value the app attempted to match to
Matched Value: The matched value that was found in the CRM
Details: Free-text notes with additional context about the duplicate
Merged: Checkbox indicating if the duplicate was resolved via merge
When two records are merged in Attio:
record.merged webhook is triggeredduplicate_ofmerged = trueThis ensures duplicate entries are automatically marked as resolved when records are merged.
Domain Redirect Detection: Requires HTTP Status API key. If not provided or invalid, domain duplicate detection is disabled (non-blocking). Email and social media duplicate detection continue to work.
Name + Company Matching: Only works when a person record has a company attached. Records without companies are skipped.
Phone Number Matching: Normalizes formatting but may not handle all international formats. US numbers with/without country code are handled.
Webhook Delivery: Attio webhooks may occasionally be delayed.
List Entry Creation: If lists or attributes aren't fully provisioned, list entries may fail to create. Re-adding the connection will trigger re-provisioning.
It provides real-time duplicate detection for Attio records. When a record is created or updated, the app checks for duplicates based on email addresses, domains, social media profiles, and optional markers. If duplicates are found, entries are created in deduplication lists for review.
Duplicates are stored as list entries in two special lists:
Each entry links to the duplicate record via the duplicate_of attribute and includes details about why the records are considered duplicates.
Webhook handlers created via the Attio SDK are hidden by design. They still run behind the scenes and are removed automatically when you disconnect the integration.
No. The integration only detects and reports duplicates. You must manually merge records in Attio. When you merge records, the app automatically marks the duplicate entries as merged. If you need help bulk-merging duplicates, please contact us for help; duplicate auditing and bulk-merging is a paid service we offer (turnaround time is typically a few hours.)
Duplicates are detected in real-time via webhooks. Typically, duplicate entries appear in deduplication lists within 10-20 seconds of the record being created or updated.
When you merge records in Attio:
record.merged webhook is triggeredduplicate_ofmerged = trueThis marks the duplicate as resolved. We recommend filtering these out from your default view of the List.
Yes. Core attributes (email, domain, social media) are always checked. Optional checks (phone numbers, names, company names) can be enabled/disabled in workspace settings.
For name + company matching:
For phone numbers:
For email addresses:
Domain duplicate detection will be disabled, but email and social media duplicate detection will continue to work. The app logs a warning but continues setup.
Yes. Use "List entry added" as the trigger on either deduplication list, then branch based on duplicate reason or other attributes.
Important: You must click "Save & Sync" after changing optional check settings, otherwise the changes won't take effect. The settings page shows a sync status indicator to help you know when settings are in sync.
When you disable an optional check and click "Save & Sync":
The "Save & Sync" button updates webhook subscriptions based on your optional check settings. Without clicking it, the webhook subscriptions won't match your settings, and optional checks may not be enabled. The settings page displays a sync status indicator showing whether your settings are in sync.
This app is free to install and use. We built this to make it easy to keep your Attio CRM clean and duplicate-free. If you need custom functionality, or help finding and bulk-merging duplicates, let us know.
Published: August 17, 2025
Last updated: December 12, 2025