Synthetic Industry

Job crm-duplicate-contacts-from-web-forms · revised 11 October 2026

Stop web-form leads creating duplicate HubSpot contacts and companies

Synthetic submissions through one HubSpot form or API integration give the agreed counts: one contact for a repeat email, one company for two people at one domain, and no merging of different people.

You might be seeing

  • Two contact records exist for one email address or one person
  • Many company records share one domain name after leads came in through an integration
  • A contact's name or details were replaced by a different person's submission

No passwords, keys, card details or admin invites needed to start.

What usually happened

HubSpot matches form submissions to contacts by email address and companies by domain, but the route into HubSpot decides what really happens. A HubSpot form with no email field is matched by browser cookie, which can overwrite one person with another. Companies created through the API are not de-duplicated by domain. A form on your own page that HubSpot collects through its tracking code behaves differently again: HubSpot documents that all submissions from the same cookie are added to the same contact record, even with different email addresses, and says it cannot prevent this. The job covers the first two routes: it finds which one HubSpot form or API integration creates the duplicates and changes that path so repeat and shared-domain leads land where they should.

Who it’s for: A marketing or sales operations manager whose HubSpot database fills with duplicate contacts or companies, or whose contacts are overwritten, after leads arrive from web forms.

Usually starts when: The same person appears twice, several companies share one domain, or a new enquiry replaced another person's details on a shared computer.

The result: With synthetic submissions through the one agreed HubSpot form or integration, the same email submitted twice leaves one contact with both submissions recorded, two people at one domain leave two contacts and one company, and two different people on one browser stay two separate contacts.

Check whether this job fits

Answer these from your account without sending contact data or logins. Nothing is submitted unless you choose to contact us.

Can you name the one form or integration through which most duplicates arrive?
Does the form collect an email address?
Do the duplicates appear on records that have no Salesforce counterpart?
Can synthetic test contacts be created without messaging anyone real?

Answer the questions to see whether this job fits.

Nothing is sent anywhere until you choose to email us.

Send an enquiry about this outcome

Checks you can run yourself

  1. Check how the form matches

    Open the form's options and read the setting about creating contacts from unknown email addresses, and note whether an email field is present. Change nothing.

    Look for: Whether the setting is on, whether there is an email field, whether the form is a HubSpot form or a page of your own that HubSpot collects, and what the contact's original source says.

What you get

  • A short written diagnosis naming the cause on that form path
  • The changed form setting, integration step or workflow, with change notes and how to reverse them
  • Before and after contact and company counts for the six synthetic submissions
  • A list of other form paths in the account that were not examined and may behave differently

Included

  • One form path: either one HubSpot form, or one integration that creates contacts and companies through HubSpot's API
  • Diagnose from the form settings, the integration's steps and a few redacted examples why that path produces duplicates
  • Change the form setting, the integration step or the matching rule on that path so contacts match on email and companies on domain as agreed
  • Run six synthetic submissions (two for each of three checks) in your HubSpot account, or a test account if you have one, and record the contact and company counts after each

Not included

  • A form on your own page that HubSpot collects through its tracking code: HubSpot documents that all submissions from one cookie go to one contact even with different emails, so this job cannot promise separate contacts there. Moving that form to a HubSpot form or sending submissions through HubSpot's Forms API is a separate quote
  • Merging or deleting existing duplicate contacts or companies: HubSpot documents that merged contacts cannot be unmerged, so this is a separate job needing your approval of the matching rule
  • More than one form path, or any redesign of your lead process
  • Data-protection, consent or marketing-permission advice
  • Duplicates created by the Salesforce sync, which follow different rules and need their own diagnosis
  • Real contacts or any email, task or notification sent to real people during testing

How we know it’s done

Agreed with you before work starts. Each check produces evidence you keep.

  1. Submitting the same synthetic email address twice through the agreed path leaves exactly one contact, and both submissions appear in its history.

    Evidence: Contact count for that address and the contact's form submission history.

  2. Submitting two different synthetic email addresses at one synthetic company domain leaves two contacts associated with exactly one company.

    Evidence: Contact and company counts and the company association shown on each contact.

  3. Submitting two different synthetic people from one browser leaves two separate contacts, neither overwritten by the other.

    Evidence: Both contacts' names and emails after the second submission.

  4. The change notes list each changed setting or step with its previous value, and no real contact was merged, deleted or messaged during testing.

    Evidence: The change notes and the redacted activity list for the test contacts.

Sign-off. You inspect the counts and the change notes, then sign off before payment. You delete the test contacts and check one genuine submission under your own account.

If it fails. If the agreed tests do not pass, you do not pay for this fixed scope. We hand over what we found and agree whether to stop or re-quote; no surprise work.

When it fits, and when we stop

It fits when

  • You can edit the form, workflow or integration on the named path in your HubSpot account
  • The six tests create synthetic contacts and companies in your live HubSpot account, where any live workflow, list or integration could react to them; you can switch off or filter those first, or you have a test account, and you delete the test records afterwards
  • The form path collects an email address, or you accept that the fix may be to add one

