UTM parameters for paid search: when Google Ads auto-tagging beats manual UTMs

Google Ads auto-tagging via gclid handles paid search attribution by default. When to layer manual UTMs on top, and when to trust the auto-tag.

Trakl Team4 min read
On this page+

Google Ads has its own tagging system, the gclid parameter. When auto-tagging is enabled (the default for new accounts since 2020), Google appends a gclid identifier to every click that GA4 reads as a paid-search attribution. You do not need to manually add utm_source, utm_medium, or utm_campaign for Google Ads to attribute correctly in GA4.

But auto-tagging does not solve every paid-search attribution problem. Here is when to layer manual UTMs on top.

What gclid does and what it does not

A gclid is a single parameter that ties the click back to a Google Ads click ID. GA4 reads it on landing and looks up:

  • The campaign that produced the click
  • The ad group inside that campaign
  • The keyword (or audience for non-keyword campaigns) that matched
  • The ad creative variant that fired
  • The bidding mode and click cost

GA4 surfaces this in Reports → Acquisition → Traffic Acquisition → Default Channel Group → Paid Search. The data is rich and accurate.

What gclid does not give you:

  • Attribution outside GA4. Other analytics tools (Mixpanel, Amplitude, Segment, your own warehouse) may not parse gclid by default. Manual UTMs work everywhere because every analytics tool reads them.
  • Cross-platform consistency with non-Google channels. Your Bing Ads, Facebook Ads, LinkedIn Ads use their own auto-tag systems. Manual UTMs let you align all paid channels under the same utm_medium=cpc or utm_medium=paid_social convention.
  • Visibility in reports built on URL parameter parsing. If your team builds custom dashboards that read URL parameters from referrer logs, gclid is not in the same shape as utm_*.

When to use auto-tagging only

Three cases where the auto-tag is enough:

  1. GA4 is your only analytics destination. No Mixpanel, no warehouse, no custom dashboard. GA4 reads gclid natively and the data is rich.
  2. Google Ads is your only paid channel. No Bing, no Facebook, no LinkedIn. Cross-channel consistency does not matter.
  3. You do not need keyword-level data outside GA4. GA4 already shows you keywords that triggered clicks. If that is the only place you need that data, auto-tag is enough.

For most teams running pure Google Ads with GA4 as the source of truth, auto-tagging works without modification. Just confirm it is enabled in Google Ads → Admin → Account settings → Auto-tagging.

When to layer manual UTMs on top

