Resources / UTM builder
Build a link you can actually measure
Add tracking tags to any link so you can see, in Google Analytics, which placements actually send you customers. Free, nothing to sign up for, and nothing you type leaves your browser.
The page you want people to arrive on. Paste it exactly as it should open, including any query the page already needs.
Where the link lives: google, facebook, newsletter.
The kind of channel: organic, social, email, cpc.
What you are running: gbp-website, spring-offer.
Which link, or which location: deansgate, header-button.
Your tagged link
https://example.co.uk/?utm_source=google&utm_medium=organic&utm_campaign=gbp-website
- This keeps the traffic inside Organic Search in GA4 and separates it by campaign name, which is the safe option for a Google Business Profile link.
Start from a placement
Fills the tags with a naming pattern that holds up. Your landing page stays as you typed it.
What a UTM tag is, and why it is worth the bother
A UTM tag is a short label you add to the end of a link. Nobody sees it, the page opens exactly as normal, and Google Analytics reads the label and files the visit under a name you chose.
Without one, Analytics has to guess. It uses whatever the browser tells it, which is often nothing useful. A click from your Google Business Profile looks identical to a click from a page ranking in the search results. A click from a QR code on a leaflet looks like somebody typed your address in from memory. Everything ambiguous ends up in a pile called direct, and the pile grows until nobody trusts the numbers.
Tagging the links you control takes that guesswork away. It is the difference between "we got 400 visits from Google" and "the profile sent 140 people, 22 of them rang us, and the flyer drop sent 9".
You tag a link
The address gains a few extra words after a question mark. The page it opens does not change.
Someone clicks it
Analytics reads the tags at the moment their visit starts and stores them against that session.
You read it back
The placement shows up by name in your reports, next to what those visitors went on to do.
The tags, in plain English
Six exist. Two are doing almost all of the work, and one of those decides which report your traffic appears in.
| Tag | What it is for | Examples |
|---|---|---|
| utm_sourceRequired | Where the link lives. The site, app, or piece of paper someone clicked it on. | google, facebook, newsletter, flyer |
| utm_mediumRequired | What kind of channel it is. GA4 uses this one, and only this one, to decide which channel report the visit lands in. | organic, social, email, cpc, referral |
| utm_campaignStrongly recommended | The thing you are running. This is what you will group by when you look back. | gbp-website, spring-offer, may-newsletter |
| utm_contentOptional | Which link, when several point at the same place. The one to use for location names in a multi-location business. | header-button, deansgate, version-b |
| utm_termOptional | The keyword you paid for. Really only useful on manually tagged paid search. | emergency-plumber-manchester |
| utm_idOptional | A campaign ID. GA4 uses it to line a campaign up with cost data you import, so skip it unless you do that. | q3-2026-local |
Five rules that keep the reports readable
Tagging is easy. Tagging consistently, across a year and more than one person, is the part that goes wrong.
Lowercase, always
Analytics does not fold case. Email, EMAIL, and email are three rows that never add up, and there is no way to merge them after the fact.
Never tag an internal link
A tag on a link between your own pages starts a fresh session and overwrites where the visitor actually came from. Your best channel quietly becomes your own website.
Keep the medium list short
Medium is the field Analytics uses to pick a channel. Agree a handful of values, write them down, and do not invent a new one because it reads better in a spreadsheet.
Leave Google Ads alone
Auto-tagging already passes the campaign through. Hand-written tags on Ads links can override it and cost you the keyword and cost data.
Keep tags out of the index
No tagged URLs in your sitemap, your canonical tags, or your internal navigation. A tagged URL that gets crawled becomes a second copy of the page in search results.
Decide the pattern once
One document listing every source, medium, and campaign name you use. It is dull, it takes ten minutes, and it is the only thing standing between you and forty variations of facebook.
Tagging your Google Business Profile links
For a local business this is usually the single biggest blind spot. People find you on Google Maps or in the local results, tap the Website button on your profile, and land on your site. In Analytics that visit looks the same as any other Google visit. In Search Console it does not appear at all, because Search Console does not cover Maps or the profile.
So the traffic your profile sends you, the thing most local SEO work is actually trying to grow, is the traffic you can see least. A tag fixes that in about five minutes.
The values to use
Keep the source and medium as Google organic, and separate the profile with the campaign name:
https://example.co.uk/?utm_source=google&utm_medium=organic&utm_campaign=gbp-websiteThis keeps profile visits inside Organic Search, so your organic totals stay comparable to last year, and the campaign name lets you pull the profile out whenever you want to look at it on its own. The alternative, using referral or a custom medium, makes the traffic stand out in the default channel report but moves real volume out of Organic Search and breaks that comparison. Either works. Mixing the two does not, so pick one and write it down.
Every link on the profile that can carry a tag
| Where | Suggested tag | Why it earns its own name |
|---|---|---|
| Website button | utm_campaign=gbp-website | The main link on the profile, and usually the biggest single source of untagged traffic on a local site. |
| Book, Appointments, or Reserve | utm_campaign=gbp-booking | Separate campaign, because a booking click is worth a great deal more than a browse and you want to see it on its own. |
| Posts (Update, Offer, Event) | utm_campaign=gbp-post&utm_content=post-name | The only honest way to answer whether posts do anything. Give each post its own utm_content. |
| Products, Services, Menu, and Order links | utm_campaign=gbp-products | Rarely tagged, so almost nobody knows whether the hours spent filling them in paid off. |
| Social links on the profile | utm_campaign=gbp-social | These sit on the profile but send people off to your other accounts, so tag them where they land on your site. |
More than one location?
Keep the campaign the same across the estate and put the branch in utm_content, for example utm_content=deansgate. One campaign gives you the total, and utm_content lets you rank branches against each other without creating a new campaign name every time you open a shop.
Check it again after any profile edit
Profile fields get overwritten: by a merge, by a suggested edit, by a booking provider replacing its own link. Re-check the website and booking URLs after any change to the profile, and after anyone else touches it.
Point at the final URL
Tag the address the page actually lives at, not one that redirects. Some redirects drop the query string, and when that happens the tags vanish without any sign that anything went wrong.
The numbers will not match, and that is fine
Website clicks in the profile's own performance report will always be higher than sessions in Analytics. Google counts the click, you count the arrival, and bots, back-buttons, and consent choices live in the gap. Use the tagged campaign for trend and share, not to reconcile two totals.
How to track UTM links in Google Search Console
The honest answer: you cannot, and you should not want to. Search Console reports on what happens inside Google's search results, before anyone clicks anything. Your tag is added to a link you placed, so it only comes into existence at the moment of the click. There is nowhere in Search Console for it to appear, and no setting that changes that.
That is not a gap. The two tools answer different questions, and together they cover the whole journey.
Search Console answers
Which search, and which page?
Impressions, clicks, average position, and the query behind them, for the pages Google has indexed. It covers Google Search, plus Discover and News where they apply. It does not cover Maps, your Business Profile, or any other site linking to you.
Your UTM tags answer
Which placement, and what happened after?
Every link you put somewhere yourself: the profile, the newsletter, the leaflet, the partner site. Read in Analytics, next to enquiries, calls, and sales. It knows nothing about search queries.
What Search Console will tell you about your tags
One thing, and it is worth checking: whether a tagged URL has been indexed as a page in its own right. That happens when a tagged link gets shared publicly and crawled, and it splits one page's performance across two rows.
- 1
Look for tagged URLs in the Pages report
Open Indexing, then Pages, and filter the URL list for utm_. Anything that comes back is a tagged copy Google is treating as a separate page.
- 2
Check the same thing from the outside
Search Google for site:yourdomain.co.uk inurl:utm_ . Results mean a tagged URL is indexed.
- 3
Confirm the clean URL is the canonical one
Paste a tagged URL into URL Inspection. If the Google-selected canonical is the clean version of the page, your canonical tags are doing their job and there is nothing to fix.
- 4
If they are not, fix the cause
Add a self-referencing canonical to the clean URL on every page, then make sure nothing on your side is publishing tagged links: not the sitemap, not the navigation, not a redirect that appends tags.
Reading them together. Pick a landing page. In Search Console you get the queries and clicks that brought people to it from search. In Analytics, filtered to that page, you get every other way people reached it, by name. If the two totals are wildly apart, the difference is almost always the part you have not tagged yet.
Where the numbers turn up in Google Analytics
Tags are read at the start of a visit, so give it a day before you judge anything. Then:
Reports, then Acquisition, then Traffic acquisition
Change the first column to Session campaign, or Session source / medium. This is where your campaign names appear, next to sessions and key events.
The same report, filtered
Add a filter on Session campaign to isolate one placement, for example gbp-website, and compare it against last month.
Explore, free-form
Session campaign and Session manual ad content as rows, sessions and key events as values. This is how you compare branches when the location is in utm_content.
Admin, then Channel groups
Only needed if you tag offline placements. Create a custom group so print, qr, and sms stop landing in Unassigned.
One thing to expect. Analytics keeps the last non-direct source it saw for a visitor, so someone who arrives through your tagged profile link on Monday and returns directly on Thursday still counts toward that campaign. That is usually what you want. It also means a campaign keeps earning credit for a while after you stop running it.
Frequently asked questions
Do UTM tags hurt SEO?
Not on the links you place elsewhere, which is what this tool builds. The one real risk is a tagged URL getting crawled and indexed as a separate page, which splits your reporting in Google Search Console. A self-referencing canonical tag on every page handles it, and you should never put tags on internal links, in your sitemap, or in a canonical tag.
Will my UTM links show up in Google Search Console?
No, and that is by design. Search Console reports on what happened inside Google's search results, before anyone clicks. A UTM tag is added to a link you placed, so it only exists after the click. Search Console shows you the query and the page that earned the click; the tag shows you which placement earned it. You need both, in different tools.
Should I tag the website link on my Google Business Profile?
Yes. Without a tag, clicks from your profile arrive in GA4 looking exactly like ordinary Google organic traffic, and clicks from Maps do not appear in Search Console at all. Tagging the profile link is the only reliable way to see how much of your traffic and how many of your enquiries come from the profile rather than from your pages ranking.
Should the medium on a Business Profile link be organic or referral?
Use utm_medium=organic with utm_source=google. That keeps profile traffic inside Organic Search in GA4, so your organic totals stay comparable year on year, and the campaign name still splits it out whenever you want to look. Using referral or a custom medium makes the traffic more obvious in the default channel report, but it quietly moves volume out of Organic Search and breaks the comparison. Whichever you pick, write it down and use it everywhere.
Why do my Business Profile clicks not match GA4 sessions?
They never will. Google counts a click at its end; GA4 counts a session at yours. Bots, people tapping back before the page loads, blocked cookies, and consent choices all sit in the gap. Use the tagged campaign for trend and share of traffic, not to reconcile two totals.
Can I use UTM tags to track traffic from ChatGPT and other AI answers?
Only where you placed the link yourself. You cannot tag a citation an answer engine chose to include, and that traffic often arrives with no referrer at all, so it lands in direct. Measuring visibility inside AI answers is a separate job from tagging links: it means checking whether you are named and cited in the answers people actually ask.
Does capitalisation matter?
Yes, and it catches people out constantly. GA4 does not fold case, so Email and email become two separate rows that never add up. Keep every value lowercase with hyphens instead of spaces. The Tidy values switch in the builder does it for you.
Can I put a tagged link behind a QR code or a short link?
Yes, and for print you should. Build the tagged link here, then point the QR code or short link at it. Check the shortener passes the query string through to the final URL rather than stripping it, because a few do.
Tagging tells you what a click was worth. It cannot tell you why you were found.
For that you need to see where you rank across the area you serve, how your Business Profile is performing, and whether answer engines are naming you at all. SearchOps measures all three, per location.