The manual way comes first, in Google Ads itself. Then the same problem as Goldbeater finds it, every day, without anyone asking.
UTM parameters belong in the final URL suffix.
Each ad’s URL options have two fields for tracking, and they do different jobs:
- Final URL suffix. Parameters Google adds to the end of your landing page URL, where your analytics reads them.
- Tracking template. Tracking information for click measurement, with {lpurl} where your final URL goes. Google calls it an advanced feature for advertisers who use a third-party click tracker, and says most advertisers won’t need one.
The difference is where each one goes after a click. Google sends people straight from the ad to your final URL and loads the tracking template in the background. It calls this parallel tracking, and it’s mandatory for Search, Shopping, Display, Video and Performance Max campaigns.
So Google’s developer documentation says parameters your landing page needs must go in the final URL suffix, or in the final URL itself, rather than the tracking template. UTM parameters are read on the landing page, so they belong in the suffix.
| Field | Value |
|---|---|
| Final URL | https://example.com/sofas |
| Final URL suffix | utm_source=google&utm_medium=cpc |
| Landing page | https://example.com/sofas?utm_source=google&utm_medium=cpc |
A template full of UTM parameters isn’t broken. Google’s own examples show a template that begins {lpurl}? carrying its parameters to the landing page. It’s in the field meant for something else, though, and it can collide with a suffix, as the fifth section shows.
A template's ? is safe, even when the final URL has one.
The usual worry is a product page whose final URL already has a question mark, such as /sofas?color=oak, under a template that adds another. Two question marks in one address would break the parameters after the second.
Google prevents it. In its words: “If your final URL already contains a question mark, Google Ads will replace the question mark in your tracking template with an ampersand (&).”
| Field | Value |
|---|---|
| Final URL | https://example.com/sofas?color=oak |
| Tracking template | {lpurl}?utm_source=google |
| Landing page | https://example.com/sofas?color=oak&utm_source=google |
That holds for a template that begins with {lpurl}, which Google says to follow with a ?. Where {lpurl} sits inside a click tracker’s address instead, Google escapes your final URL, and what follows it is %3F. Your tracker’s own instructions give its exact format.
Two things do break a landing page, by Google’s account:
- A template without {lpurl} at the account, campaign or ad group level. Google says a template there must insert your final URL, or your landing page URL will break.
- A final URL with an anchor (#). When a template adds parameters to the end of a final URL with an anchor, Google says all the tracking parameters must go in the final URL itself.
Only the most specific template applies, and it replaces the rest.
A template can be set on the account, a campaign, an ad group, an ad or a keyword. Google uses one for each click, the most specific: the keyword’s, then the ad’s, the ad group’s, the campaign’s, and last the account’s.
It doesn’t combine them. Google’s developer documentation says the template and the final URL suffix are each taken from the lowest level that has one, separately. Whatever is set higher up doesn’t reach that click.
So a level with its own template or suffix has to carry everything. An ad group whose suffix sets only utm_content sends none of the account suffix’s parameters.
| Field | Value |
|---|---|
| Account suffix | utm_source=google&utm_medium=cpc |
| Ad group suffix | utm_content=oak |
| Landing page | https://example.com/sofas?utm_content=oak |
A custom parameter no level gives a value arrives empty.
A custom parameter is a name and a value you set, such as campaign and sofas, and use in a template, suffix or final URL as {_campaign}. Google lets you set up to 8 on a campaign, an ad group, an ad or a keyword, and none on the account.
Unlike templates, custom parameters from different levels combine. Google looks each name up on its own and takes the value from the lowest level that sets it: if an ad group sets {_color} to red and one of its ads sets it to blue, that ad’s clicks carry blue.
A name that no level sets doesn’t break the address. Google puts nothing in its place, so the parameter it fills arrives with no value. So does one whose lowest level sets it to nothing, since that value wins over any above it.
| Field | Value |
|---|---|
| Final URL | https://example.com/sofas |
| Campaign suffix | utm_source=google&utm_campaign={_campaign} |
| Landing page | https://example.com/sofas?utm_source=google&utm_campaign= |
How to find every template and suffix in an account
Templates and suffixes can sit at any of those levels, so read each one.
- Go to Admin › Account settings and open the Tracking section. Note the account’s tracking template and final URL suffix.
- Go to Campaigns › Campaigns and select the Settings tab. Add the Tracking template column: select the columns icon above the table, then Modify columns, expand Attributes, select Tracking template and Apply. A campaign with its own template shows it there.
- Do the same on Campaigns › Ad groups and on Campaigns › Audiences, keywords, and content › Search keywords.
- Hover over an entry in the column and select the pencil. The Final URL suffix field is in the same place as the template.
- For ads, go to Campaigns › Ads, hover over an ad, select the pencil, then Edit, and expand Ad URL options.
- Custom parameters sit beside them: a campaign’s under Campaign URL options in its settings, an ad group’s in the Custom parameter column, and an ad’s under Ad URL options.
- Select Test beside a template. Google combines your final URL with the tracking you set up and shows the landing page it leads to. The Dynamic Search Ads guide covers the ads whose landing page Google chooses.
Google’s help also points to a Tracking template source column, which shows which template applies. Then look for four things:
- UTM parameters in a template rather than a suffix.
- A template or suffix lower down that leaves out parameters the account sets. Clicks under it arrive without them.
- A {_name} in a template or suffix with no custom parameter of that name at any level that reaches the ad. It arrives empty.
- The same UTM parameter set in a template and in a suffix that apply to the same ad. That’s the next section.
A parameter set in both the template and the suffix arrives twice.
Take a campaign whose template is {lpurl}?utm_source=google, and an ad in it with its own suffix, utm_source=sale. Google applies both, because it chooses the template and the suffix separately: it adds the suffix to the final URL, then puts that address where {lpurl} is in the template.
| Field | Value |
|---|---|
| Final URL | https://example.com/sofas |
| Campaign template | {lpurl}?utm_source=google |
| Ad suffix | utm_source=sale |
| Landing page | https://example.com/sofas?utm_source=sale&utm_source=google |
Google Ads has built the address the way it documents. Which utm_source counts is up to whatever reads the address on your site:
- Google Analytics, with auto-tagging on. Google turns auto-tagging on by default for new accounts. When a click carries auto-tagging and UTM parameters together, Google Analytics takes source, medium and the other traffic-source dimensions from auto-tagging, and Google says it has no option to put the UTM values first.
- Google Analytics, where it can’t use the click’s GCLID, the identifier auto-tagging adds. It then takes every source dimension from the UTM parameters. Its help doesn’t say which copy of a repeated parameter it reads.
- Anything else that reads the address, such as another analytics tool, or a form on your site that saves UTM values with each lead. Each follows its own rule.
So don’t leave it to the tool. Keep each UTM parameter in one place, which is what the next section does.
Move UTM parameters to the final URL suffix
Leave a click tracker’s template where it is. Move only the UTM parameters.
- Write the parameters once, without a ? in front, joined by &: utm_source=google&utm_medium=cpc. ValueTrack parameters work in a suffix as they do in a final URL, so utm_id={campaignid} records each campaign’s ID.
- Put them in the account’s suffix: Admin › Account settings, the Tracking section, the Final URL suffix field, then Save. Google doesn’t send ads back to review for a change at the account, campaign or ad group level. A change on an ad, keyword or sitelink does go through review.
- Take the UTM parameters out of every template you found. If a template held nothing else, clear it.
- Where a campaign or ad needs its own values, give it its own suffix with the whole set, because it replaces the account’s rather than adding to it.
- Select Test on each template you changed. Google says template changes take 24 to 48 hours to reach your ads, so read your analytics after that.
What Goldbeater shows you
Every day Goldbeater reads the tracking template, final URL suffix and custom parameters at every level: the account, each campaign, ad group and ad, each Performance Max asset group, and each keyword’s own. It raises three things, each read from the account’s settings:
- A custom parameter that arrives empty. A {_name} in the template, suffix or final URL an ad or asset group uses that no level gives a value. Medium where it sits above the ad and reaches many, low on one ad.
- Auto-tagging switched off while a conversion action your bidding counts relies on the click ID: high for a Google Analytics import or an offline import, which Google says need auto-tagging, and medium for website tags alone, which it says need it to record on all browsers.
- A click ID pasted into a final URL. A gclid, srsltid or fbclid copied in with an address, so every click on the ad carries one old click’s ID. Low: it’s cleanup.
Each finding says where the parameter or the address is, and what to change. Before auto-tagging goes on, the finding gives Google’s test for whether your site accepts the click ID, since a small share of sites show an error page when it arrives. The GCLID guide walks through that test and shows the finding.
{_campaign} in the final URL suffix of Sofas — Phrase arrives empty on 6 of its 9 ads
Sofas — Phrase
Clicks reach the landing page with utm_campaign empty, because no custom parameter named campaign is on the ad, its ad group or its campaign.
| Corner sofas | 2 | $201 |
| Leather sofas | 2 | $366 |
| Velvet sofas | 2 | $636 |
Auto-tagging switched off while conversions your bidding counts rely on it, a custom parameter your tracking uses that nothing gives a value, so it arrives empty, or one click's ID pasted into a final URL, so every click carries it. The spend is real, and the record of where it came from is lost or wrong.
Add a custom parameter named campaign with a value: on the campaign, under Campaign URL options in its settings, it reaches everything in the campaign, and a lower level's own value overrides it. Or take {_campaign} out of the final URL suffix.
The steps under What to do are the fix. Goldbeater drafts no change for this one.
This is “Clicks arriving untracked, or tracked wrong” on a sample account. See what it finds in your own account and what the fix is worth, and ask your AI analyst about any finding.
Get a free first lookQuestions
- What’s the difference between a tracking template and a final URL suffix?
- The suffix holds parameters Google adds to the end of your landing page URL. The template holds tracking information for click measurement, which Google loads in the background while the visitor goes straight to your page.
- Does a tracking template break a final URL that already has a question mark?
- No. When the final URL already contains a question mark, Google replaces the one in your template with an ampersand.
- Which tracking template does Google use when several are set?
- The most specific: the keyword’s, then the ad’s, the ad group’s, the campaign’s and the account’s. The others don’t apply to that click at all, and the final URL suffix works the same way.
- Should UTM parameters go in the tracking template?
- Put them in the final URL suffix. Google’s developer documentation says parameters your landing page needs belong there, or in the final URL, rather than in the template.
- What happens to a custom parameter that isn’t set?
- Google puts nothing in its place, so the parameter it fills arrives empty. Set it on the campaign to reach every ad in it, or take it out of the template or suffix.
- What happens if utm_source is set twice?
- The landing page gets both copies, and whatever reads the address decides which counts. Google Analytics’ help doesn’t say which it reads, so set each parameter in one place.