Duplicate Detection for Attio

Attio logo
Available

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.

Duplicate Detection for Attio

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

How to get set up:

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.

  1. Sign up for an API key on httpstatus.io (this Loom video walks through how to find the API key)
  2. Install the Duplicate Detection app to your Attio workspace
  3. Add a connection. Paste your HTTP Status API key directly into the connection field (plain text, not JSON).

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)

Workspace Settings

After adding your connection, you can configure optional duplicate detection checks:

Go to app settings → Workspace Settings

Core Settings (Always Enabled)

These settings are always enabled and cannot be disabled:

  • Check email addresses: Detect duplicate email addresses using canonicalization (Gmail dots, plus addressing, etc.)
  • Check domains: Detect duplicate company domains, including redirects and aliases
  • Check social media profiles: Detect duplicate LinkedIn, Twitter, and Facebook profiles

Optional Duplicate Checks

Enable or disable additional duplicate detection checks:

Person Markers:

  • Phone Numbers: Detect duplicate phone numbers across person records
  • Full Name + Company: Detect duplicate names by first name + last name + company (only runs if company is present)

Company Markers:

  • Company Name: Detect duplicate company names using exact matching

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.

Output fields (audit-friendly)

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

Record Merge Handling

When two records are merged in Attio:

  1. The record.merged webhook is triggered
  2. The app searches for list entries where the remaining record is the parent and the merged record is referenced in duplicate_of
  3. All matching entries are updated to set merged = true

This ensures duplicate entries are automatically marked as resolved when records are merged.

Known limitations & workarounds

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.

Frequently Asked Questions

1. What does the integration do?

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.

2. Where do duplicate entries show up in Attio?

Duplicates are stored as list entries in two special lists:

  • "Duplicate Companies" - Tracks duplicate company records
  • "Duplicate People" - Tracks duplicate person records

Each entry links to the duplicate record via the duplicate_of attribute and includes details about why the records are considered duplicates.

3. Why don't my webhook handlers show up in Attio's UI?

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.

4. Does the integration automatically merge duplicates?

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.)

5. How fast do duplicates appear after records are created/updated?

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.

6. What happens when I merge two duplicate records?

When you merge records in Attio:

  • The record.merged webhook is triggered
  • The app searches for list entries where the remaining record is the parent and the merged record is referenced in duplicate_of
  • All matching entries are updated to set merged = true

This marks the duplicate as resolved. We recommend filtering these out from your default view of the List.

7. Can I filter which attributes are checked for duplicates?

Yes. Core attributes (email, domain, social media) are always checked. Optional checks (phone numbers, names, company names) can be enabled/disabled in workspace settings.

8. Why are some duplicates not being detected?

For name + company matching:

  • Ensure the person record has a company attached
  • The matching uses first name + last name + company record ID (exact match)
  • Check that names are properly formatted in Attio

For phone numbers:

  • Phone numbers are normalized (non-digits removed except +)
  • Handles country code variations (+1 prefix for US numbers)
  • Ensure phone numbers are stored in a recognizable format

For email addresses:

  • Email canonicalization handles Gmail dots and plus addressing
  • Multiple search candidates are generated for each email
  • Check that email values are being extracted correctly from records

9. What if I don't have an HTTP Status API key?

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.

10. Can I trigger workflows from duplicate detection?

Yes. Use "List entry added" as the trigger on either deduplication list, then branch based on duplicate reason or other attributes.

11. How do I enable optional duplicate checks?

  1. Go to Workspace Settings → Duplicate Detection Settings
  2. Toggle optional checks on/off under "Optional Duplicate Checks"
  3. Click "Save & Sync" to apply changes
  4. The app will create/delete webhook subscriptions as needed

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.

12. What happens when I disable an optional check?

When you disable an optional check and click "Save & Sync":

  • The webhook handler and subscription are deleted
  • No new duplicate entries will be created for that check type
  • Existing entries in deduplication lists remain unchanged

13. Why do I need to 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.

14. Is this a paid app?

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