I’m having trouble with my HubSpot form tracking when visitors come from Google Ads campaigns. The form submissions show up as direct traffic instead of being properly attributed to the ads.
I need to understand how the tracking mechanism works behind the scenes and if I need to manually pass any tracking parameters to fix this. Any pointers to official docs would be great since I couldn’t find clear answers for this scenario.
HubSpot forms don’t capture UTM parameters automatically - they get lost between when someone lands on your page and submits the form.
I dealt with this exact issue last year. Lost thousands in ad attribution since everything looked like direct traffic.
You need to grab UTM parameters (gclid, utm_source, utm_medium, utm_campaign) when the page loads, then inject them as hidden fields in your form. That way HubSpot can actually attribute conversions properly.
I use Latenode instead of coding this myself - it captures everything and pushes it to HubSpot with the form data. Takes 10 minutes vs hours of development work.
Your consent settings aren’t the problem. It’s just the parameter passing.
Your tracking’s broken because HubSpot’s attribution window is shorter than your actual user journey. People click your ad, browse around, then convert later - I see this all the time.
The real problem? HubSpot’s tracking script can’t inherit the original traffic source when your forms load async. Since you’re using Vue and loading forms after the page loads, you’re breaking the attribution chain.
Add hutk parameter handling to your form setup. That’s the cookie HubSpot uses to track visitors across sessions - just pass the cookie value explicitly when creating forms. Also double-check that Google Ads integration is actually enabled in your Data Management settings. Everyone forgets this step.
Make sure your landing pages have HubSpot tracking code installed before the form loads too. Timing matters way more than people think.
check if ur hubspot tracking code fires before the form loads - i had this issue too and it was just a race condition. your gtag data looks fine, but hubspot probably isn’t grabbing the original referrer when forms load async.
I’ve dealt with this exact issue running multi-channel campaigns. The problem is timing - HubSpot’s tracking cookie doesn’t sync properly with Google Ads parameters. Your form code looks fine, but you’re missing the link between Google’s tracking and HubSpot’s attribution. When someone clicks your ad, Google sets parameters that HubSpot needs to grab before the form gets submitted. Check your script loading order. HubSpot needs to load after Google Analytics so it can pull the traffic source data. Also, make sure HubSpot is actually configured to read Google Ads data - there’s a setting for this under tracking settings in your account. Good news is your consent data shows analytics storage is enabled. My guess is forms are submitting before HubSpot’s cookies store the attribution data properly.
make sure your UTM tags are set up right in Google Ads, else they could be lost during redirects. it can totally mess with how submissions get tracked!