Skip to content

Prevent HubSpot duplicates from OutboundSync

When to use this guide: Use this when HubSpot is the source of truth, contacts (and companies) already exist, and you have a low tolerance for duplicate companies or net-new contacts from outbound. Common triggers: multi-domain firm variants (same firm, different email domains) or lists that must never create CRM records from the sequencer.

OutboundSync can look up existing HubSpot contacts and log Instantly (and other SEP) activity on those records. Duplicate risk is usually on the company object — HubSpot company association from OutboundSync keys off the contact’s email domain, not a company name from your sequencer. Firms with several domains can get extra company records when Create or update company is on.

Use as much of the stack below as your risk tolerance requires. Most teams only need step 1 or 2; power users combine all three.

On the HubSpot webhook receiver, set Create or update company to Off.

OutboundSync still matches and updates contacts and logs contact-level activity. It will not create or domain-associate companies from the webhook. Prefer this when:

  • Companies are already correct in HubSpot and contacts are already associated
  • The same firm appears under multiple domains
  • Lists are heavy with personal email domains (Gmail and similar)

See Recommended webhook receiver settings and Gmail and personal email addresses.

Set Contact handling to Update Only when you do not want OutboundSync to create HubSpot contacts.

OutboundSync searches for a matching contact. If one exists, it updates properties and logs activity. If none matches, it skips create by design — the payload can still appear in OutboundSync without a new HubSpot contact. Details: Data in OutboundSync but not my CRM.

Leave Update Only off for classic cold outbound where unmatched prospects should become HubSpot contacts so activity has a place to land.

3. Match on a unique custom lookup (optional)

Section titled “3. Match on a unique custom lookup (optional)”

Default email matching is enough for most accounts. When email is not unique enough — or you want belt-and-suspenders matching — pass a unique key on every SEP event:

  1. Include a custom field named os_objectlookup_id when you import leads into Instantly, EmailBison, or HeyReach (Clay exports make this easy).
  2. Put the HubSpot contact record ID, or another unique HubSpot property (for example a firm or license ID your team already uses), in that field.
  3. In the OutboundSync webhook receiver, set Object Lookup Method to Alternative Property, then set Object Lookup Selection to the HubSpot property that holds the same value.

Full steps: Using custom lead/contact object lookup ID. For social platforms (HeyReach / Aimfox), see also Lookup method options for social sync.

Section titled “Recommended stack for zero net-new creates”
GoalSetting
No domain-based company creates / dupesCreate or update company → Off
No net-new HubSpot contactsContact handling → Update Only
Match the exact CRM row you enrolledAlternative Property + os_objectlookup_id + Object Lookup Selection

Pre-load contacts (and company associations) in HubSpot before campaigns when you rely on Update Only. Pair with Instantly webhooks → OutboundSync and leave Instantly’s native HubSpot connector off — see the Instantly overview.