Your HubSpot form fills up, but which ads bring clients you'd actually call back?
Google Ads and Meta both report leads from your HubSpot form, yet many of those fills are job seekers, vendor pitches and spam, and nobody can say which campaign sent the contract you signed. HubSpot's own ad conversion events and a tag added in GTM can both claim the same fill, and the deal amount never makes it back to bidding. Fixed means one conversion per genuine submission, a click ID you can see on every ad lead, and qualified stages and won deals sent back to Google and Meta.
Free30 minutesNo obligation
HubSpot Forms · what breaks
What goes wrong with HubSpot Forms and your ads
- 01
Every submission counts as a lead, even the junk
Supplier pitches, job applications and existing customers asking for service fire the same HubSpot submission conversion, so Google's bidding learns to buy more of them with your budget.
- 02
Meta and Google show more leads than HubSpot has
HubSpot can send form events to Meta through the Conversions API and to Google through Enhanced Conversions. Leave a hand-added Pixel or a GTM conversion tag on the same form and one fill gets counted twice, so you pay for leads that were never there. HubSpot itself warns that a manually installed Pixel next to its own causes duplicate events.
- 03
You can't tell which ad a contact came from
HubSpot says it sets the Google ad click ID property automatically, but if that field is empty on your ad leads, a signed deal can't be matched to the click that paid for it. Every offline upload and lifecycle sync then rests on email and phone alone.
- 04
Big jobs and small inquiries look identical
A commercial roofing bid and a gutter question both report as one fill. HubSpot's lifecycle events for Google carry one fixed value and its deal amount option is gone, so the campaign winning contracts looks no better than the one bringing price shoppers.
HubSpot Forms · the fix
What changes after the fix — HubSpot Forms
One conversion per genuine HubSpot submission
For each ad platform, either HubSpot's native conversion event or your GTM container reports the fill, never both, and spam, vendors and job seekers never reach the qualified-lead conversion.
Bidding trained on qualified contacts
SQL and opportunity stages reach Google through HubSpot's sync or our server container, and reach Meta through our server container, since HubSpot's own Meta lifecycle sync covers only lead ad contacts.
Signed work tied to the ad that started it
Closed-won deals go to Google and Meta with their real amount, matched on the stored click ID or hashed email and phone, from your HubSpot records through a first-party server container.
HubSpot Forms · architecture
The hooks HubSpot Forms gives us to work with
Everything here comes from HubSpot's knowledge base and developer docs. Where they're silent, we test on your account.
- 1
Global form events in the browser
Forms from HubSpot's updated editor emit events such as hs-form-event:on-submission:success. Legacy forms send hsFormCallback messages instead, so a GTM trigger built for one won't fire on the other.
- 2
Click ID properties and hidden fields
HubSpot documents that it sets its Google ad click ID and Facebook click ID properties automatically. Hidden fields also fill from a URL query string named after the property, which is our backup for gclid and UTMs when the native property is empty.
- 3
Native ad conversion events
On Marketing Hub Starter and up, form submissions and lifecycle changes sync to Google through Enhanced Conversions and to Meta through the Conversions API. Only HubSpot-built forms qualify, and Google won't sync form data for MCC-managed accounts.
- 4
Workflow webhooks
A workflow can post contact data out on a stage change, our trigger for server-side deal events. HubSpot lists webhooks under Data Hub Professional and Enterprise, so we confirm your plan.
- 5
Tracking code and allowed domains
Submissions from domains missing in your tracking settings are marked as spam, and the non-HubSpot forms tool skips hidden fields and anything inside an iframe.
HubSpot Forms · diagnose
Where HubSpot Forms tracking breaks, checked in this order
On a HubSpot form the usual fault is a lead counted twice or credited to nobody, so we start with ownership.
- 01
Count conversions fired by one test submission
Send one test fill from a gclid-tagged URL with Tag Assistant and Meta's test events open side by side.
- 02
Check which editor built each form
Updated and legacy forms emit different events, so a migrated form quietly breaks old triggers.
- 03
Open the new contact and look for the click ID
If the Google ad click ID property is empty after an ad-tagged test, HubSpot's Google sync and any offline upload can only match on contact data.
- 04
Review HubSpot's ad conversion events
Which forms and stages sync to which conversion actions, and whether Google sits under a manager account.
- 05
Check that your website domain is in HubSpot's tracking settings
HubSpot marks embedded-form submissions from unlisted domains as spam, so real leads can sit in the wrong view.
- 06
Compare qualified contacts with what Meta receives
Per HubSpot, Meta only takes lifecycle data from lead generation campaign contacts, so website-form leads need another route.
HubSpot Forms · prove
How we prove the HubSpot fix works
Every check uses a live submission on the page where your HubSpot form is embedded, never the form editor's preview mode.
Source of truth
HubSpot form submissions and contact records, with lifecycle stage, stored click IDs and associated deal amounts
- One submission from a gclid-tagged URL, with the click ID visible on the HubSpot contact.
- Exactly one conversion per submission in Google Ads and Meta Events Manager, with matching event IDs.
- Spam and job-seeker tests that reach HubSpot but never count as qualified leads.
- A lifecycle change to SQL showing up against the right conversion action.
- A closed-won deal arriving with its real amount.
- Qualified contacts reconciled one by one against each platform over a closed window.
- Run again after 30 days, and again whenever a form moves from the legacy editor to the updated one.
HubSpot Forms · free audit
What we check in the free audit
- Count conversions fired by one test submission
- Check which editor built each form
- Open the new contact and look for the click ID
- Review HubSpot's ad conversion events
- Check that your website domain is in HubSpot's tracking settings
- Compare qualified contacts with what Meta receives
Checked against
HubSpot form submissions and contact records, with lifecycle stage, stored click IDs and associated deal amounts
Free30 minutesNo obligation
HubSpot Forms · when not to buy
When you don't need us for HubSpot Forms
Some HubSpot setups need only a settings review, and we'll say so.
- If HubSpot's native Google or Meta events are the only thing reporting your form and their counts track your real submissions, there's nothing for us to fix.
- If most of your leads phone in rather than fill the form, fix call tracking first; the form isn't where the money is.
- If you run only Meta lead generation campaigns synced into HubSpot, the website form plays a small role and HubSpot's lifecycle sync may be enough.
- If a hand-added Pixel sitting next to HubSpot's connected one is the whole problem, HubSpot's own advice is to delete the manual code, and you can do that today without us.
HubSpot Forms · what we deliver
What we track from each HubSpot form
Form rendered
From HubSpot's ready event. Used for diagnostics, never as a conversion.
Form submitted successfully
Fired on HubSpot's success event, not a button click, with one event ID shared by the browser and server copies.
Contact qualified
Lifecycle stage moving to lead, MQL or SQL. Spam, job seekers, vendors and current customers are filtered out first.
Estimate or site visit booked
The opportunity stage or a new pipeline deal, the main bidding signal for long sales cycles.
Deal won
Closed-won with the real amount, matched on the stored gclid or hashed email and phone.
Resubmissions and returning clients
Kept in HubSpot and excluded from acquisition conversions.
Written guarantee
95%+ tracking accuracy
Measured against HubSpot form submissions and contact records, with lifecycle stage, stored click IDs and associated deal amounts. Miss it and we keep working at no cost.
From $400 · See packages
FAQ
HubSpot Forms questions, answered
Yes. With a Marketing Hub subscription, HubSpot can create form submission and lifecycle stage conversion events that sync through Enhanced Conversions. It covers HubSpot-built forms only, and form data won't sync if the Google account is managed under a manager account.
Usually two senders: HubSpot's Conversions API event plus a Pixel added separately in GTM. HubSpot itself advises removing hand-added Pixel code once its own Pixel connection is on.
Listen for HubSpot's form events, not button clicks or a thank-you URL. Updated-editor forms fire hs-form-event:on-submission:success; legacy forms send hsFormCallback messages.
HubSpot says its Google ad click ID property is set automatically from the gclid. We confirm it's actually filled on your ad leads, and add a hidden field plus a small script as a backup where it isn't.
Lifecycle stages sync natively at a fixed value. HubSpot says the deal amount option is gone, so real values need a workflow and an offline conversion upload, which we build server-side.
No. HubSpot's non-HubSpot forms tool ignores hidden fields and forms inside an iframe, and its Meta sync accepts only HubSpot forms.
Free · 30 min
Find out which HubSpot form fills your ads really paid for
Free30 minutesNo obligation
