July 20, 2026 · 5 min read

Google Ads Auto-Tagging and UTMs: Run Both

Auto-tagging gives you gclid. Manual UTMs give you readable reports. Here's the final URL suffix that runs both, and the GA4 toggle that decides which one wins.

utm analytics strategy

The setting that quietly rewrites your paid reports

Auto-tagging goes on. The UTM template stays where it was. Two weeks later paid search is smeared across "google / cpc" and "google / organic" in GA4, the numbers won't tie back to the Google Ads UI, and nobody touched a single campaign.

That's the failure mode. It isn't a bug. It's two tagging systems writing to the same URL with no agreement about which one wins.

Most guides tell you to pick one. That's lazy advice. Run both, but set the tiebreaker deliberately, because almost nobody writes down how.

What each one actually buys you

gclid is Google's click identifier. Auto-tagging appends it to your landing page URL, and it's the key that lets Google Ads and GA4 reconcile with each other: cost data, keyword-level detail, conversions flowing back into Ads for bidding. Turn auto-tagging off and you lose that link. Smart Bidding gets worse at its job. That's the entire argument for it, and it's a good one.

UTMs buy you something different. Readability, and portability. Thing is, a value like utm_campaign=q3-brand-au shows up in every tool you own, not just the Google stack, which matters the moment someone asks a question your BI dashboard has to answer instead of GA4. gclid is opaque to all of them. It means nothing to your CRM.

So the answer is both. One feeds Google's machinery, the other feeds yours. They only fight when you let them.

The exact setup

Turn auto-tagging on first. Account settings, then the auto-tagging checkbox. One click.

Then add UTMs through the final URL suffix, not by hand-editing landing page URLs and not through a tracking template. This is the step that gets skipped, and it's the one that matters. The final URL suffix appends parameters that survive redirects, which is what you want if there's a redirect-based tracker sitting in front of your site. A tracking template rewrites the URL instead. Different job.

Set it at account level so new campaigns inherit it:

utm_source=google&utm_medium=cpc&utm_campaign={campaignid}&utm_content={creative}&utm_term={keyword}

Those braces are ValueTrack parameters. Google fills them in at click time, so you're not maintaining a spreadsheet of campaign names that goes stale the second someone renames a campaign in the UI.

The ones that earn their place:

  • {campaignid} and {adgroupid}: stable IDs that don't break when someone renames things
  • {keyword}: the keyword that matched, not the search term the person typed
  • {network}: where it served
  • {ifsearch:cpc}{ifcontent:display}: conditional, if you want medium to reflect the network

There's a real tradeoff hiding in that first bullet. IDs are stable but unreadable. If your reports go in front of a client who needs to recognize campaign names, hardcode utm_campaign per campaign and accept the maintenance. IDs win for anything automated. Names win for anything a human reads. (We've flip-flopped on this more than once, and both answers are defensible.)

The GA4 toggle that picks the winner

Here's the one that bites people.

By default, when a URL shows up carrying both a gclid and your UTMs, GA4 trusts the gclid and ignores your utm_source and utm_medium. Your carefully named campaign gets replaced by Google's version of events.

There's a setting for it in the data stream: allow manual tagging to override auto-tagging. Flip it and your UTMs win instead.

Leave it off. Let gclid win inside GA4 so that GA4 and Google Ads agree with each other, and let your UTMs do their work everywhere else. Two systems reporting different paid numbers costs more meetings than the flexibility is ever worth.

The exception: if you've deliberately built your channel grouping around custom medium values, flip it on, and accept that GA4 and the Ads UI will disagree slightly forever. Either choice is fine. Just write down which one you made, because in six months nobody will remember.

Verify it, don't assume it

Every guide stops at the config. The errors live past that point.

Click one of your own live ads. Not a preview. A real click that costs you real money. Then read the URL in your address bar: you should see gclid and your utm parameters. If only gclid is there, the suffix didn't apply, and the usual culprit is a campaign-level suffix quietly overriding the account-level one.

Then wait. Realtime will show the session, but campaign attribution takes longer to settle, so check Traffic acquisition the next day and confirm your medium reads cpc rather than organic, referral, or (not set).

Two things break this more than anything else:

  • A redirect in front of your landing page that drops the query string. Test the whole chain, not just where you land.
  • Landing page URLs that already contain a ?. Google handles the join correctly. Most homegrown redirect scripts don't.

If paid traffic is piling up in Direct, one of those two is usually why, not the tagging setup itself.

What we'd actually do

Auto-tagging on. Suffix at account level with ValueTrack IDs. Override toggle off. Then go click an ad and check that it worked.

Twenty minutes, and it settles an argument that otherwise resurfaces every quarter. If you want the conceptual version of why gclid and UTMs coexist at all, we wrote that up in click IDs vs UTM parameters. And if you're hand-building the UTM side, the UTM builder keeps it consistent.

The tagging is the easy part. Agreeing on what the fields mean is what takes the time.

← All posts