How does Interhubz match Intercom contacts to HubSpot contacts?
Interhubz uses multiple matching strategies in priority order:
Email Matching: Match by email address (primary strategy)
Phone Number Matching: Match by phone number
External ID Matching: Match by custom property pairs you define
The system tries each strategy in order until a match is found.
Can I control which matching strategies are used?
Yes! Navigate to Connections β [Connection] β Matching β Contact Matching to:
Enable or disable each strategy
Set the priority order
Configure strategy-specific settings
Do I need to configure matching, or does it work automatically?
Email matching works automatically out of the box. Phone and External ID matching require configuration in your matching settings.
Email Matching
How does email matching work?
Interhubz compares the email address from the Intercom contact to the email addresses in your HubSpot contacts:
Case-insensitive comparison
Automatic email normalization (see below)
Exact match required after normalization
What is email normalization?
Email normalization improves match accuracy by standardizing email formats:
Plus-Addressing Removal:
john+promo@acme.comβjohn@acme.comHelps match contacts who use email aliases
Gmail Dot Normalization:
john.doe@gmail.comβjohndoe@gmail.comGmail ignores dots, so we do too
Role/Disposable Detection:
Flags emails like
admin@,noreply@, temporary email servicesConfigurable policy for how to handle these
Can I disable email normalization?
Email normalization settings are configurable in Matching β Contact Matching β Email Normalization. You can enable or disable:
Plus-addressing stripping
Gmail dot normalization
Role/disposable email policies
What happens if multiple HubSpot contacts have the same email?
This is a collision. Interhubz uses a tie-breaker strategy (configurable):
Most Recent (default):
Selects the contact with the most recent engagement
Uses a configurable lookback window (default: 30 days)
Falls back to last modified timestamp if tied
If still inconclusive, the collision is logged and you can resolve it manually.
Phone Number Matching
How does phone number matching work?
Phone numbers are normalized to E.164 international format and compared across multiple HubSpot fields:
phonemobilephonehs_whatsapp_phone_number
A match occurs if the normalized phone numbers are identical.
What is E.164 format?
E.164 is the international phone number standard (e.g., +14155551234). All phone numbers are converted to this format before matching to ensure consistency regardless of how they're stored.
How does Interhubz know which country code to use?
The system infers the country code from:
The conversation's channel metadata (e.g., WhatsApp channel country)
Your configured default country (configurable in matching settings)
Falls back to US if neither is available
My phone numbers don't have country codes. Will they still match?
If your HubSpot phone numbers lack country codes, configure:
Default Country: Set to your primary market (e.g., United States)
Require Country Code: Disabled
This allows matching of local-format numbers (e.g., (415) 555-1234) by applying your default country code.
Why do phone matching settings matter?
Phone numbers can be stored in many formats:
(415) 555-1234+1-415-555-12344155551234+14155551234
Normalization ensures all these formats match correctly.
External ID Matching
What is External ID matching?
External ID matching lets you match contacts using custom property pairs between Intercom and HubSpot. This is useful when:
You store your internal CRM IDs in both platforms
Email or phone aren't reliable identifiers
You need to match based on other unique identifiers
How do I configure External ID matching?
Navigate to Matching β Contact Matching and add property pairs:
Example Configuration:
Intercom property:
external_idβ HubSpot property:external_user_idIntercom property:
idβ HubSpot property:intercom_contact_idIntercom property:
custom_attributes.crm_idβ HubSpot property:crm_user_id
Can I use nested Intercom properties?
Yes! Use dot notation for nested custom attributes:
custom_attributes.crm_idcustom_attributes.salesforce_idcustom_attributes.user_data.internal_id
Can I configure multiple External ID property pairs?
Yes. You can configure multiple property pairs with priority ordering. The system tries each pair in order until a match is found.
Company Matching
How does Interhubz match Intercom companies to HubSpot companies?
Interhubz uses these strategies in priority order:
Primary Company: If a contact is matched, use that contact's associated company in HubSpot
Email Domain Matching: Extract the domain from the contact's email and search HubSpot companies
What is email domain matching?
Domain matching extracts the registrable domain from a contact's email and searches for HubSpot companies with that domain:
Example:
Contact email:
john@mail.acme.co.ukExtracted domain:
acme.co.ukSearches HubSpot companies with domain
acme.co.uk
Are free email providers like Gmail handled?
Yes. Domain matching automatically skips free email providers:
Gmail, Yahoo, Outlook, Hotmail
ProtonMail, iCloud, AOL
And many more
This prevents incorrectly grouping all Gmail users into one company.
What if multiple HubSpot companies have the same domain?
This is a collision. The system uses the tie-breaker strategy:
Most Recently Modified (default):
Selects the company with the most recent modification timestamp
If still tied, the collision is logged for manual resolution
Can I configure domain matching behavior?
Yes. Navigate to Matching β Company Matching to configure:
Whether to extract registrable domain
Whether to ignore free email providers
Domain alias mappings (e.g.,
acme.ioβacme.com)
Collision Resolution
What is a collision?
A collision occurs when multiple HubSpot records match the same Intercom contact or company. This can happen with:
Duplicate contacts in HubSpot with the same email
Multiple companies with the same domain
How are collisions resolved?
Interhubz uses configurable tie-breaker strategies:
Contact Collisions - Most Recent:
Finds the contact with the most recent engagement
Configurable lookback window (default: 30 days)
Falls back to last modified timestamp
Company Collisions - Most Recently Modified:
Selects company with the most recent modification date
What happens if a collision can't be resolved?
If the tie-breaker strategy can't determine a winner, the collision is logged and the conversation may be skipped or routed to an alternate destination (based on your fallback configuration).
Can I manually resolve collisions?
Yes. Collisions are logged in your activity logs. You can:
Review the collision details
Deduplicate the HubSpot records manually
Retrigger the capture via API Push
Match Quality & Accuracy
What happens if no match is found?
If no HubSpot contact or company is found, the system checks your Creation Policies:
Always Create: Automatically creates a new HubSpot record
Never Create: Skips the conversation or uses an alternate destination
Conditional: Creates based on specific criteria
Configure creation policies via: Matching β Creation Policies
How accurate is the matching?
Matching accuracy depends on your data quality:
High Accuracy Scenarios:
Clean, unique email addresses
Properly formatted phone numbers with country codes
Consistent external ID usage across platforms
Lower Accuracy Scenarios:
Duplicate emails in HubSpot
Missing or inconsistent data
Unformatted or invalid phone numbers
We recommend regular data hygiene in both Intercom and HubSpot for best results.
Can I see which strategy was used to match a record?
Yes. The configuration snapshot included in each captured conversation shows the matching strategy and settings used at capture time.
Advanced Matching
Can I prioritize certain matching strategies?
Yes. In your matching configuration, you can:
Reorder strategies to set priority
Disable strategies you don't want to use
Configure strategy-specific settings
Example: If you trust External ID matching more than email, move it to higher priority.
What if I want to match based on a field not supported?
External ID matching supports any custom property pair. If you need to match based on a unique field:
Ensure the property exists in both Intercom and HubSpot
Add it as an External ID property pair
Set its priority
Can I match companies independently of contacts?
Yes. Company matching works both:
Dependent: Via matched contact's primary company (highest priority)
Independent: Via email domain extraction
The system tries both approaches based on your configuration.
Best Practices
What matching configuration should I start with?
Recommended Starting Configuration:
Contact Matching:
Email matching: Enabled (priority 1)
Plus-addressing: Enabled
Gmail dots: Enabled
Phone matching: Enabled (priority 2)
Set your default country
External ID: Configure if you have internal IDs
Company Matching:
Prefer primary company: Enabled
Email domain: Enabled
Ignore free providers: Enabled
Collision Resolution:
Contact: Most recent (30-day window)
Company: Most recently modified
Should I enable phone matching if my data quality is poor?
If your phone numbers are inconsistently formatted or missing country codes:
Start with phone matching disabled
Clean up your data in both platforms
Enable phone matching once data quality improves
Poor phone data can cause false negatives (missed matches).
How can I improve match accuracy?
Clean your data: Remove duplicates in HubSpot
Standardize emails: Use proper email addresses, not aliases
Add country codes: Include country codes on phone numbers
Use External IDs: Implement a unique identifier across platforms
Regular audits: Review collision logs and resolve duplicates
Troubleshooting
Why aren't contacts matching when I know they exist in HubSpot?
Check these common issues:
Email mismatch: Verify emails are exactly the same (check for typos, extra spaces)
Normalization: Email normalization may be affecting the match (check your settings)
Strategy disabled: Ensure the appropriate matching strategy is enabled
Phone format: For phone matching, ensure country codes are present or default country is set correctly
A contact was created in HubSpot instead of matching an existing one
This means no match was found. Review:
Does the HubSpot contact actually have the same email/phone/external ID?
Are your matching strategies enabled and configured correctly?
Check the configuration snapshot in the captured conversation to see what matching settings were used
Can I force a rematch after updating my settings?
Yes. After updating matching configuration:
Use API Push to retrigger capture
The conversation will be rematched using your new settings
Based on "Same Conversation Policy", it will either update the existing note or create a new one