We stop and tell you if

  • The duplicates come from the Salesforce integration, an import or manual entry rather than a web-form path
  • The path is a form on your own page collected through the tracking code, which this fixed job does not cover
  • Several form paths and integrations each create duplicates and no single path can be named
  • Test contacts would trigger real emails, calls or tasks that cannot be switched off

What could go wrong

Each changed setting, step or rule is recorded with its previous value in the change notes, so your administrator can restore it. Nothing is merged or deleted in your real data by us, so no record needs to be recovered.

Scroll the table sideways to read it all.

RiskHow we handle it
A test contact is merged with, or overwrites, a real contact, or triggers a live workflow because the tests run in your live account.Use synthetic addresses that match no real contact and check each against the database before submitting. Switch off or filter any workflow, list, sequence or integration that reacts to a new contact before the first test.
Changing how matching works stops legitimate shared-device submissions being recorded separately.Test two different people on one browser and show that both remain separate contacts.
The fix on one path leaves other form paths still creating duplicates.State in the handover that only the named path was changed and list the others that were not examined.

An independent reviewer checks the redacted before and after evidence, that every test used synthetic data, that nothing outside the agreed scope changed, and whether your authorised owner can safely reverse the change.

How we deliver

We arrange the work and independent review, then show you the result against the agreed checks. You keep authority over your systems.

  • Agree the one form path, the matching rule you want and how test contacts will be kept from triggering real messages
  • Read the path's configuration and the redacted examples, then reproduce the duplicate with synthetic submissions after the test contacts are kept from triggering real messages
  • Identify the cause: missing email field, cookie matching, the create-contacts-from-unknown-emails setting, or an integration step that creates records without matching. If the path turns out to be a collected external form, stop and quote separately
  • Change that path with the smallest change, keeping a note of the previous setting
  • Run the six synthetic submissions, recording contact and company counts and the submission history after each
  • Independent review of the changes and of what a real visitor could now see or overwrite; hand over the notes; you delete the test contacts

This is a one-off job, not emergency cover or a subscription. We confirm eligibility, the total price, a start window and a delivery date before you accept. Work starts only after agreed inputs, secure access, any licences and necessary permissions are in place. Platform, hosting and supplier charges are excluded unless the written quote includes them. No charge or booking is created by an enquiry.

Need to keep it working?

If duplicates keep returning, discuss keeping new web leads checked as a separate recurring service.

Ongoing work is separately scoped and quoted: no monitoring, response-time guarantee or automatic subscription is included in this job.

Explore an ongoing engineering lane, or mention the responsibility you need in your enquiry.

What you can check

This is a new service. We have not delivered this job for a client yet.

Other ways to get this done

  • HubSpot's own article on deduplicating records explains how contacts and companies are matched and how form submissions behave. A HubSpot administrator may find the cause from it. knowledge.hubspot.com
  • HubSpot's article on non-HubSpot forms explains which external forms it can collect, the same-cookie behaviour, and when to use the Forms API instead. knowledge.hubspot.com

Questions

Will you merge my existing duplicates?

No. HubSpot says merges cannot be undone, so merging needs a separate agreed scope with your sign-off on which record wins. This job stops new duplicates on one path.

Is this about the Salesforce sync?

No. Duplicates arriving through the Salesforce sync follow Salesforce matching rules and HubSpot's sync error list. This job covers one web-form path.

Do you need real contacts to test?

No. We use synthetic addresses that match nothing in your database. The test contacts are created in your account, or a test account if you have one, so any workflow that reacts to a new contact has to be switched off or filtered first, and you delete the test records afterwards.

Does this cover a form on my own website that is not a HubSpot form?

Not when HubSpot collects it through its tracking code. HubSpot documents that every submission from one browser then goes to one contact, so the separate-contacts test could not be met. Moving that form to a HubSpot form or the Forms API is a separate quote.

Send an enquiry

Send us

  • How the lead reaches HubSpot: a HubSpot form or an integration, and its name
  • Two redacted examples of the duplicate with created dates and the source shown on each
  • Whether the form has an email field, and whether the setting that creates contacts from unknown email addresses is on
  • Do not send contact lists, exports, passwords or an account invitation in the first enquiry

Later, once you agree

  • A HubSpot user invitation with only the permissions the named path needs, which you create and can revoke, or a screen-sharing session you run
  • Permission to create and delete synthetic contacts, and a note of workflows to disable for the test
  • A company-controlled secure handoff agreed before any access

You keep the live accounts, production keys and customer records. A live form path has no copy, so we work on the named path under permissions you grant and can revoke, with synthetic submissions only, through a company-controlled handoff agreed before any access; the synthetic contacts are created in your account, or a test account if you have one, and you delete them afterwards. A person owns Synthetic Industry and remains accountable. Your authorised account holder approves any change to the live path.

A public HTTPS link only, without login details, query strings or fragments. No code or logs.

Sending emails your enquiry and contact address to our team through our mail provider (Resend). It is not kept in a website database. Do not send passwords, keys, recovery links, confidential code or customer records. Your contact email is unverified; nothing is ordered, charged or reserved. Privacy notice.

Email fallback: open your mail app

If website submission is unavailable, review and send the fallback email yourself. An email fallback is not a website receipt. Or write to hello@syntheticindustry.ai with “crm-duplicate-contacts-from-web-forms” as the subject.