A web lead passes four stages
A lead reaches a salesperson by way of four stages: capture, when the form or integration creates or updates a contact and company; matching, when HubSpot decides whether this is someone it already knows; ownership, when a workflow assigns an owner; and sync, when mapped fields cross to Salesforce. Each stage can be correct alone and still lose or duplicate the lead in combination, which is why problems tend to appear in pairs.
How HubSpot decides who is who
HubSpot matches contacts by email and companies by domain. Which route a lead takes matters. A form with no email field is matched by browser cookie. A form on your own site that HubSpot collects through its tracking code depends on that code loading, and for such a collected external form HubSpot adds all submissions from one browser to one contact, even with different email addresses. Companies created through the API are not de-duplicated by domain. Merged contacts cannot be unmerged, so merging is not a safe way to find out how a form behaves.
Owners and sync have their own rules
Rotate-to-owner needs a Professional or Enterprise subscription. For contact records and most other types it spreads records by per-action counts that reset when owners change, skips deactivated users and can leave records unassigned. For leads in HubSpot's separate Leads tool (marked BETA) and for tickets, HubSpot describes other distribution options and an Away setting instead, and says the reset rules do not apply. If the owner also syncs to Salesforce, HubSpot warns that Salesforce may put the previous owner back. Mapped Salesforce fields each have a sync rule that decides which system wins, so a value that keeps reverting is often the rule doing its job. First syncs, picklist mismatches and field permissions explain much of the rest.
Choose the outcome that matches the symptom
Duplicate contacts or companies from a web form: the outcome that changes one HubSpot form or API integration path. Leads with no owner or the wrong owner: the outcome that rebuilds one contact-based assignment workflow from your rule table. One field changes back or never arrives: the outcome for one mapped field pair. Several of these at once: the project that tests up to three form paths end to end. Keeping it true afterwards: the standing weekly check. We use synthetic leads and ask for no contact lists, exports or passwords in a first enquiry.
Sources and limits
- HubSpot: deduplicate records Checked 2026-10-11.
- Contacts are de-duplicated by email and companies by domain, and companies created through the API are not de-duplicated by domain.
- HubSpot: use non-HubSpot forms Checked 2026-10-11.
- For non-HubSpot (collected external) forms, all submissions associated with the same cookie are added to the same contact record, even with different email addresses, and the HubSpot tracking code must load for a submission to be collected.
- HubSpot: how HubSpot tracks visitors Checked 2026-10-11.
- A form with no email field identifies submissions by browser cookie, and this cannot be changed.
- HubSpot: assign and rotate record owners using workflows Checked 2026-10-11.
- The rotate-to-owner action needs a Sales Hub or Service Hub Professional or Enterprise subscription; for most record types its assignment counts reset when owners are added or removed, but the page says this does not apply to lead-based or ticket-based workflows; and records can be left unassigned.
- HubSpot: map properties to Salesforce fields Checked 2026-10-11.
- Mapped fields use one of four sync rules, and the first sync for a contact with no history uses the current Salesforce value as the baseline.