Three cases where manual UTMs add value:

  1. Multiple ad platforms with different auto-tag systems. Google's gclid, Bing's msclkid, Meta's fbclid, LinkedIn's li_fat_id. Each one is platform-specific. A unified utm_source=google and utm_medium=cpc (matching Bing's utm_source=bing and utm_medium=cpc) lets you build one report comparing paid search across both engines.
  2. A non-GA4 analytics destination. Mixpanel, Amplitude, custom dashboards. UTMs are the universal interface.
  3. Custom dimensions GA4 does not surface natively. If you want to track paid-search audience IDs or custom creative-test labels, utm_term and utm_content carry that data through to GA4 custom dimensions.

For these cases, the recommended UTM template:

utm_source=google
utm_medium=cpc
utm_campaign={CampaignName}
utm_term={keyword}
utm_content={CreativeId}

Where the curly-brace placeholders are Google Ads' URL parameter macros. Google substitutes the actual values per click. This gets you per-keyword and per-creative manual tagging on top of the auto-tag.

How auto-tag and manual UTMs interact

If both are present, manual UTMs win in GA4 for attribution. The gclid is still used for click-level metadata (keyword, ad creative, cost), but the source/medium/campaign attribution comes from the manual values.

This means:

  • If you manually tag with utm_source=google and utm_medium=cpc, GA4 attributes correctly.
  • If you manually tag with utm_source=google and utm_medium=paid (wrong; "paid" is not in GA4's Paid Search channel match list), GA4 attributes incorrectly. The traffic falls into "Other."
  • If you manually tag with the wrong values across some ads but not others, you split your attribution data between two rows.

The risk of layering manual UTMs is not the auto-tag conflict; it is the team-discipline question of getting every ad variant tagged consistently.

Setting manual UTMs in Google Ads

Two levels:

1. Account-level URL options. Admin → Account settings → Tracking → Final URL suffix or URL options. Add the UTM parameters once at the account level and they apply to every ad in every campaign by default.

2. Per-campaign or per-ad URL options. Override at the campaign or ad level when you need a different value. Useful if one campaign uses a different naming convention than the rest of the account.

Recommended account-level Final URL suffix:

utm_source=google&utm_medium=cpc&utm_campaign={_campaign}&utm_term={keyword}&utm_content={adgroupid}

The underscore-prefixed {_campaign} is a custom parameter you define at the campaign level (Settings → Custom parameters). This lets you set the campaign value to your team's lowercase-hyphenated convention rather than Google's default capitalization.

What about Microsoft Bing Ads?

Bing has its own auto-tag (msclkid) and supports the same URL parameter system as Google. The recommended manual UTM template:

utm_source=bing
utm_medium=cpc
utm_campaign={CampaignName}
utm_term={keyword}
utm_content={AdId}

Same source-medium pair as Google so paid-search reporting groups correctly across both engines.

Validating the setup

Three checks after launching a Google Ads campaign:

  1. Click your own ad and inspect the URL. Confirm the gclid is present and (if manually tagging) the UTMs are correct. Note: clicking your own ad in production wastes budget; use the Ad Preview and Diagnosis tool instead.
  2. GA4 Realtime view. Open a fresh incognito session. The expected attribution should show up: Source: google, Medium: cpc, Campaign: <your value>.
  3. Cross-check at 24 hours. Compare Google Ads' click count for the day to GA4's session count for the same campaign. A 5 to 15 percent gap is normal (ad-blockers, cookie consent rejection). A 50 percent gap is a tracking issue.

Common paid-search UTM mistakes

  • Manual UTMs that do not match GA4's channel grouping. utm_medium=ppc works (in the list). utm_medium=paidsearch works. utm_medium=googleads does not.
  • Auto-tag disabled but no manual UTMs in place. Traffic falls into direct. Either enable auto-tag or add manual UTMs.
  • Mixed manual tags across ad variants. Some ads tagged, some not, leading to split attribution.

For the manual-UTM cases (Bing, partner placements, anywhere auto-tag does not apply), the free Trakl UTM builder keeps the values lowercase and the medium inside GA4's channel-grouping list.

  • utm_campaign carrying the platform's default capitalization. utm_campaign=Brand Q2 Launch (Search) becomes Brand%20Q2%20Launch%20(Search). Lowercase and hyphenate.

For the broader UTM context, the UTM parameters pillar guide is the foundation. For the channel-by-channel mapping table, utm_source vs utm_medium is the lookup.

Frequently filed

Common questions.

Q.01Should I use auto-tagging or manual UTMs in Google Ads?+

Auto-tagging by default. Google Ads adds a gclid parameter that GA4 reads to attribute the click as Paid Search with the campaign, ad group, keyword, and ad creative attached. Manual UTMs are useful when you need cross-tool consistency (Bing, Facebook also paid) or when GA4 is not your only analytics destination.

Q.02Can I use auto-tagging and manual UTMs together?+

Yes, but with one rule. The manual UTMs win in GA4's attribution. If you set utm_source=google and utm_medium=cpc manually, GA4 reads the manual values and the auto-tagged gclid parameter is used for keyword-level data only. The risk is forgetting to manually tag every variant, which produces mixed attribution.

Q.03Why is my Google Ads showing up as direct traffic in GA4?+

Three common causes. Auto-tagging is disabled (Google Ads → Admin → Account settings → Auto-tagging). The destination URL strips the gclid parameter (some redirect setups do). The visitor opened the ad in an in-app browser that interferes with the gclid handoff (rare).

TT

By the byline

Trakl Team

Editorial team

We build Trakl, a link shortener and UTM tracker for marketing teams. We write here from the cleanup work, support tickets, and campaign reviews that fill the rest of our week. Specifics over slogans, and we cite the source.

Photo: Logan Voss on Unsplash