Guides · Google Ads

Tracking Template vs Final URL Suffix

Tracking template or Final URL suffix? What each field does, where UTMs belong, inheritance traps, and copy-paste setups that survive parallel tracking.

Google Ads gives you two fields that both look like “the place tracking goes.” Picking the wrong one is the most common URL mistake on the platform: parameters that work when you paste a URL in a browser but vanish in production, UTMs on some clicks and not others, paid traffic landing as Direct for no obvious reason.

The tracking template controls the URL’s structure. The Final URL suffix controls its parameters.

Only adding UTMs? Use the Final URL suffix. Routing clicks through a redirect or third-party click tracker? You need the tracking template as well.

Full account-level patterns live in the Ideal tracking template setup. Naming and audits: UTM naming conventions, optimise UTM tags, monitor and fix UTM issues.

Side-by-side

Tracking template Final URL suffix
Purpose URL structure the click travels through Query parameters on the landing page URL
Must contain {lpurl} Yes No — {lpurl} does not belong here
Typical contents {lpurl}, or a redirect wrapping {lpurl} utm_*, ValueTrack, custom params
Survives redirects It is the redirect (or sits in front of one) Yes — reattached to the final landing URL
Parallel tracking Only if your tracker supports it Yes, by design
Where UTMs belong No Yes
Levels Account, campaign, ad group, ad, keyword, sitelink, asset
Inheritance Most specific level wins — does not merge
Ad review No at account / campaign / ad group; ad-level URL edits can trigger review
Built-in test Yes (Test next to the field) No

What the tracking template does

It is a URL pattern. At click time Google substitutes {lpurl} with your final URL and sends the user to the result. That makes it the only correct place for anything that must sit in front of the landing page — redirect click tracker, affiliate hop, similar.

No redirect? A complete production template is one ValueTrack token:

{lpurl}

With a click tracker:

https://track.example.com/click?url={lpurl}&cid={campaignid}

Paste-ready stacks: HubSpot, ClickCease, ClickPatrol, or merge in the template builder.

{lpurl} encoding

Encoding depends on where {lpurl} sits — this breaks chained redirects when you guess wrong:

VariantBehaviour
{lpurl}Context-dependent encoding
{unescapedlpurl}Never encoded
{escapedlpurl}Encoded once
{lpurl+2}Encoded twice — one redirect hop
{lpurl+3}Encoded three times — two hops

Each hop that re-encodes the destination consumes a layer. Count hops, pick the variant. Full token list: Google Ads ValueTrack reference.

What the Final URL suffix does

A plain query string — no leading ?:

utm_source=google&utm_medium=cpc&utm_campaign={campaignid}

Google appends it to the landing URL and picks ? vs & correctly whether the page already has a query string.

Two reasons UTMs live here:

A production-grade suffix

utm_source=google&utm_medium=cpc&utm_campaign={campaignid}&utm_content={adgroupid}&utm_term={keyword}&utm_id={campaignid}&matchtype={matchtype}&device={device}&network={network}&creative={creative}&targetid={targetid}

Trim to what you report on. Every extra key lengthens the URL and adds something that can be wrong.

IDs instead of names

Prefer {campaignid} over {campaignname}. IDs are immutable; rename a campaign and name-based rows split into before/after ghosts in GA4. Resolve IDs to labels in BI or a sheet. No join layer? Use names and treat renames as data-breaking.

Custom parameters ({_name})

User-defined ValueTrack variables for values Google cannot derive:

Name: _channel     Value: brand-search
Name: _agency      Value: inhouse
Name: _lpvariant   Value: v3
utm_source=google&utm_medium=cpc&utm_content={_channel}&lp={_lpvariant}

Up to 8 per level, names ≤16 characters, values ≤250. Underscore prefix; names are case-insensitive. Inheritance trap: a more specific level replaces the whole custom-parameter set above — it does not merge. Restate the full set wherever you override.

The inheritance rule that causes most bugs

Both fields can be set at account, campaign, ad group, ad, keyword, sitelink and asset. Most specific wins and overrides completely — no merge.

A keyword-level suffix does not “add to” your account suffix; it replaces it. That is the usual root cause of “half our clicks have no UTMs” — an orphaned ad/keyword override from years ago.

