UTM parameters for B2B SaaS: a simple naming template
A practical UTM naming convention for B2B SaaS: the five parameters, a copy-ready template, and the tagging mistakes that break attribution.

Rishi Babu
A UTM parameter is a tag added to the end of a URL that tells your analytics where a click came from. Add ?utm_source=linkedin&utm_medium=paid-social to a link, and every click through that link is labelled with its source and channel before it ever reaches your site.
UTMs are the first thing that makes attribution possible, and the first thing most teams get wrong. Not because the tags are hard, but because there's no agreed convention. One person tags a campaign LinkedIn, another tags it linkedin, a third writes Linkedin_Ad. To a human they're the same channel. To the analytics tool they're three different sources, and the report splits one channel into three rows that never add up.
This is a naming problem, not a technical one. A shared template fixes it.
The five UTM parameters
Every UTM link is built from up to five parameters. Three are effectively required for B2B SaaS; two are optional.
utm_source names the specific platform the click came from: linkedin, google, newsletter, capterra. This is the where.
utm_medium names the type of channel: cpc, paid-social, email, organic-social, referral. This is the how. Source and medium work as a pair. google / cpc is a paid Google ad; google / organic is a free search result. Same source, different medium, and the distinction decides which budget line gets credit.
utm_campaign names the specific initiative: 2026-q3-demo-push, security-whitepaper-launch. This is the why.
utm_term records the paid keyword, and matters mainly for search campaigns: utm_term=marketing-attribution-software.
utm_content distinguishes variants inside one campaign: headline-a versus headline-b, sidebar-cta versus inline-cta. This is what makes A/B testing at the link level readable later.
A naming convention that survives contact with a real team
The parameters are standard. The values are where teams diverge, and where a written rule earns its keep. Four rules cover most of it.
Lowercase everything. UTM values are case-sensitive. Google and google register as two separate sources in GA4, so a single stray capital fractures a channel's numbers. Pick lowercase and never break it.
Use hyphens, never spaces. A space in a URL becomes %20, which turns paid social into paid%20social in your reports. Hyphens keep values readable: paid-social, q3-demo-push.
Keep a fixed vocabulary. Decide once that paid LinkedIn is always linkedin / paid-social, and that the email tool is always newsletter / email. Write the allowed values down. The failure mode isn't inventing bad names, it's inventing a second name for something that already had one.
Date-stamp campaigns. Prefix campaign names with the quarter or month: 2026-q3-demo-push. Six months later, when three demo campaigns have run, the date is what tells them apart.
A copy-ready template
Here's a base structure to adapt:
utm_source = the platform (linkedin, google, newsletter, capterra, g2)
utm_medium = the channel type (cpc, paid-social, email, organic-social, referral, display)
utm_campaign = [year]-[quarter]-[initiative] (2026-q3-demo-push)
utm_content = the specific creative or placement (headline-a, sidebar-cta)
A finished link for a paid LinkedIn ad promoting a Q3 demo campaign:
https://cascayd.app/demo?utm_source=linkedin&utm_medium=paid-social&utm_campaign=2026-q3-demo-push&utm_content=carousel-v2
Store the vocabulary and every generated link in one shared spreadsheet, and have everyone build links from it rather than by hand. A spreadsheet with data-validation dropdowns removes the capitalization and typo drift at the source, which is cheaper than cleaning the data downstream.
The four mistakes that break attribution
Tagging internal links. Adding UTMs to links between pages on your own site overwrites the original source. A prospect who arrived from a LinkedIn ad, then clicked an internal button tagged utm_source=homepage, is now recorded as a homepage visitor. Their real origin is gone. Never put UTMs on internal links.
Inconsistent source names. Covered above, and worth repeating as a failure because it's the most common one: linkedin, LinkedIn, and Linkedin are three channels to the machine and one channel to you.
No tags at all. An untagged link is invisible to attribution. The click still happens, but it lands in direct or referral with no campaign context, and the channel that earned it gets nothing. Inconsistent or missing UTMs are the single most common reason attribution data comes back incomplete.
Treating source and medium as interchangeable. Putting linkedin in both fields, or paid-social in utm_source, collapses the where and the how into one blurry label. Keep the platform in source and the channel type in medium.
Where UTMs fit in the bigger picture
Clean UTMs are step one of measuring attribution, not the whole job. A tagged click still has to be connected to a person, held inside an attribution window wide enough to matter, and centralized alongside CRM and sales data before any model can split credit. How to measure marketing attribution walks through that full sequence, and cross-channel attribution covers what happens once several tagged channels belong to the same journey.
Start with the template. Write down the vocabulary, put it in a shared builder, and enforce lowercase. It's an afternoon of work that decides whether the next six months of attribution data is usable or garbage.
Cascayd stitches tagged clicks to the person, pipeline, and revenue they turn into, so the UTMs you set up keep paying off long after someone converts. Try Cascayd for free.