About 1 in 8 Google Ads accounts audited in 2026 carries at least one tracking template that quietly mangles its own click URLs — and the damage is double-edged: the ad gets disapproved for "destination not working" while the gclid that powers your conversion data leaks away. URL errors feel like a niche technical problem, but they sit upstream of everything you measure, so a single bad template can both stop delivery and corrupt the numbers you bid on.
This guide untangles tracking templates and ValueTrack parameters, explains exactly why final URLs fail review, and gives you a repeatable way to build, test and ship URLs that pass policy and pass data. To scan your account for broken destinations and tracking gaps automatically, run our free 5-axis Google Ads audit.
Updated 2026-05-25 with current tracking-template validation, ValueTrack behavior, and Consent Mode interaction observed across US, UK and European accounts.
- Destination not working is about the assembled click URL, not the page you see — fix the template, not the page. 2. Keep the lpurl token first and let auto-tagging add the gclid. 3. Redirects and consent banners are the top causes of a dropped gclid. 4. The final URL suffix carries UTM parameters more safely than a prepended click tracker. 5. Test twice — the in-product button plus one real live click — before shipping to a whole account.
What are tracking templates and ValueTrack parameters?
Google Ads splits the address a user reaches into two decoupled fields, and understanding the split is the whole game.
Final URL: the actual landing page — the destination a user sees. It must resolve to a working page on your display domain.
Tracking template: a separate field that tells Google how to assemble the click URL by wrapping or appending tracking around the final URL. It uses the {lpurl} ValueTrack token as a placeholder for the encoded final URL.
ValueTrack parameters: dynamic placeholders Google replaces at click time. The {lpurl} token becomes your final URL; tokens like {campaignid}, {adgroupid}, {keyword} and {device} inject auction details so you can attribute clicks without hand-coding values.
The decoupling is the point: you set tracking once at the account, campaign, ad group or keyword level, and every final URL inherits it. Change a measurement vendor and you edit 1 field, not 500 ads. For the foundations of measurement that this feeds, see our conversion tracking guide.
Why do final URLs fail with "destination not working"?
"Destination not working" is a policy disapproval, and it almost never means your landing page is down. It means Google's crawler followed the assembled click URL — template plus encoded final URL plus parameters — and could not reach a valid page. There are five recurring causes.
Broken encoding — When {lpurl} is not kept first, or a parameter value contains an un-encoded space or symbol, the stitched URL becomes malformed and resolves to nothing.
Redirect chains — A final URL that 301-redirects through 2 or 3 hops can drop parameters or exceed the crawler's tolerance, so the destination "does not work" even though a human eventually lands.
Domain mismatch — Google checks that the final URL and display URL share a domain. Route the click through a tracker on another domain without configuring it correctly and the check fails.
Timeouts and errors — A slow server, a 404 on a stale page, or a 5xx during the crawl all read as a broken destination.
Parameter collisions — Defining the same parameter twice, or appending ? where one already exists, produces an address the server rejects.
For the broader disapproval taxonomy this fits into, see our disapproved ads and policy violations guide.
How to build a correct template with lpurl and gclid
A correct template is almost always boring, and boring is the goal. Build it in this order.
Start with the token — Put {lpurl} first, then a question mark, then your parameters joined by ampersands. The token expands to your URL-encoded final URL, so everything after the ? becomes query parameters on that destination.
Let auto-tagging own the gclid — Do not hard-code a gclid into the template. Turn on auto-tagging at the account level and Google appends the gclid to every click. That is what conversion import and Enhanced Conversions match on, so let Google manage it rather than risk a stale or duplicated value.
Keep it minimal — Add only parameters you will actually read. Every extra token is one more thing that can break encoding or collide.
Use the suffix for appends — If all you need is to add UTM tags, prefer the final URL suffix over a template; it appends parameters without wrapping the address, so it survives redirects more reliably. Reserve the template for routing clicks through a third-party measurement service.
If you are wiring this into a server-side setup, our server-side GTM guide covers how the gclid flows downstream.
How to pass UTM and custom parameters cleanly
Clean parameters are the difference between analytics you trust and a tangle of mismatched sources. Four rules keep them tidy.
One source of truth — Decide whether UTM tags live in the final URL suffix or the tracking template, and never split them across both. Duplicated UTM values are the most common cause of GA4 source/medium chaos.
Match GA4 and Ads — Keep your utm_source, utm_medium and utm_campaign consistent with how the click is auto-tagged, so imported conversions line up. Our GA4 setup and conversion import guide shows the mapping in detail.
Encode every value — A space, an ampersand, or an accented character inside a value must be URL-encoded or it will truncate the query string. Build your tags with a tool rather than by hand — our UTM builder encodes values for you.
Prefer ValueTrack over hard-coding — Use {campaignid} or {keyword} instead of typing campaign names; the dynamic token is always correct and never drifts when you rename things.
How to test URLs before they go live
Most URL disasters are caught in 5 minutes of testing and missed entirely without it. Run two independent checks.
The in-product Test button — Beside the tracking template field, the Test button expands every ValueTrack token and opens the assembled URL. Confirm it returns a 200 page on the correct domain with your parameters present. This catches encoding and syntax errors instantly.
A real live click — The in-product test does not simulate redirects or consent banners, so finish with a real click. Enable auto-tagging, click a live ad on a test device, and watch the address bar through every hop. Confirm the gclid and your UTM parameters reach the final rendered page.
Analytics confirmation — Open your real-time analytics view and verify the click registers with the right source/medium. If the gclid is present in the URL but the session shows as direct, you have a downstream tagging or consent problem, not a template problem.
Treat any template change as a deploy: test on 1 ad, confirm, then roll out.
The URL-error fix table
Work this table top to bottom — it is ordered from the fastest, most common fix to the deepest.
Typing a fixed gclid value, or copying one from a past click, sends every visitor in with the same click ID — so conversion import matches them all to a single click and your data collapses. Let auto-tagging append a fresh, unique gclid at click time. If you see a literal gclid sitting in your tracking template, remove it before you do anything else.
How tracking templates interact with redirects and consent
The last mile — redirects and consent — is where correctly built templates still lose data, so it deserves its own checklist.
Redirects — Every 301 or 302 between the click and the final page is a chance to drop the query string. If you must route through a redirect, confirm it forwards all parameters, and keep the chain to 1 hop. A redirect to a different domain also risks the "destination not working" disapproval.
Consent Mode — Under Consent Mode v2, a banner that reloads or rewrites the URL before the user consents can strip the gclid from the address. Configure the banner to preserve query parameters across the consent interaction, and confirm the gclid is still present after the user accepts.
HTTP and www hops — A silent redirect from HTTP to HTTPS, or from a bare domain to www, counts as a hop. Set your canonical so the click lands on the final form directly.
Server-side recovery — If front-end loss is unavoidable, capture the gclid server-side on the first request and persist it. The same pattern underpins offline conversion imports, where the gclid travels with the lead back into Google Ads.
Once the path is clean, lock it in: re-test after any landing-page or CMS change, and audit URLs before every major launch. To find broken destinations and dropped parameters across a whole account at once, run the SteerAds free 5-axis audit.
Sources
Official sources consulted for this guide:
-
support.google.com — about tracking templates
-
support.google.com — ValueTrack parameters
-
support.google.com — set up tracking for URLs
-
developers.google.com — upload click conversions (gclid)
FAQ
What does 'destination not working' mean in Google Ads?
It means Google's crawler followed the URL your tracking template produced and could not reach a working landing page — it timed out, returned a 4xx or 5xx error, looped through redirects, or landed on a domain that does not match your display URL. The disapproval is about the assembled click URL, not the page you see in your browser, so the most common cause is a template that builds a malformed address once the lpurl token and parameters are stitched together. Fix the template, resubmit, and the review usually clears within one business day.
What is the lpurl token in a tracking template?
The lpurl token is a ValueTrack placeholder that Google replaces with your final URL at click time, URL-encoded so it can be carried safely as a parameter. A tracking template typically starts with that token followed by your tracking parameters, for example the lpurl token then a question mark then your UTM tags. Because the landing page is injected dynamically, you can change tracking once at the account level instead of editing every ad. Always keep the lpurl token first unless you are intentionally routing through a click tracker that expects an encoded destination.
Why is my gclid not passing to my landing page?
A dropped gclid almost always traces to a redirect or a template that overwrites the query string. If your final URL 301-redirects to another address, many setups strip the original parameters unless the redirect explicitly forwards them. Consent banners that reload the page, JavaScript that rewrites the URL, and HTTP-to-HTTPS or www hops are the usual culprits. Test the full click path end to end: click a real ad, watch the address bar, and confirm the gclid survives every hop from the first request to the final rendered page.
What is the difference between a final URL and a tracking template?
The final URL is the actual page a user lands on — the destination. The tracking template is a separate field that tells Google how to assemble the click URL by wrapping or appending tracking information around that final URL using the lpurl token. The two are decoupled on purpose: you can update tracking at the account, campaign, ad group or keyword level without touching a single final URL. Google validates that the template plus the final URL resolve to the same landing domain, which is why a mismatch triggers 'destination not working'.
Do tracking templates affect conversion tracking and Smart Bidding?
Yes, directly. If the template drops the gclid, imported conversions and Enhanced Conversions cannot be matched back to the click, so your conversion counts fall and Smart Bidding loses the signal it optimizes on. Even a partial loss — say one redirect hop that strips parameters on mobile only — quietly biases your data and your bids. This is why URL errors are not just a policy nuisance: a broken template starves the algorithm. Validate the gclid survives before you trust any ROAS or CPA number from that campaign.
Can I use both a tracking template and final URL suffix together?
Yes, and for most accounts the final URL suffix is the cleaner tool for appending parameters. The suffix attaches your tracking parameters to the final URL without wrapping it, so it survives redirects better than a template that prepends a click tracker. Use the tracking template when you must route clicks through a third-party measurement or redirect service, and use the final URL suffix when you simply want UTM or custom parameters carried through. They can coexist; just make sure the same parameter is not defined twice with conflicting values.
How do I test a tracking template before ads go live?
Use the built-in Test button next to the tracking template field — it expands the ValueTrack tokens and opens the assembled URL so you can confirm it resolves. Then do a real-world check: enable auto-tagging, click a live ad on a test device, and verify the gclid and your UTM parameters all reach the rendered landing page. Pair the in-product test with a parameter inspector or your analytics real-time view. Never ship a new template to a whole account without both checks, because the in-product test does not catch redirect-stage parameter loss.