
UTM tracking in Marketo captures the source, medium, and campaign information from URL parameters when leads submit forms.
The data flows into custom fields, syncs to Salesforce, and powers attribution reporting that shows which campaigns actually generate pipeline.
Marketing teams using proper UTM tracking report 15-30% improvement in campaign optimization decisions (because they finally know what’s working). Without it, you’re guessing which channels drive revenue.
In this article, we’ll dive deep into Marketo UTM tracking and cover:
- Handling the cookie persistence problem
- Adding hidden fields to forms with autofill
- Creating custom fields for each parameter
- Syncing to Salesforce for pipeline reporting
- Building Smart Campaigns to process the data
What are UTM parameters and why track them in Marketo?
UTM parameters are tags appended to URLs that identify where traffic originates. When someone clicks a link with UTM parameters and later submits a Marketo form, those values get captured — connecting the lead to the marketing effort that brought them.
Each parameter answers a specific attribution question.
| Parameter | Question answered | Example values |
| utm_source | Where did they come from? | Google, Facebook, newsletter |
| utm_medium | What channel type? | cpc, email, social, organic |
| utm_campaign | Which specific campaign? | spring_promo, webinar_q2 |
| utm_content | Which ad or content version? | banner_red, cta_bottom |
| utm_term | What keyword (paid search)? | marketing_automation |
A complete UTM URL looks like this:
UTM data answers the questions executives actually ask: Which campaigns generate qualified leads? Where should we spend next quarter’s budget?
Without UTM tracking, Marketo knows that someone submitted a form — but not why they were on your site. Paid search, organic, social ads, and email drip campaigns — they all look identical without parameters to differentiate them.
The data also flows downstream to Salesforce, enabling closed-loop reporting that connects marketing spend to closed revenue (not just MQLs).
How do you set up UTM fields in Marketo?
Before capturing UTM data, you need fields to store it. Marketo requires custom string fields for each parameter — and a strategic naming convention that supports both first-touch and last-touch attribution.
Create fields
Navigate to Admin → Field Management and create string fields for each UTM parameter.
| Field name | Field type | Sync to SFDC |
| UTM_Source_Temp | String | No |
| UTM_Medium_Temp | String | No |
| UTM_Campaign_Temp | String | No |
| UTM_Content_Temp | String | No |
| UTM_Term_Temp | String | No |
| UTM_Source_First | String | Yes |
| UTM_Source_Last | String | Yes |
The temporary fields capture current values.
The permanent fields (First/Last) store attribution data that syncs to your CRM. Create First and Last versions for each parameter you want to report on (most teams prioritize source, medium, and campaign).
Naming conventions
Consistency matters more than the specific names. Whatever convention you choose, document it and enforce it across your team.
Recommended patterns:
- Use underscores, not spaces (URL-safe)
- Match naming between Marketo and Google Analytics
- Lowercase everything (case sensitivity causes duplicate values)
- Be specific but concise (webinar_ai_marketing_june24, not just webinar)
How do you add UTM fields to Marketo forms?
The capture mechanism uses hidden fields with autofill configured to pull from URL parameters. Visitors never see these fields, but the data is automatically collected when the URL contains UTM parameters.
Hidden fields
Open your form in the editor and add each UTM temporary field. Set the field visibility to Hidden — this keeps the form clean while still capturing data. Steps include:
- Drag the UTM_Source_Temp field onto your form
- Click the field and select “Hidden” under visibility
- Repeat for each UTM parameter you want to capture
Autofill configuration
Configure each hidden field to pull its value from the corresponding URL parameter.
| Form field | Autofill source | Parameter name |
| UTM_Source_Temp | URL Parameter | utm_source |
| UTM_Medium_Temp | URL Parameter | utm_medium |
| UTM_Campaign_Temp | URL Parameter | utm_campaign |
| UTM_Content_Temp | URL Parameter | utm_content |
| UTM_Term_Temp | URL Parameter | utm_term |
Set a default value like “none” or “direct” for cases where the parameter isn’t present. The default helps you identify organic traffic versus tracked campaigns in reporting.
Disable pre-fill
This step is critical and frequently missed. By default, Marketo pre-fills form fields with known values. For UTM tracking, pre-fill causes problems — it would show old UTM values instead of current ones.
Disable pre-fill on each UTM field:
- Click the field in the form editor
- Uncheck “Pre-fill” in field settings
- Save and approve the form
With pre-fill disabled, each form submission captures fresh UTM data from the current URL (enabling accurate last-touch attribution).
How do you process UTM data with Smart Campaigns?
Raw UTM values in temporary fields need processing to become useful attribution data. Smart Campaigns copy values from temporary fields to permanent first-touch and last-touch fields based on your attribution logic.
Temporary vs permanent
The dual-field strategy separates capture from storage.
| Field type | Purpose | Updates |
| Temporary | Captures current URL parameter | Every form submission |
| First-touch | Preserves the initial traffic source | Once (first submission only) |
| Last-touch | Records the most recent source | Every form submission |
Temporary fields are overwritten constantly. Permanent fields follow rules that protect historical data while allowing new information to be captured.
First-touch logic
Create a Smart Campaign that copies temporary values to first-touch fields only if the first-touch field is empty.
Smart List:
- Trigger: Fills Out Form (any form with UTM fields)
- Filter: UTM_Source_First is empty
Flow:
- Change Data Value: UTM_Source_First = {{lead.UTM_Source_Temp}}
- Change Data Value: UTM_Medium_First = {{lead.UTM_Medium_Temp}}
- Change Data Value: UTM_Campaign_First = {{lead.UTM_Campaign_Temp}}
The “is empty” filter ensures the campaign only runs once per lead, preserving the original source that first brought them to you.
Last-touch logic
Create a separate Smart Campaign that updates last-touch fields on every qualifying form submission.
Smart List:
- Trigger: Fills Out Form (any form with UTM fields)
- Filter: UTM_Source_Temp is not empty
Flow:
- Change Data Value: UTM_Source_Last = {{lead.UTM_Source_Temp}}
- Change Data Value: UTM_Medium_Last = {{lead.UTM_Medium_Temp}}
- Change Data Value: UTM_Campaign_Last = {{lead.UTM_Campaign_Temp}}
The “is not empty” filter prevents overwriting good data with blank values when someone submits a form from a URL without UTM parameters.
How do you sync UTM data to Salesforce?
UTM data becomes powerful when it flows to your CRM, connecting marketing attribution to pipeline and revenue. Marketo syncs custom fields bidirectionally with Salesforce — but only if you configure the mapping correctly.
Field mapping
Create matching fields in Salesforce on both Lead and Contact objects. The field API names must match your Marketo field names (or you’ll need to manually map them in Admin → Salesforce).
| Marketo field | Salesforce field | Object |
| UTM_Source_First | UTM_Source_First__c | Lead, Contact |
| UTM_Source_Last | UTM_Source_Last__c | Lead, Contact |
| UTM_Medium_First | UTM_Medium_First__c | Lead, Contact |
| UTM_Campaign_First | UTM_Campaign_First__c | Lead, Contact |
Create fields in Salesforce first, then let them sync to Marketo (easier than creating in Marketo and mapping manually).
Campaign attribution
With UTM data on Lead and Contact records, you can build Salesforce reports showing:
- Which utm_source values generate the most pipeline
- Which utm_campaign names convert at the highest rate
- How utm_medium performance varies by product line
Add UTM fields to Opportunity reports through the Contact Role relationship for true closed-loop attribution. Compare Marketo vs Pardot or HubSpot vs Marketo attribution capabilities if you’re evaluating platforms.
What about UTM tracking when emails land in spam?
The uncomfortable truth about UTM tracking is that the data is useless if your emails never reach the inbox. You can’t attribute leads to email campaigns when those campaigns land in spam folders.
The visibility problem
Marketo users sending high volumes frequently encounter email reputation and domain reputation issues.
New sending domains lack trust. Shared IPs carry risk from other senders’ behavior. Authentication problems trigger filtering. As a result, your carefully tagged UTM links never get clicked because emails never get seen.
Signs your email deliverability undermines UTM tracking:
- utm_medium=email shows surprisingly low attribution
- Open rates dropped without content changes
- Clicks from email campaigns declining month-over-month
- utm_source=newsletter barely registers in reports
Deliverability basics
Before troubleshooting UTM implementation, verify your emails actually reach recipients.
Testing
Run a free email deliverability test across Gmail, Outlook, Yahoo, and 50+ other providers — see exactly where messages land before blaming attribution setup.
Warmup
If testing reveals inbox placement problems, email warmup rebuilds sender reputation gradually. EmailWarmup.com’s personalized approach mimics your actual Marketo campaign patterns (rather than generic warm-up emails that ESPs detect and flag), helping high-volume senders achieve inbox rates of up to 98%.
Advice
For Marketo users struggling with both attribution accuracy and deliverability, you can talk to an email deliverability consultant at EmailWarmup.com for free. They’ll audit your sending infrastructure alongside your tracking setup — because perfect UTM implementation means nothing if emails land in spam.
Frequently asked questions
Here are some commonly asked questions about Marketo UTM tracking:
Not by default. Marketo only captures UTM parameters present in the URL at the moment of form submission. If someone clicks a UTM-tagged link, browses other pages, and then submits a form, the parameters are lost. Solving this requires a tracking script that stores UTM values in browser cookies and populates hidden fields on submission. Most marketing ops teams implement cookie-based persistence for accurate attribution.
Create them in Salesforce first, then let the sync bring them into Marketo. Going the other direction requires manual field mapping in Admin → Salesforce, which adds complexity and potential for errors. Creating in SFDC first ensures the fields sync automatically with proper mapping.
At minimum, create temporary and last-touch fields for utm_source, utm_medium, and utm_campaign (9 fields total). Add first-touch versions if you need to compare the initial acquisition source versus the converting source. Most teams skip utm_content and utm_term unless they run extensive A/B testing or paid search campaigns.
Common causes include pre-fill still enabled (overwrites with old empty values), autofill not configured correctly (wrong parameter names), or the “is not empty” filter missing from your Smart Campaign (allows blank overwrites). Check each form’s hidden field configuration and verify your Smart Campaign filters prevent blank data from processing.
Yes, but it requires coordination with your web team. Non-Marketo forms need hidden fields that capture URL parameters, and the data must be passed to Marketo via API or form handler. The Marketo field names must match exactly, and you’ll need the same Smart Campaign processing for attribution. Check how to verify email deliverability if form submissions from email campaigns seem lower than expected.

