UTM Parameters
Chapter 17 — UTM Strategies for B2B Marketing
Encode your go-to-market context directly in UTMs so reports reflect how B2B buying really works. Layer stage, persona, account segments, and plays on top of the core attribution fields to measure movement toward pipeline and revenue.
The two-layer model that keeps B2B analysis honest
Use standard UTMs for traffic attribution, then add a B2B context layer for strategy.
The PSA Context Layer
Persona Stage Account Segment
Persona, Stage and Account Segment can be added as custom parameters (for example, utm_persona, utm_stage, utm_accountseg). Keep values short and from fixed lists.
| Layer | What it encodes | Example values | Questions you can answer |
|---|---|---|---|
| Core attribution | Channel/source/campaign | utm_source=linkedin; utm_medium=cpc; utm_campaign=abm_f500_q2 |
Which channels and campaigns drive engaged accounts? |
| B2B context | Stage, persona, account grouping | utm_stage=consideration; utm_persona=cto; utm_accountseg=f500_mfg |
Which persona-stage pairs move deals forward? |
Lets explore the B2B context further.
Making ABM visible in your URLs with non-PII segments
UTMs should reflect your account strategy so you can see results by tier or cluster.
How to encode
- Use a non-PII grouping in a custom parameter (for example,
utm_accountseg=tier1_mfgorutm_cluster=semi_50). - Do not include company names or emails in URLs.
- Keep the number of segments small and stable.
utm_source=linkedin&utm_medium=cpc&utm_campaign=abm_finserv_f100_q3&utm_accountseg=finserv_f100&utm_stage=awareness
| Element | Example | Why it matters |
|---|---|---|
utm_accountseg |
finserv_f100 | Aggregates ABM performance without exposing PII |
utm_campaign |
abm_finserv_f100_q3 | Connects the flight to sales plays |
| Risk to avoid | PII in UTMs | Keeps compliance clean and links share-safe |
Note: True account-level attribution relies on CRM and multi-touch methods covered in other chapters.
Tagging funnel stage to see movement, not clicks
Stage tagging shows which touches move accounts forward.
How to encode
- Add
utm_stagewith a strict, finite list (for example, awareness, consideration, decision, post-sale).
A security SaaS may map:
- Awareness: “2026 Threat Landscape” report
- Consideration: “Zero-Trust Architecture” webinar
- Decision: “Healthcare Case Study”
- Post-sale: “Admin Quickstart”
Email nurture example:
utm_source=email&utm_medium=nurture&utm_campaign=q2_webinar_series&utm_stage=consideration
| Content type | Intended stage | Example UTM add-on |
|---|---|---|
| Industry report | awareness | utm_stage=awareness |
| Comparison guide | consideration | utm_stage=consideration |
| ROI calculator | decision | utm_stage=decision |
| Onboarding guide | post-sale | utm_stage=post-sale |
Tagging persona or role to match buying needs
Different roles care about different things. Encode that directly.
How to encode
- Use
utm_persona(orutm_role) for the asset’s primary audience.
A data platform selling to CIOs, Heads of Data, and Engineers can tag:
CIO ROI email:
utm_source=email&utm_medium=exec_nurture&utm_campaign=roi_cio_q2&utm_persona=cio
Engineer docs ad:
utm_source=google&utm_medium=cpc&utm_campaign=docs_awareness&utm_persona=engineer
| Persona | Typical hook | Example channel | Example param |
|---|---|---|---|
| CIO | Risk and ROI | Executive nurture | utm_persona=cio |
| Head of Data | Architecture fit | LinkedIn ABM | utm_persona=head_data |
| Data Engineer | Hands-on docs | Google Search | utm_persona=engineer |
Tracking multiple decision-makers without exposing identities
Label interactions at the stakeholder level, then roll up to the account later in your CRM.
How to encode
- Pair persona tagging with a non-PII contact key when you control the click (owned email, webinar confirm). Use a hashed internal ID as a custom parameter (for example, utm_ck=8f3a1c).
A finance SaaS can run role-specific nurtures to several contacts at the same account:
CFO stream: utm_source=email&utm_medium=nurture&utm_campaign=roi_calc&utm_persona=cfo&utm_stage=decision&utm_ck=1ab2cd
This helps you see which stakeholder actually engages and which touch comes right before opportunity creation. Identity resolution and account roll-ups are handled in the CRM and attribution chapters.
Keep early-touch context alive across long sales cycles
What “early-touch context” means: It’s the first thing that brought a person to your site (the first ad, email, or link). In B2B, people visit many times over many months before they become a lead. You need to remember that very first source until they finally submit a form or buy.
Why it matters: If you only keep the “latest” click, you lose who truly started the journey. That breaks your attribution and makes budget decisions bad.
- Store first-touch UTM fields in a first-party cookie with a sensible expiration.
- On form submit, save both current-touch and first-touch UTMs to your marketing automation and CRM fields.
- Consider server-side capture to reduce client-side loss.
If an ERP buyer first clicks a LinkedIn report in January and requests a demo in June, persisting first-touch fields ensures Q1 LinkedIn ABM gets proper credit when the opportunity opens.
| Field to persist | Example | Where to store | Why |
|---|---|---|---|
| First-touch source/medium | linkedin/cpc | Cookie + CRM lead fields | Guides budget allocation |
| First-touch campaign | abm_mfg_q1 |
CRM campaign member | Enables cohort analysis |
| First-touch stage/persona | awareness/cto |
MA + CRM | Shows journey by audience |
| Last-touch set | Current UTMs | Form hidden fields | Optimizes conversion |
Measure plays and sequences, not isolated assets
Tag coordinated sequences so you can judge the play, not only the single click.
How to encode
- Use utm_play to name the sequence and utm_step to index the touch (for example,
utm_play=spark_engage_close&utm_step=2).
An analytics vendor running a three-step ABM play can tag:
- Step 1 (Spark): Analyst report ads
- Step 2 (Engage): Persona webinar
- Step 3 (Close): ROI calculator to executives
Example:
utm_source=linkedin&utm_medium=cpc&utm_campaign=abm_q3&utm_play=spark_engage_close&utm_step=1
This lets you measure drop-off between steps and compare which plays win by industry segment.
Control vocabularies to keep reports trustworthy
Your B2B dimensions must be tight and finite.
- Guardrails
- Enumerate stages: awareness, consideration, decision, post-sale.
- Limit personas to roles that appear in real deals.
- Map each asset to one primary stage and one primary persona to avoid double counting.
A cybersecurity team limiting utm_persona to ciso, sec_architect, it_ops reduces report noise and improves statistical power by role. Broader naming and governance live in dedicated chapters.
An end-to-end B2B flow that links plays to outcomes
A developer tools company runs a quarter-long motion from top-of-funnel to demo.
| Touch | Channel | Example parameters | Outcome |
|---|---|---|---|
| 1 | LinkedIn ABM | utm_source=linkedin&utm_medium=cpc&utm_campaign=abm_devtool_q2&utm_accountseg=saas_t2&utm_stage=awareness |
Page view, cookie set |
| 2 | Google Search | utm_source=google&utm_medium=cpc&utm_campaign=compare_q2&utm_persona=engineer&utm_stage=consideration |
Guide download |
| 3 | Email nurture | utm_source=email&utm_medium=nurture&utm_campaign=roi_exec&utm_persona=cto&utm_stage=decision&utm_play=roi_surge&utm_step=2 |
Demo request |
| 4 | Retargeting | utm_source=linkedin&utm_medium=retarget&utm_campaign=case_study_q2&utm_stage=decision |
Opportunity created |
This structure answers: Which persona-stage pairs create the most opportunities in SaaS Tier 2 accounts?
Board-grade questions your tagging should answer
- Which ABM segment (
utm_accountseg) produces the bestMQL-to-SQLrate? - Which stage-persona pairs tend to occur within 30 days before opportunity creation?
- Which play (
utm_play) shows the highest step-to-step completion by industry? - Do decision-stage executive assets shorten sales cycles compared to technical ones?
Risk controls for B2B UTM tagging
- Never place PII (names, emails, exact company names) in UTMs.
- Keep custom parameter vocabularies small and enumerated.
- Make URLs human-readable for sales and partners.
- Ensure owned channels (email, nurtures, webinars) include the full B2B context layer.
Have a fallback of your B2B context
- Put your key B2B details (like account name, segment, buyer role) into one packed line of text inside
utm_content. This is the “fallback,” because almost every analytics tool readsutm_content. - Also send the same details as separate custom URL parameters (like acct=acme, seg=enterprise, role=cfo). Tools that understand custom parameters will store each piece cleanly.
Why do both?
- If a tool ignores your custom parameters, you still keep the data in
utm_content. - If a tool can read custom parameters, you get neat, separate fields for reporting.
Quick example URL:
https://example.com/?utm_source=linkedin&utm_medium=cpc&utm_campaign=abm-q1&utm_content=acct:acme|seg:enterprise|role:cfo&acct=acme&seg=enterprise&role=cfo
utm_persona=cio&utm_stage=decision&utm_accountseg=finserv_f100
- Fallback in utm_content: p:cio|s:decision|seg:finserv_f100
Practical tips:
- Use a simple, consistent format in
utm_content(key:value pairs separated by |). - Keep names short (acct, seg, role).
- Avoid spaces; use dashes or underscores.
In B2B, UTMs should mirror your sales motion—stage, persona, account, and play—so your reporting shows progress toward pipeline and revenue.
Write two URLs for the same asset:
- URL A (dedicated params): add
utm_persona=cio&utm_stage=decision&utm_accountseg=finserv_f100 - URL B (fallback in
utm_content): addutm_content=p:cio|s:decision|seg:finserv_f100
Note how key value pairs are added for utm_content with a colon : essentially replicating the same that have explicit query parameters.
- Paste both into any URL decoder. Confirm values are intact and easy to parse.
- Open each in a private browser window. Check that the final landing URL includes your parameters (no PII).
Test your knowledge
Loading quiz questions...