Hi all,
I’m dealing with a data quality issue with HubSPot’s auto conatct - company association by domain.
Our business (travel agency), one agency network can contain many independent agencies/branches. They are sepereate companies in our CRM but often share the same domain.
For example:
ABC Travel Network
→ ABC Travel Paris
→ ABC Travel Lyon
→ ABC Travel Nice
=> all use domain: @abctravel.com
HubSpot can associate contacts with the wrong company, which affects our company, deal, and activity data.
Do you have any recommend for this issue?
- Should we turn off the automatic associate? (it will cause a lot of workload to do manually btw)
- Or is there a way to use the domain together with additional criteria (e.g. company name, location, network, or ID) to determine the correct company?
- Any best practices for managing this type of structure?
Thank you in advance!
Best,
HA.
Hi @Honganh,
For the default setting, no, there aren’t any additional ways to configure this to respect rules.
However, you can turn the default setting off, then use workflow to establish associations. There is a workflow action “Create association”. This currently requires there to be a matching single-line text value between the company and the contact record. You could use “Company domain name” and “Email domain” but that would result in the exact same situation as the system setting.
Alternatively, you could match on company name - if the company name is also captured on the contact record. Data quality is the most obvious issue, if someone enters “ABC Travel Paris, France” instead of “ABC Travel Paris”.
Best regards
Another workaround could be to create a calculated matching key on both the Contact and Company, for example Company Name + Location, and use that value for the workflow association.
If that property is generated automatically from controlled fields and is read only, it should be much more consistent than relying on users to type the value manually.
For example:
ABC Travel + Paris → ABC Travel|Paris
If the same calculated value exists on both the Contact and Company, you could turn off the default domain based association and use the workflow Create association action to match on that property instead.
I would be better to have a true branch or agency ID if one exists, since that is a stronger unique identifier. But if there is no ID available, a system generated Company Name + Location key could be a practical workaround.
Domain-only matching is never going to work reliably for a network structure like ABC Travel Paris/Lyon/Nice sharing @abctravel.com.
HubSpot’s native auto-associate logic doesn’t support secondary criteria like location or branch ID, so it’ll keep guessing wrong. I’d turn off auto-associate for that domain (or globally, depending on how much of your book looks like this) and replace it with a controlled matching process: build a lookup table (Google Sheet or HubDB) keyed on domain + a secondary signal like branch name in the email signature, form field for location, phone area code, whatever you can reliably capture at intake, mapped to the correct Company record ID. Then run that match in a workflow or through Zapier/Make instead of relying on HubSpot’s native logic, and write the associated Company back to the contact.
The manual workload concern is real, but it’s front-loaded: once the lookup table exists, new contacts route automatically, you’re just maintaining the table when a new branch gets added. Worth also asking your reps to capture branch/location at the point of contact creation if it isn’t already a required field. That’s the piece that will make the matching logic actually work long-term.
We’ve done this exact method and it works well.
Hi @Honganh, I hope that you are well!
Thanks so much for reaching out to the HubSpot Community! And thanks to @karstenkoehler and @FYossef for your valuable contributions! 
HubSpot’s automatic association only matches contacts to companies by email domain and doesn’t allow using extra criteria like company name or location.
For shared domains, it’s best to exclude those domains from automatic association (instead of turning it off globally) and then manually associate contacts with the correct company.
You can do this by collecting branch-specific info (like branch ID or location) through forms, and using unique identifiers or HubSpot Record ID via imports, workflows, or automation to ensure accurate associations.
Also, I’ve found these similar topics that might give you some ideas:
Let us know if you have additional questions!
Thanks and have a wonderful day!
Bérangère
You may also want to consider adding the parent/ child relationship with your various companies to help with easier differentiation between them: Add a parent or child company to an existing company record It ensures there is a clear hierarchy for you in how the companies are set up. This won’t solve the auto association issue, but I think it would be good for you to take advantage of for other reasons based on your described situation!
Hi @karstenkoehler Thank you for the suggest. The lookup table approach makes sense, especially when multiple companies or branches share the same domain.
Since you mentioned that you’ve implemented this method before, could you share a bit more about how you set it up in practice?
In particular, I’d like to understand:
- What secondary signal did you use alongside the domain, and what happens if that information is missing or unclear?
- Once the correct Company is identified, how is the Contact–Company association created automatically?
- I haven’t worked with HubDB, Make, or Zapier before, so would it be possible to implement this directly within HubSpot? If not, which approach would you recommend as the simplest one to start with?
If possible, an example of the setup or workflow you used would be very helpful for me to understand how we could apply the same approach.
Thank you again for your advice.
Best,
Hong Anh
@Honganh I’m referring to this workflow action: Create and use association labels - it’s explained a bit below the anchor, under “Actions”. No need for third party tools 
To your questions:
- Missing or unclear information isn’t handled at all - the workflow action relies on exactly matching property values.
- See above, via the workflow action
- No need to

Best regards
Thank you for your advise, I will take note it.
@Honganh
There is currently no native HubSpot solution that allows automatic contact-to-company association to evaluate multiple criteria such as email domain + company name + location + network. HubSpot’s native logic is domain-based, and when multiple companies share the same domain, it cannot be configured to select the correct company.
There is currently no native HubSpot solution that allows automatic contact-to-company association to evaluate multiple criteria such as email domain + company name + location + network. HubSpot’s native logic is domain-based, and when multiple companies share the same domain, it cannot be configured to select the correct company.
Some practical ways to manage this are:
- Custom-coded workflow action: If you have Data Hub Professional or Enterprise, a Custom code workflow action can apply your own matching logic, look up the correct company, and create the association through the CRM Associations API. This is the most reliable automated option when you have a stable company or branch identifier.
- Strict naming convention: Establish and document a required company-name format for both reps and incoming data. A standard Workflows association action can match property values, including company name, but the values must match exactly and are case-sensitive. Therefore, naming standards can work as an interim solution, but they are more fragile than using a unique ID.
- Custom agents: If available in your portal, Agent Hub can run custom agents from agentic workflows. The agent can return structured output, which can then be used to update a CRM property or trigger a later association step. This is feasible, but because it is AI-based, I would use it to standardize or classify data—not as the final source of truth for company identity. Agentic workflow actions may also consume HubSpot Credits, and the Run Agent action currently has a 500-execution-per-day limit.
- Smart Properties: Smart Properties can generate a standardized helper value from existing record data, but filling them consumes HubSpot Credits, even when a value is not produced. The generated value can then be copied into another property through a workflow. I would use this as a normalization or enrichment step, followed by deterministic matching, rather than relying on it alone for association decisions. Smart Properties also cannot use unique-value validation rules.
- Keep global automatic association enabled initially: Do not necessarily disable it globally. Instead, keep it active for domains that uniquely identify a company and exclude shared network domains from Automatically associate companies with contacts. This preserves automation for clean domains while preventing ambiguous shared domains from creating incorrect associations. HubSpot supports up to 1,000 excluded domains. Note that form submissions containing company properties can still force an association, so those forms should also be reviewed.
Recommended approach: Use a stable branch/company ID as the long-term matching key, exclude shared network domains, enforce a strict naming convention immediately, and then automate the lookup and association through Custom code or a controlled integration. Custom agents and Smart Properties can help normalize the input, but the final association should be based on a deterministic identifier rather than an AI-generated or user-entered company name
Please do you know how I can get a domain for my business?