UTM tagging for Google Ads and naming conventions in 2026: one standard across the account, GA4 and your CRM
Open your source/medium report and you will find google / cpc, Google / CPC, google / ppc and (not set) living side by side. Half the deals in your CRM have no source at all. The channel summary disagrees with the ad platform by 20% and nobody on the team can explain why. That is not an analytics bug. That is the absence of a standard for UTM tagging for Google Ads and every other channel.
What follows is a standard you can adopt as written: how auto-tagging (GCLID) and UTMs divide the work, which values to lock down, how to name campaigns and ad groups so reports assemble themselves, and how to migrate without shredding your historical data. It scales from a single account to a manager account with a hundred clients.
GCLID and UTMs are two layers, not two options
The most common conceptual mistake is treating this as a choice. They are different mechanisms serving different consumers of the data.
| Auto-tagging (GCLID) | UTM parameters | |
|---|---|---|
| Who adds it | Google Ads, automatically | You, manually or by template |
| What it carries | A click identifier; network, device, campaign and keyword are pulled from the account | Exactly the five values you wrote |
| Who understands it | GA4 when linked to Google Ads, conversion imports | Anything: CRM, BI, third-party trackers, a spreadsheet |
| How it breaks | Parameter stripped by a redirect | Typos, casing, spaces |
| Needed for | Offline conversion imports, full click detail | Reporting outside the Google ecosystem |
The correct configuration is both layers at once: auto-tagging on, UTMs appended in a way that does not displace the GCLID. The identifier itself and its mobile-app siblings are covered in GCLID, GBRAID, WBRAID and tracking templates.
The switch that matters. GA4 property settings include an option that lets manual tagging (UTM values) override auto-tagging (GCLID) in reporting. Turn it on with sloppy UTMs in place and you actively degrade your own data: instead of rich detail from the ad account, your reports show your five fields, some of them misspelled. Decide once which layer is the source of truth for reporting, and write that decision down.
UTM tagging for Google Ads: where the parameters physically go
Google Ads offers three places, and confusing them is the second most common cause of broken tracking:
- Final URL suffix — the correct home for UTMs. The parameters reach the page and survive parallel tracking.
- Tracking template — for redirects and third-party trackers. Under parallel tracking the redirect happens in the background, so putting page-critical analytics parameters here is risky.
- The ad’s final URL — not a place for tags. You end up with dozens of variants of one URL and a management problem.
The assembly order and what exactly breaks under parallel tracking are covered in parallel tracking and URL options.
The value standard: five fields, no exceptions
UTM values are case-sensitive: Google and google are two separate rows in your report. So rule one is lowercase only, hyphens as separators, no spaces.
| Parameter | What goes in it | Example |
|---|---|---|
utm_source |
The platform. A controlled vocabulary — no more than 10–15 values company-wide. | google |
utm_medium |
Traffic type. For paid search: cpc, and nothing else. |
cpc |
utm_campaign |
The campaign name per your scheme, or dynamic {campaignid}. |
search-nonbrand-uk-2026q4 |
utm_content |
Ad group or creative: {adgroupid}, {creative}. |
{adgroupid} |
utm_term |
Keyword or match type: {keyword}, {matchtype}. |
{keyword} |
A word on utm_medium. Channel grouping tolerates several spellings, but mixing them inside one company voluntarily fragments the report. Pick cpc and ban the rest: ppc, paid, CPC, cpc-google.
ValueTrack parameters worth knowing: {campaignid}, {adgroupid}, {creative}, {keyword}, {matchtype}, {network}, {device}, {placement}, {gclid}. Choosing between readable names and IDs is a genuine trade-off: IDs survive campaign renames but need a lookup table to be readable; names are instantly understandable but fall apart the moment someone renames a campaign in the UI.
The workable compromise for large accounts: put
{campaignid}inutm_campaignand join the human-readable name in BI from an account export. Renaming a campaign then breaks nothing.
Naming conventions for campaigns and ad groups
A campaign name is a data structure, not a label. Build it from fixed blocks in a fixed order and every downstream report becomes parseable with a formula or a regular expression — and the filters in the UI start working for you instead of against you.
A six-block scheme that holds up:
[channel]_[type]_[geo]_[language]_[segment]_[period]
For example: gads_search_uk_en_nonbrand_2026q4 or gads_pmax_de_de_retail_2026q4.
| Block | Purpose | Allowed values (example) |
|---|---|---|
| channel | Buying platform | gads, msads, meta |
| type | Campaign type | search, pmax, demandgen, video, shopping |
| geo | Country or market | uk, us, de |
| language | Ad language | en, de |
| segment | Brand / non-brand / product line | brand, nonbrand, b2b |
| period | Launch quarter or promo | 2026q4, bf2026 |
Four rules go with it. First, the block order never changes — that is what makes names parseable. Second, the value vocabularies are fixed and live in one document; new values are added by an owner, not invented mid-launch. Third, ad groups inherit the logic but describe a narrower slice: nonbrand_delivery_broad. Fourth, keep names short — long names get truncated in interfaces and exports, and the truncated tail is usually where the distinguishing detail was.
For shopping campaigns the same logic continues into the feed through custom labels — see custom labels in Merchant Center. The principles for slicing the account itself are in Google Ads account structure at scale.
Copy-paste strings for the final URL suffix
Working templates for the main campaign types. Substitute your campaign name, or keep the dynamic ID if you chose the ID approach.
Search campaign:
utm_source=google&utm_medium=cpc&utm_campaign={campaignid}&utm_content={adgroupid}&utm_term={keyword}&mt={matchtype}&net={network}&dev={device}
Performance Max (no keyword or match type, but network and placement are useful):
utm_source=google&utm_medium=cpc&utm_campaign={campaignid}&utm_content=pmax&net={network}&dev={device}
Demand Gen and video:
utm_source=google&utm_medium=cpc&utm_campaign={campaignid}&utm_content={creative}&plc={placement}
Three notes on these. First, do not duplicate in UTMs what already arrives with the GCLID — it lengthens the URL for nothing. Second, custom parameters like mt, net and dev do not feed standard channel grouping, but they read perfectly in BI and raw exports — add them only if you will actually analyse them. Third, confirm the landing page survives a long parameter tail and that a redirect to the canonical URL does not strip it.
Tagging beyond Google Ads
A standard only pays off end to end. Perfectly tagged paid channels plus improvised newsletter links still produce a report that will not assemble. A minimum shared vocabulary for utm_medium:
| Channel | utm_source | utm_medium | Note |
|---|---|---|---|
| Paid search | google, bing |
cpc |
One spelling company-wide |
| Paid social | meta, tiktok |
paid-social |
Never blended with organic |
| Organic social | linkedin, youtube |
social |
Links in posts and descriptions |
| ESP name | email |
Not e-mail, not mail |
|
| Partners and influencers | partner name | referral-paid |
Separate from organic referrals |
| Offline (QR, print) | medium name | offline |
Short links with frozen tags |
The most underrated row here is offline. QR codes on packaging and print collateral live for years, so their tags must be meaningful and permanent: rename the campaign and last year’s flyer traffic disappears into “(not set)” forever.
Who owns the standard
The technical part is easy. Standards collapse for organisational reasons: a new hire builds a campaign “their way,” an agency sends a link with its own tags, somebody renames a campaign on a Friday evening. Three rules hold it together:
- One named owner — a person, not “analytics.” They add new vocabulary values and own the document.
- One link builder — a simple sheet or form that assembles URLs from the vocabularies. Hand-built links eventually carry typos.
- A weekly check — five minutes reviewing the rare-value tail. Cheaper than untangling a quarterly report in which a channel split in two.
Migrating without losing history
The main risk of adopting a standard is breaking your data series on the very day you tidy up. A sequence that avoids it:
- Fix a cutover date and record it in your change log. Any shift in reports after that date is a tagging question first and an auction question second.
- Do not rename everything at once. Apply the scheme to new campaigns and convert old ones at natural relaunch points. The exception is
{campaignid}-based tagging, where renaming is harmless. - Build a mapping table. An “old value → new value” lookup in BI lets you assemble continuous series across the cutover.
- Review GA4 channel grouping rules. Custom rules written for old
utm_mediumvalues will silently stop matching. - Run a parallel week. Reconcile platform clicks, GA4 sessions and CRM deals under the new values. Gaps at this stage are almost always tagging errors; the legitimate reasons platforms and analytics disagree are covered in Google Ads vs GA4 conversion discrepancies.
- Document the standard in one place and give access to everyone who creates campaigns. A standard that lives in one person’s head dies during their first holiday.
A recovery plan for tagging that is already broken
Most standards are adopted not on a clean account but on top of several years of accumulated chaos. A sequence that restores sanity in about a week without breaking current reporting:
- Day 1. Inventory. Export every distinct source / medium / campaign combination from the last 90 days with session counts. Typically 80% of traffic sits in 10–15 combinations and the rest is a long tail of garbage. That tail is the work.
- Day 2. Classify. Label each tail row: typo, deprecated value, agency’s own tagging, internal link, unknown. Unknown is the priority — a real, uncounted channel is usually hiding there.
- Day 3. Trace the sources. Find what physically generates each problem value: the ESP, an agency, a button on the site, an old QR code. Fixing the report is pointless while the source keeps producing garbage.
- Day 4. Vocabularies and a builder. Freeze the allowed values and assemble a simple link-building form. From this point new errors should stop appearing.
- Day 5. Mapping. Build the “old value → new value” table so historical data can still be aggregated correctly. Do not rewrite the raw data — keep the mapping as a layer in BI.
- Days 6–7. Parallel reconciliation. Compare platform clicks, GA4 sessions and CRM deals for one week. Record residual gaps and their causes.
The governing rule: never delete or rewrite history. The goal is not a prettier past; it is a future that assembles itself, plus a documented boundary between the two periods.
Seven failure modes you will actually meet
- Inconsistent casing.
Googleandgooglebecome two rows, two budgets and two wrong numbers. - Spaces and non-ASCII characters. They turn into
%20and unreadable sequences that break filters and aggregation. - Manual tagging overriding the GCLID. The override setting plus careless UTMs costs you detail and comparability with platform data.
- UTMs in the tracking template under parallel tracking. The redirect runs in the background and some data may never reach the page.
- UTMs on internal links. The classic: a button on your own site carries UTMs, the session restarts, the source is overwritten and the conversion is credited to the wrong channel.
- Email and messenger links without a shared vocabulary. Marketing sends
utm_medium=email, the ESP sendsutm_medium=e-mail, and the channel splits in two. - Parameters stripped by redirects. Especially http→https, trailing-slash variants, and domain→subdomain hops. Multi-domain funnels need explicit configuration — see cross-domain tracking.
How to verify it works
- A live click. Click your own ad and read the final URL in the address bar: GCLID present, UTMs intact, no duplicated parameters.
- GA4 realtime. Source and medium should appear in the expected form within minutes.
- A BigQuery query. The most reliable way to find garbage values: group 30 days of events by source/medium and read the long tail of rare values — that is where typos live. Setup is covered in the GA4 BigQuery export for paid traffic.
- Row-count sanity check. The number of distinct
utm_campaignvalues should roughly match the number of active campaigns. Three times as many means something is leaking. - CRM coverage. The share of deals with a populated source is a quality metric in its own right, and it degrades before anyone notices a problem in analytics.
Three tagging health metrics
To stop repeating this exercise every quarter, keep three numbers on one screen and look at them weekly:
- Share of traffic in known combinations. What percentage of sessions lands on approved source / medium pairs. A healthy benchmark is above 95% for paid channels. A drop means a new source with its own tagging has appeared.
- Count of distinct utm_campaign values. Compare it with the number of active campaigns. Growth without new launches is a reliable sign somebody is hand-building links.
- Share of CRM deals with a populated source. The most commercial of the three: it determines whether channel-level payback can be calculated at all. Investigate any drop the same day.
These three catch nearly every common failure before it reaches a client report. Put them on the dashboard next to spend, so the person launching campaigns sees them too, not just the analyst.
Implementation checklist
- Auto-tagging enabled; the source-of-truth layer decided and documented.
- UTMs live in the final URL suffix, not the tracking template.
- Controlled vocabularies for all five parameters captured in one document, and UTM tagging for Google Ads is assembled only from them.
- Campaign and ad group naming scheme approved, block order frozen.
- Cutover date logged, old-to-new mapping table ready.
- GA4 channel grouping rules reviewed against the new values.
- Live-click test done and the 30-day rare-value tail reviewed.
- Internal site links cleaned of UTMs.
One last thing: once tagging is clean, the next most common source of “numbers that make no sense” is not your setup at all — it is the platform redefining the metrics themselves. How to tell the two apart is covered in today’s companion piece, the metric changed, not your results. More account-level breakdowns are in the PPC Rebels blog, and platform fundamentals are collected in the PPC Rebels Google Ads guide.
FAQ
Do I still need UTMs if auto-tagging is on?
Yes, if the data is used outside the Google Ads–GA4 pair: in a CRM, BI tool or third-party tracker that cannot read a GCLID. Inside Google’s own ecosystem, auto-tagging is sufficient and richer.
Can I run GCLID and UTMs at the same time?
Yes, that is the standard configuration. Decide deliberately whether manual tagging may override auto-tagging in GA4 reporting, rather than leaving that switch at whatever it happens to be.
What should utm_medium be for Google Ads?
Agree on one value — normally cpc — and use only that. Channel grouping accepts several spellings, but mixing them inside one company fragments reporting.
Tracking template or final URL suffix?
Final URL suffix. The tracking template is for redirects and third-party trackers, and under parallel tracking the redirect runs in the background.
Campaign name or {campaignid} in utm_campaign?
Readable names for small accounts. {campaignid} plus a BI lookup for large accounts and agencies — then renaming a campaign does not break historical series.
Are UTM values case-sensitive?
Yes. Google and google land as separate values. Enforce lowercase, and check it automatically.
Why do I see “(not set)” in reports?
Most often: parameters stripped by redirects, UTMs on internal links, blocked scripts, or in-app browsers. Start with a live click and trace the redirect chain.
Can I rename campaigns after adopting the standard?
Yes, but deliberately. If the readable name is baked into your tagging, renaming breaks the series. If you use {campaignid}, renaming is safe. Either way, the edit date belongs in the change log.
Should internal site links be tagged?
No. UTMs on internal links restart the session and overwrite the source, so conversions get credited to the wrong channel. Use other mechanisms for internal navigation tracking.
How do I catch tagging drift before the client does?
Weekly: review the long tail of rare source/medium/campaign values and the share of CRM deals with a populated source. Both degrade before the discrepancy becomes visible in summary reports.