TrackFunnels

UTM Parameters

Chapter 20 — Using UTM Parameters in Paid Search & PPC

Shad Malik
By Shad Malik Updated on Feb 17, 2026

Paid search burns budget fast. Clean UTM tagging keeps every click grouped as paid search, lets you compare engines side-by-side, and protects downstream joins in BI and CRM. This chapter shows the safest patterns for Google Ads, Microsoft Ads, and other engines—without breaking auto-tagging.

The PPC UTM Switchboard: three choices that set your build

Use this quick mental model before you tag:

  • Engine: Google Ads, Microsoft Ads, or another engine
  • Tagging mode: Auto-tagging on (gclid/msclkid/auto-UTM) or manual template
  • Data needs: GA-only or external tools (warehouse, BI, CRM) also need UTMs

Rules of thumb:

1) Always set utm_medium=cpc and keep utm_source equal to the engine in lowercase (google, bing, yandex, baidu, yahoo-jp).

2) If Google Ads auto-tagging is on and GA4 is linked, keep gclid. Add neutral UTMs via Final URL Suffix for non-GA tools.

3) If auto-tagging is off or you use a non-Google analytics stack, apply an account-level tracking template. Pass a clean campaign code via a custom parameter.

Tag PPC with stable source/medium so analytics groups clicks correctly

Use a consistent core set so all engines roll up cleanly:

  • utm_source: engine name (google, bing, yandex, baidu, yahoo-jp)
  • utm_medium: cpc (stay consistent; avoid ppc/paidsearch here)
  • utm_campaign: campaign identifier or human-readable code
  • utm_term: keyword or actual query (choose the right token per engine)
  • utm_content: ad/creative variant or match/device markers (optional)
For a cybersecurity vendor running Google Ads and Microsoft Ads to a gated report, tagging clicks as google/cpc and bing/cpc enables accurate CAC comparison for “Report Download” leads in one view.

With Google Ads auto-tagging on, add neutral UTMs via Final URL Suffix

Keep gclid enabled. GA4 will attribute using gclid when linked. To support third-party tools, add a neutral Final URL Suffix at the account level:

  • utm_source=google&utm_medium=cpc&utm_campaign=gads_{campaignid}&utm_term={searchterm}&utm_content=ag_{adgroupid}_cr_{creative}

Notes that prevent data loss:

  • {campaignid} is stable and ideal for joining to a warehouse. If you need a readable name in the URL, set a custom parameter at campaign level like {_cn}=EMEA_Brand_Q2_2026 and use utm_campaign={_cn}.
  • {searchterm} captures the user’s query, including DSA/PMax. {keyword} returns the matched keyword and can be blank in those formats.
  • This suffix works with parallel tracking and does not break gclid.
A cloud HR software team running both PMax and Search can set utm_campaign=gads_{campaignid} to join by ID and label performance “PMax – Enterprise – Q2” in their warehouse.
Myth Debunk:
Turning on Google Ads auto-tagging means you cannot use UTMs. False. You can safely add neutral UTMs in the Final URL Suffix. GA uses gclid; your BI stack reads the UTMs. Both can live together.

If you disable auto-tagging, use an account-level tracking template

When auto-tagging is off—or you’re reporting to a non-Google stack—standardize UTMs with a tracking template:

Account-level tracking template:

  • {lpurl}?utm_source=google&utm_medium=cpc&utm_campaign={_cn}&utm_term={keyword}&utm_content=ag_{adgroupid}_cr_{creative}

How to set {_cn}:

  • At the campaign level, add a custom parameter {_cn} equal to your campaign name or code, for example US_Competitor_Q3_2026.
An industrial IoT team that reports only to a warehouse can rely on this template to get google/cpc everywhere, put the keyword into utm_term, and keep a readable code in utm_campaign.

Microsoft Ads: choose auto-UTM or a manual template, but not both

Option A — Auto-UTM (fast, safe default):

  • Settings > Accounts > UTM Tagging > Turn on “Add UTM tags to my URLs.”
  • Microsoft will append utm_source=bing, utm_medium=cpc, and core fields like campaign, term, and content.

Option B — Manual template (full control):

  • {lpurl}?utm_source=bing&utm_medium=cpc&utm_campaign={Campaign}&utm_term={QueryString}&utm_content=ag_{AdGroup}-ad_{AdId}

Token choice:

  • {Keyword} is your bidded term and can be blank for DSA. Use {QueryString} to capture the actual user query.
A SaaS security team running RSAs and DSAs keeps auto-UTM on so DSAs still populate utm_term with the real query via {QueryString}.

Use engine tokens to auto-fill utm_term and utm_content

