How to pass Marketo form submissions through GTM & into GA4
February 1, 2023
It took me several months to finally figure out how to successfully pass specific Marketo form submissions into Google Tag Manager, and then pass those custom events into Google Analytics 4. It was quite a journey!
Step 1. Google Tag Manager: Add a Marketo event listener
You'll find different variations of this code online, but after speaking with two extraordinarily smart developers*, I landed on the following code — you can grab it from the PasteBin link below or contact me.
Now that you have your 95 lines of custom code (thanks Marketo 🙄), head over to Google Tag Manager.
Create a new tag; call it something like: Forms – Marketo Event Listener
Tag type: Custom HTML
The trigger for your tag could be "All Pages" — however, I went with "Window Loaded" to ensure that all page elements (especially our Marketo form) load fully before this event listener goes into effect.
Step 2. Google Tag Manager: Create a user-defined variable
Click on "Variables" in the left-hand menu
Scroll down to "User-Defined Variables" and click "New"
Name it Marketo Form ID
Variable Configuration > Variable Type: Data Layer Variable
Data Layer Variable name: mkto.form.id
Data Layer Version: Version 2
Save (the "references to this variable" will come later).
Step 3. Google Tag Manager: Create tags and triggers
Let's do the following for each individual Marketo form you want to track:
Create a new tag
Name it something like: GA4-newsletter
Tag type: Google Analytics GA4 Event
Event name: This is what will eventually appear in GA4. You can name it whatever you like; underscores are recommended. I've often used: newsletter_form_submit
Associate this tag with the trigger you'll create below...
Create a new trigger
Name it something like: Marketo #### submit newsletter
Trigger type: Custom Event
Event name: mkto.form.success
This trigger fires on "Some Custom Events"
Fire this trigger when an Event occurs and all of these conditions are true: "Marketo Form ID" (this is the variable you created earlier) "contains" "####" (this is where you'll need at least part of the Marketo form ID. In my case, it was a series of four digits.
Test your tag in Preview Mode
This could be an entirely separate blog post, so if you need guidance here, Google is your friend. Verify that your new tag(s) are indeed firing correctly in GTM Debug/Preview mode, and remember to publish your GTM instance live.
Once I verified my tags were firing correctly — that's when things got interesting, aka frustrating.
*Before I go any further, I'd like to give a big thank you to those two fantastic developers I mentioned earlier. Each volunteered significant time and helped me diagnose various issues throughout this process, including the GA4 conundrums I'll dive into next. Thank you to:
Michael Query, founding engineer, adMind Analytics — I was blown away by Michael's knowledge in all things analytics and code. He is highly impressive!
Sanford Whiteman of Teknkl — he knows just about everything about Marketo.
Step 4. Fill out your Marketo forms on your live site
This is required, so that the form fills actually fire in GTM, and then can pass into GA4. Be patient here — it can take 24-48 hours for those custom events to finally show up in GA4. Also remember to do this in incognito or VPN, if you are blocking your own IP address in GA4.
Step 5. Go to Google Analytics 4
Go to Admin > Events. If your new custom events (your Marketo form submissions) aren't showing up here after a couple days, there are a couple things you can do.
First, go to Reports > Engagement > Events, as per the screenshot below. Look for the dreaded orange triangle with the exclamation mark — this is a "data thresholding" warning. Data thresholding was likely the root cause of why I did not see my custom events in GA4 appear for weeks.
I went back and forth with Google about this — you can contact Google Support here, and you don't have to be a paid ads customer. I asked them about GA4 data thresholding, why is it being applied, etc. (I've never seen it as an issue in more than a dozen other GA4 accounts)
Google support wrote in an email verbatim:
Unfortunately, there isn’t a clear clarity on what will trigger Google’s data thresholds or the required minimum aggregation thresholds as this is system defined, and we can't adjust them.
Thanks, Google 🙄.
When data thresholding is being applied, you may notice that your custom events are being logged in certain GA4 views/timeframes (see the right side of the graph above), yet those event counts aren't consistent in other GA4 screens/reports. Here's how to correct that issue (which I consider to be a GA4 bug).
Step 6. Fix the GA4 data thresholding problem
GA4 > Admin > Reporting Identity > Click "Show All" (this is fairly hidden, but it's there on the lower right)
If you're still having issues 24 hours after modifying your reporting identity settings, one final thing you can try is: Go to GA4 > Admin > Data Settings > Data Collection, and turn OFF Google Signals.
This was a two-pronged issue that took me many weeks to work through. Neither Marketo nor GA4 are user-friendly when it comes to measuring form submissions, and I hope they improve. Let me know what your experience has been like. Good luck!