We have two Hubspot forms - a “Contact Us” form and a “Newsletter Subscription” form. I followed the instructions on this website to be able to track the submissions in Google Analytics. Now I’m trying to create a conversion in Google Ads so that I can add a Conversion Goal for form submissions from the Contacts Us form and a separate Conversion Goal for form submissions from the Newsletter Subscription form. I am using Google Tag Manager to do this. I already have the Google Conversion Linker in GTM, but am struggling to setup these Conversion Goals for each form. Can anyone provide any help?
Hi @GKiefer and welcome to the Community!
We are so glad to have you here!
Great question, thanks for asking the Community!
I’d like to share this article “Create and sync ad conversion events with your Google Ads account” that might be of interest.
Also, these similar threads might help you:
- The solution from @herodotuseduc on this post “Best way to track conversions in Google Ads”
- The solution from my colleague Diana on this post “How to keep track of conversions/contacts that call via Google Ads, within Hubspot? (#adcalls)”
I also wanted to invite a couple of subject matter experts to this conversation: Hi @Jonno_Price, @Bryantworks and @Alex_Elborn do you have other suggestions to help @GKiefer, please?
Thank you very much and have a lovely day!
Best,
Bérangère
The reason this feels harder than it should is that HubSpot forms don’t give GTM a plain “form submitted” event to hook into, especially if the form is embedded rather than on a native HubSpot page. HubSpot instead pushes a message to the page when a form submits, so you need a GTM tag that listens for that message event, then reads the form ID or form name out of it so you can tell your two forms apart.
Once you’ve got that, you’d set up a separate GTM trigger for each form (one filtered to the Contact Us form ID, one for Newsletter) and fire a distinct Google Ads conversion tag off each one. That part is straightforward in theory. The annoying bit is confirming the message payload actually contains the form identifier you expect, since HubSpot’s structure has changed over the years depending on how the form is embedded. I’d open GTM’s preview mode and submit each form to see exactly what’s in that dataLayer push before building the triggers, rather than guessing at the field names.
That will get you working conversions, but it’s worth knowing that a bare “a form was submitted” event isn’t really enough for Google Ads these days. To get the most out of it you want to be doing enhanced conversions, which means extracting the name, email and phone number from the submission and sending those to Google, ideally along with the Google click ID, IP address and user agent. That data is what gives Google a high match rate and the best signal to optimise your campaigns.
There are no-code tools that handle all of this for you. Converly.io (I’m the founder) is one of them. It works a lot like HubSpot workflows but for conversion tracking: you pick a trigger (like your Contact Us form being submitted) and an action (like sending a conversion to Google Ads). It listens for the submission, captures the name, email, phone, click ID, IP and user agent, and sends the whole lot server-side to Google Ads. Because it’s server-side, ad blockers and the privacy restrictions in iOS and Safari can’t get in the way, so you end up with a much more reliable setup that gives Google the data it actually needs.
Note: I used AI to help put this response together because it’s a better writer than I am, but I gave it the initial information and I reviewed and edited it myself before posting.
Hey @azisbak, thanks for your contribution on the HubSpot Community!
I’d like to clarify a few points from what you shared, for our Community Members. You indicated the following:
-
“HubSpot instead pushes a message to the page when a form submits, so you need a GTM tag that listens for that message event”: For new forms, HubSpot emits named DOM events like hs-form-event:on-submission:success via window.addEventListener, not a generic message event. The message event pattern (hsFormCallback/onFormSubmitted) only applies to legacy forms.
-
“reads the form ID or form name out of it”: For new forms, formId is available directly in event.detail, or via HubSpotFormsV4.getFormFromEvent(event).getFormId(), not extracted from a raw message payload.
Also, thank you for sharing this integration with the HubSpot Community, it’s always exciting to see new solutions!
Is your app currently listed on the HubSpot Marketplace? If so, please feel free to share the link here so others can check it out.
If not, here’s a guide on how you can add your app to the HubSpot Marketplace.
Thank you and I hope it helps clarify!
Bérangère
This post was created with the assistance of AI tools