Keep sources lowercase and use each engine’s tokens for term/query. Templates below assume you keep utm_medium=cpc.

Platform utm_source Keyword token Query token
Yahoo Japan Ads yahoo-jp {keyword} {query}
Yandex Direct yandex {keyword} {phrase}
Baidu baidu {keyword} {querystring}

Templates:

Yahoo Japan Ads

  • {lpurl}?utm_source=yahoo-jp&utm_medium=cpc&utm_campaign={campaignid}&utm_term={query}&utm_content=ad_{adid}

Yandex Direct

  • {lpurl}?utm_source=yandex&utm_medium=cpc&utm_campaign={campaign_id}&utm_term={phrase}&utm_content=ad_{ad_id}

Baidu

  • {lpurl}?utm_source=baidu&utm_medium=cpc&utm_campaign={campaignid}&utm_term={querystring}&utm_content=ad_{creative}
A robotics integrator entering Japan uses {query} in utm_term on Yahoo Japan Ads so their team can segment “industrial robot safety” searches in Looker.

Use utm_content to tag ad and variant signals for cross-tool analysis

Ad platforms report creative details, but UTMs make it easy to slice sessions and leads in your warehouse or CRM.

  • ag_{adgroupid}_cr_{creative}
  • {matchtype}_{device}
  • cta_tco or cta_costs for different messages
An enterprise database team testing “Get the TCO Guide” vs “Lower Your DB Costs” sets utm_content=cta_tco or cta_costs to compare landing-page engagement by ad message in BI.

Keep all PPC clicks in one channel with cpc and lowercase sources

  • Always use utm_medium=cpc for search ads.
  • Keep engine names lowercase: google, bing, yandex, baidu, yahoo-jp.
  • Put brand/non-brand in utm_campaign, not in utm_medium.
A B2B payments team once mixed utm_medium=ppc and cpc. Standardizing on cpc fixed the paid search rollup and ended budget disputes.

QA steps that prevent broken PPC redirects from stripping UTMs

Do this before bulk changes:

  • Use the platform’s test URL or preview. Confirm a 200 status on the landing page.
  • Check that UTMs survive all redirects. Spaces must be URL-encoded (%20 or +).
  • Avoid double question marks. If the landing page already has a query string, rely on the platform to insert “&” safely or adjust your template structure.
  • For DSA and PMax, verify utm_term uses a query token ({searchterm} in Google, {QueryString} in Microsoft). {keyword} can be empty.
A logistics software team caught a “double ?” in QA that dropped UTMs on mobile behind a CDN. Fixing the template preserved utm_source and utm_medium on every click.

PPC tagging recipes you can paste today

Scenario What to do Minimal example
Google Ads + auto-tagging ON + GA4 linked Keep gclid. Add neutral UTMs in Final URL Suffix for external tools. utm_source=google&utm_medium=cpc&utm_campaign=gads_{campaignid}&utm_term={searchterm}&utm_content=cr_{creative}
Google Ads manual (auto-tagging OFF) Account-level tracking template + {_cn} at campaign level. {lpurl}?utm_source=google&utm_medium=cpc&utm_campaign={_cn}&utm_term={keyword}&utm_content=ag_{adgroupid}
Microsoft Ads auto-UTM Turn on “Add UTM tags to my URLs.” Validate fields. Auto-appended: source=bing, medium=cpc, campaign, term, content
Microsoft Ads manual Account-level template with campaign/keyword or query/ad IDs. {lpurl}?utm_source=bing&utm_medium=cpc&utm_campaign={Campaign}&utm_term={QueryString}&utm_content=ad_{AdId}
Other engines Use engine tokens, keep medium=cpc, source=engine. {lpurl}?utm_source=yandex&utm_medium=cpc&utm_campaign={campaign_id}&utm_term={phrase}
TrackFunnels Expert Tip:
Join on IDs, label with names. Store campaign IDs in UTMs (e.g., gads_{campaignid}) so your warehouse joins are stable. Add a custom parameter for a readable name only if you need it in the URL. IDs rarely change; names do.
Try This Now Assignment

Open a live Google ad in Preview.

1) Add this Final URL Suffix at account or campaign level: utm_source=google&utm_medium=cpc&utm_campaign=gads_{campaignid}&utm_term={searchterm}&utm_content=ag_{adgroupid}_cr_{creative}

2) Click the preview. In your browser DevTools > Network, open the final request and confirm:

  • gclid is present (query string)
  • utm_source=google and utm_medium=cpc are present
  • utm_campaign contains the campaign ID

3) Paste the URL into a URL decoder. Confirm spaces or special characters are encoded and not dropped through redirects.

Test your knowledge

Loading quiz questions...