Found in AI answers?Hire Theory Road
Theory Road.

HubSpot Form Conversions Not in Google Ads? The Fix Order.

A HubSpot form can fill the CRM with paid leads while Google Ads records none, and bidding quietly learns from the wrong signal. This is the order we use to find the break and wire the form to Google Ads properly.

By October 18, 202610 min read

When HubSpot form submissions are not showing up as conversions in Google Ads, the cause is almost always one of six things: the form shows an inline thank-you message but the Google Ads conversion tag only fires on a thank-you page URL, Google Tag Manager is listening for a generic form submit that HubSpot's JavaScript form never produces, the tag listens for the wrong HubSpot event for the form's editor version, the only lead conversion in the account is a GA4 import, a HubSpot pop-up or other overlay is stopping people from submitting, or the Conversion Linker and consent setup drop the click ID. You fix it by firing the Google Ads conversion tag from HubSpot's own submission event through a Tag Manager custom event, passing the email and phone for enhanced conversions, then confirming the hit in Tag Assistant.

A HubSpot form is a JavaScript form. Embed code (or a HubSpot page module) loads HubSpot's forms script, which renders the form. When a visitor submits, the script posts the data to HubSpot, then does whatever the form's post-submit setting says: show a thank-you message in place of the form, or redirect to a page or URL. Google Ads only learns about the lead if a Google Ads Conversion Tracking tag (or the Google tag with a conversion event) fires in the browser after that submission, carrying the gclid that the Conversion Linker stored when the visitor clicked the ad. HubSpot announces the submission in the browser as an event: hs-form-event:on-submission:success for forms built in the updated forms editor, and a message event with type hsFormCallback and event name onFormSubmitted for legacy forms.

The six causes we find most often.

We hit the first one on an account we took over: the main paid landing page's HubSpot form showed an inline thank-you message, the Google Ads tag fired only on thank-you URLs, and the account recorded zero direct form conversions. Bidding was learning only from a GA4 form_submit import.

  • Inline thank-you message with a page view trigger: the form is set to Show thank you message, so the URL never changes, and a trigger built on Page URL contains thank-you never matches
  • Generic Form Submission trigger: Tag Manager's built-in Form Submission trigger listens for a browser submit event, and HubSpot's script handles the submit itself, so in our audits that trigger is unreliable or silent on HubSpot forms
  • Wrong HubSpot event for the editor version: the global form events for the updated forms editor do not apply to legacy forms, and the legacy hsFormCallback messages do not apply to updated editor forms, so a listener written for one is silent on the other
  • GA4 import as the only lead signal: a GA4 key event such as form_submit is imported into Google Ads as the primary conversion, and form_submit fires for any form GA4 detects, including newsletter and search forms
  • Overlay covering the form: a HubSpot pop-up CTA or chat window sits over the form on desktop, so fewer people submit and the drop looks like a tracking failure
  • Click ID dropped: no Conversion Linker tag, or a consent setup that blocks ad storage, so the conversion fires but cannot be tied to the ad click

How to verify what actually fires.

Three checks, in this order.

HubSpot form settings. Open the form in HubSpot. In the updated forms editor, select On submit, then the Options tab, and note whether it says Show thank you message or Redirect to a page, URL, Meeting, or Payment link. Note also whether it was built in the updated or the legacy editor, because that decides which event you listen for.

Tag Manager preview and Tag Assistant. In Google Tag Manager click Preview, enter the landing page URL, and submit a test lead. In the Tag Assistant event timeline you want a custom event (we name it hubspot_form_success) right after the submit, with the Google Ads conversion tag under Tags Fired. If only clicks and timers appear, nothing is listening to HubSpot.

Google Ads conversion status. In Google Ads, open Goals, then Conversions, then Summary, and read the status column for the form conversion action. Google's help center describes No recent conversions as no conversions recorded in the last 7 days, and Tag inactive as the tag no longer being seen with no conversions in the last 7 days.

Diagnose top to bottom.

Stop at the first layer that fails.