Configuration that avoids this

  1. Tracking template at account (one source of truth).
  2. Final URL suffix at account with global params.
  3. Campaign overrides only when required (second brand redirect, etc.) — and restating the full suffix if you touch it.
  4. Nothing at ad / keyword / sitelink / asset unless documented.
  5. Audit orphans via Google Ads API or Editor export before trusting reports.

Changing template or suffix at account, campaign or ad group does not send ads back for review. Ad-level URL edits can.

Decision guide

Need a redirect / third-party click tracker?

Need a value ValueTrack cannot provide? Custom parameter → reference from the suffix.

Only want UTMs? Suffix only. Leave template at {lpurl} or empty.

Copy-paste setups

A — UTMs only (most accounts)

Tracking template:
{lpurl}

Final URL suffix:
utm_source=google&utm_medium=cpc&utm_campaign={campaignid}&utm_content={adgroupid}&utm_term={keyword}&utm_id={campaignid}

B — Click tracker + UTMs

Tracking template:
https://track.example.com/click?cid={campaignid}&url={lpurl}

Final URL suffix:
utm_source=google&utm_medium=cpc&utm_campaign={campaignid}&utm_content={creative}

C — Two brands, shared suffix

Account tracking template:   {lpurl}
Brand B campaign template:   https://trackb.example.com/c?url={lpurl+2}
Account final URL suffix:    utm_source=google&utm_medium=cpc&utm_campaign={campaignid}

Leave the suffix at account only so both brands inherit the same UTM set.

Migrating parameters out of the tracking template

  1. Export every template and suffix at every level before changing anything.
  2. Split: redirect / structure stays in the template; query params after {lpurl} move to the suffix (drop leading ? / &).
  3. Set the account suffix first, then strip those params from the template.
  4. Use the template Test button — it checks destination reachability, not semantic correctness of UTMs.
  5. Click a real ad (or resolve the URL) and inspect the address bar after redirects.
  6. Confirm in GA4 Realtime (session source/medium).
  7. Compare clicks and conversion rate for ~48 hours against the prior period.

Common failures

SymptomLikely cause
Params in a browser paste, absent in production Params in the template eaten by a redirect — move to suffix
Some clicks tagged, others not Orphaned ad / keyword / sitelink override
google / (not set) in GA4 utm_source without utm_medium, or missing suffix on that slice
Paid → Direct Landing / CDN / consent / trailing-slash redirect stripping query strings
Google / cpc and google / cpc as two rows Mixed-case UTM values — enforce lowercase
page?id=5?utm_source=google Hand-appended literal ?; use the suffix so Google joins correctly
Template rejected on save Missing {lpurl} in template, or {lpurl} wrongly in the suffix
Empty parameter values Expected when ValueTrack does not apply (e.g. {placement} on Search)
Truncated params URL too long — drop keys you do not report on

Keep auto-tagging on

None of this replaces auto-tagging. Leave it enabled: gclid (and wbraid / gbraid where privacy requires) powers Google Ads conversion tracking, offline imports, enhanced conversions and GA4’s Google Ads link.

Auto-tagging and manual UTMs coexist. GA4 prefers manual UTM values when both exist — so your utm_source must be lowercase google and utm_medium lowercase cpc, or you override a correct auto-tagged classification with a bad manual one.

FAQ

Should UTMs go in the tracking template or the Final URL suffix?

The Final URL suffix. They survive redirects and parallel tracking. Reserve the template for redirect structure.

Do I need a tracking template if I only want UTMs?

No. Leave it as {lpurl} or empty; put parameters in the suffix.

Does the Final URL suffix need {lpurl}?

No. {lpurl} belongs only in the tracking template. Google requires it there.

Do suffixes at different levels combine?

No. The most specific level replaces the higher one. Restate every parameter when you override.

Will changing these fields restart learning?

Account / campaign / ad group changes do not send ads for review. Ad-level URL changes can.

How many custom parameters?

Eight per level (name ≤16, value ≤250). More specific levels replace rather than merge.

Can I use auto-tagging and UTMs together?

Yes — and you should. Auto-tagging feeds Google Ads; UTMs feed GA4 and other analytics.

Why do some parameters resolve empty?

ValueTrack returns an empty string when the parameter does not apply to that click. Normal, not a misconfig.

Related

← All guides · Documentation · Recipes