Read the form's post-submit setting.
If it shows a thank-you message, any trigger based on a thank-you page URL is dead on that form. Either switch the form to a redirect (then a page view trigger on the confirmation URL works) or keep the inline message and fire from HubSpot's event. We prefer the event: it survives someone flipping the setting later and hands you the field values for enhanced conversions.
Identify the editor version.
Updated editor forms emit hs-form-event:on-submission:success on the window. HubSpot documents that this only covers forms built in the updated editor. Legacy forms post a message event with event.data.type equal to hsFormCallback and event.data.eventName equal to onFormSubmitted, which HubSpot describes as firing after the submission has persisted. Do not use the legacy onFormSubmit event: HubSpot marks it deprecated and points to onBeforeFormSubmit, which fires before the submission is saved and so counts failed submits.
Add one listener that pushes to the data layer.
In a Custom HTML tag that fires on all pages (or in the site code), listen for both events and push one data layer event, for example dataLayer.push({event: 'hubspot_form_success', hs_form_id: ...}). For updated editor forms, HubSpot's HubSpotFormsV4.getFormFromEvent(event) returns the form instance, and its getFormFieldValues() method returns the submitted fields. For legacy forms, the onFormSubmitted message carries submissionValues. Include the form ID so newsletter forms can be excluded.
Trigger the Google Ads tag on the custom event.
Create a Custom Event trigger with the event name hubspot_form_success, add a condition on the form ID if more than one HubSpot form lives on the site, and attach it to the Google Ads Conversion Tracking tag for the lead conversion action. Remove the old thank-you URL trigger so nothing double counts.
Pass email and phone for enhanced conversions.
Turn on enhanced conversions in Google Ads under Goals, then Conversions, then Settings. Google combined enhanced conversions for web and for leads into a single on/off setting in June 2026. In Tag Manager, build a User-Provided Data variable using the code method, mapped to the email and phone values your listener pushed, and attach it to the conversion tag. Google lists email as the preferred field and requires at least one of email, phone, or full address. The same hashed email lets later uploads of qualified leads match back to the click; see Google Ads offline conversions from your CRM.
Fix the goal settings.
Make the new Google Ads tag conversion the primary action for leads and set the GA4 form_submit import to secondary, so bidding optimizes on the precise signal and the two are not counted together. We explain the mechanics in primary vs biddable conversion goals.
Check the page as a visitor would see it.
Load the landing page on desktop and on a phone with a clean browser. If a HubSpot pop-up CTA or chat widget covers the form, change the CTA's targeting so it does not show on paid landing pages. HubSpot CTA targeting offers Website URL and Query parameter rules, plus Device type on Professional and Enterprise plans.
HubSpot form conversions in Google Ads: symptom, cause, fix
SymptomLikely causeFix
Zero form conversions, leads arriving in HubSpotInline thank-you message, tag triggers on thank-you URLFire the tag from HubSpot's submission event via a Custom Event trigger
Tag Assistant shows no event after submitNo listener, or listener for the wrong editor versionListen for hs-form-event:on-submission:success and the legacy hsFormCallback onFormSubmitted
Conversions counted when submits fail validationTag fires on onBeforeFormSubmit, deprecated onFormSubmit, or a button clickFire only on the success event or onFormSubmitted
Conversions roughly double after the fixOld URL trigger and new event trigger both on the tag, or GA4 import still primaryKeep one trigger; set the GA4 import to secondary
Newsletter signups counted as leadsListener or GA4 form_submit covers every formFilter the trigger on the lead form's ID
Conversions recorded, enhanced conversions not matchingNo user-provided data on the tag, or customer data terms not acceptedAdd a User-Provided Data variable with email and phone; accept the terms
Lead volume fell on desktop onlyHubSpot pop-up or chat covering the formExclude paid landing pages in the CTA's Website URL targeting
Status stuck at UnverifiedTag not published, or Conversion Linker missingPublish the container; add a Conversion Linker tag on all pages
HubSpot Paid Search revenue far above Google AdsUTM-tagged Google Business Profile link classified as Paid SearchRemove UTMs from the profile link or report paid by gclid and campaign

Redirect vs inline thank-you message.

Both work if the trigger matches the setting. A redirect lets you use a simple page view trigger on the confirmation URL and gives GA4 a clean page to report on, but anyone who reloads or bookmarks the thank-you page fires the conversion again unless you count one conversion per click in the conversion action settings. An inline message keeps the visitor on the landing page and never produces a page view, so it requires the event approach. HubSpot also warns against redirecting inside the onFormSubmitted embed callback, since it can prevent the submission.

Embedded vs raw HTML forms.

Embedded forms use HubSpot's standard styling and script. Raw HTML is a legacy editor option that renders the form without HubSpot's default styling so your site's CSS controls it; HubSpot says it is not available in the updated editor. For tracking, the difference that matters is the editor, not the styling: raw HTML forms are legacy forms, so they use the hsFormCallback messages. Read field values from the event payload, not CSS selectors, since HubSpot controls the markup.

The same listener pattern feeds GA4 if you want a clean lead event there too, which is covered in GA4 conversions not showing, and the general Tag Manager checks are in Google Tag Manager tag not firing.

What is normal and what is a red flag.

Normal: HubSpot shows more form submissions than Google Ads shows conversions. Google Ads counts only submissions it can tie to an ad interaction within the conversion window. Normal: a new conversion action sits at Unverified for a few hours after the tag goes live; Google describes verification as taking a few hours. Normal: No recent conversions on a low volume account, since that label covers any 7 day stretch without one.

Red flag: zero Google Ads tag conversions for a week while HubSpot shows paid leads with a gclid. Red flag: Google Ads conversions exceed HubSpot submissions from paid traffic, which means double triggers or a GA4 import counted alongside the tag. Our conversion tracking audit checklist covers these alongside the rest of the account, and enhanced conversions in Google Ads covers the matching side in depth.

Why are my HubSpot form submissions not showing as conversions in Google Ads?

Usually the conversion tag waits for a thank-you page that never loads, because the form shows an inline message. Fire the tag from HubSpot's submission event through a Tag Manager custom event instead, then confirm it in Tag Assistant preview.

What is the HubSpot form submit event for Google Tag Manager?

For forms built in HubSpot's updated forms editor, listen on the window for hs-form-event:on-submission:success. For legacy forms, listen for a message event where event.data.type is hsFormCallback and event.data.eventName is onFormSubmitted.

Should I import GA4 form_submit into Google Ads or use the Google Ads tag?

Use the Google Ads tag fired on HubSpot's success event as the primary lead conversion. GA4's form_submit is an enhanced measurement event that fires for any form it detects, so it can count newsletter or search forms. Keep the import as secondary.

How do I send enhanced conversions from a HubSpot form?

Turn on enhanced conversions under Goals, then Conversions, then Settings in Google Ads. In Tag Manager, read the email and phone from HubSpot's submission event, push them to the data layer, and map them into a User-Provided Data variable attached to the conversion tag. Email is Google's preferred field.

Why does HubSpot show Google Business Profile visits as Paid Search?

HubSpot classifies a visit as Paid search when any utm_source, utm_medium, or utm_campaign parameter is present and the referring domain is google.com. A UTM-tagged profile link clicked from Google Search meets that rule.

Work with us

Let’s talk about what’s next.

A short note on where the business is and where it needs to go. A senior partner replies within one business day.

t@theoryroad.com

Step 1 of 2

How can we help you get found?

What do you need help with?

Next: name, email and budget. That’s it.