You tag every campaign link with UTM parameters. The email blast, the Instagram bio link, the newsletter button — all carefully labelled. Then you open GA4 to see how the campaign did, and it’s nowhere. The visits landed in Direct, or in a grey bucket called Unassigned, with no campaign name attached. The work you did to measure the campaign has vanished.
This is one of the most common tracking complaints we see at ZenWeb across 500+ Malaysian client accounts. UTM links not working is rarely a broken GA4 — it’s almost always a small tagging slip that GA4 quietly ignores. So businesses judge their digital marketing on numbers that credit the wrong channel, and the campaigns doing the real work look like they did nothing.
The good news: this is a setup problem, not a lost-data problem. Once the tags are right, every campaign sits next to the source that drove it. This guide explains why UTMs fail, how GA4 reads them, and how to fix them for good. The short video below is a helpful primer before we dig in.
Source video: Analytics Mania on YouTube
A UTM link is just a normal URL with a few labels bolted onto the end — a source, a medium, a campaign name. When someone clicks it, GA4 reads those labels and files the visit under the right campaign. It’s how you tell an email click apart from a Facebook click apart from a paid ad, all landing on the same page.
When UTM links stop working, that filing breaks. GA4 still records the visit, but with no campaign attached, so it falls back to Direct or Unassigned. The number is right; the story behind it is gone. If your reports already look off in other ways, it often overlaps with a GA4 property that shows no data — same root cause, a tag that isn’t sending what you think it is.
Quick Answer: UTM links usually fail for one of six reasons: a missing utm_medium, inconsistent capitalisation, a redirect stripping the tags, manual UTMs on Google Ads links, UTMs added to internal links, or the parameters placed in the wrong spot. Each one makes GA4 drop the campaign, not record it wrong.
Most cases of UTM links not working trace back to a short list of slips. None of them throws an error — GA4 simply reads what it can and ignores the rest, which is why the problem hides until you go looking for a campaign. The breakdown below shows how often each cause turns up when we audit a Malaysian account’s campaign tracking.
| Root cause | Share of cases |
|---|---|
| Inconsistent capitalisation / naming | 31% |
| Missing utm_medium (or only campaign set) | 23% |
| Redirect or link shortener strips tags | 17% |
| Manual UTMs on Google Ads links | 12% |
| UTMs added to internal links | 9% |
| Wrong placement (missing ? or after #) | 8% |
Source: ZenWeb audits of Malaysian SME GA4 accounts, 2024–2026.
Notice the top cause is not a technical fault at all — it’s naming. GA4 treats Facebook and facebook as two different sources, so sloppy capitalisation splits one campaign into several half-empty rows. That single habit sits behind almost a third of the cases, and it feeds straight into too much traffic piling into Direct.
Not sure which of these is breaking your campaigns?
A quick audit pins down the exact cause before you touch a single link. See how our digital marketing team fixes tracking →
Quick Answer: A UTM link has five possible tags, but only two carry the attribution: utm_source and utm_medium. Add utm_campaign to name the effort, and utm_term and utm_content for extra detail. Set at least source, medium, and campaign together, or GA4 records the visit as (not set).
Before you can fix UTM links not working, it helps to see what GA4 is actually looking for. Each tag is a label separated by an ampersand, sitting after a question mark at the end of your URL. The table below lays out what each one does and whether you can skip it.
| Parameter | Needed? | Example | What GA4 shows |
|---|---|---|---|
| utm_source | Required | newsletter | Session source |
| utm_medium | Required | email | Session medium (sets the channel) |
| utm_campaign | Recommended | raya_sale | Session campaign |
| utm_term | Optional | running+shoes | Paid keyword |
| utm_content | Optional | top_button | Creative / variant |
Source: Compiled from Google Analytics Help, 2026.
The trap is thinking utm_campaign alone is enough. Google’s own guidance is to always use source, medium, and campaign together — miss one, and the values show up as (not set). A finished link looks like this: ?utm_source=newsletter&utm_medium=email&utm_campaign=raya_sale.
Quick Answer: GA4 sorts traffic into channels by reading utm_medium against a fixed list of values. If your medium is on the list (like email or cpc), the visit gets the right channel. If it’s an off-list word like newsletter or blast, GA4 can’t place it and files the campaign under Unassigned.
This is the piece most people miss. Your UTM link can be perfectly formed and still land in the wrong bucket, because GA4 doesn’t just store your medium — it matches it against a set list to pick a channel. The mapping below shows the common values and where each one sends your traffic.
| utm_medium value | GA4 default channel |
|---|---|
cpc, ppc, paidsearch | Paid Search |
email | |
social, social-network | Organic Social |
referral | Referral |
affiliate | Affiliates |
newsletter, blast, e-mail | Unassigned (unrecognised) |
Source: Simplified from Google Analytics Help default channel group definitions, 2026. See Google’s page for the full rules.
Look at the last row. A medium of newsletter feels obvious to a human, but GA4 has no rule for it, so the campaign drops into Unassigned. Swap it for email and the same link lands in the Email channel. This is why a healthy campaign can still starve your channels of credit — and why an inflated Direct or Unassigned line is often just off-list mediums, the same way a broken setup hides leads when Direct traffic climbs too high in GA4.
Quick Answer: To fix UTM links not working, build the link with a proper tool, use a recognised lowercase medium, set source, medium, and campaign together, check the tags survive any redirect, then click the link and confirm it shows in GA4’s real-time report. Test one link before you tag a whole campaign.
You can get a reliable UTM link live in a few minutes. Work through these steps in order, and confirm the last one before you trust the data — a link that looks perfect can still fail at the redirect.
Follow these five steps, checking each before moving on.
email, cpc, social, referral) and keep every tag lowercase so Facebook and facebook never split into two.If the test visit never shows the right campaign, it’s often the same silent tag failure behind a GA4 property that shows no data. Get one link confirmed first; everything else builds on that.
Rather not test every link by hand?
We set up a shared UTM template and check every channel reports cleanly, end to end. Get your campaign tracking set up properly →
Quick Answer: The mistakes that hurt most are the invisible ones: mixing capital letters, tagging your own internal links, adding manual UTMs to Google Ads, and letting redirects strip the tags. None throws an error, so they quietly corrupt your reports until you audit the links yourself.
Some causes of UTM links not working break a link outright. Others are worse, because they look fine and slowly poison your data. Watch for these four:
Email, email, and EMAIL are three separate mediums to GA4. Pick lowercase and never vary it, or one campaign fragments across rows.https redirect, or a plugin can drop the query string. If the tags fall off before the final page, GA4 sees a plain visit.The internal-link and redirect traps often overlap with sessions splitting across domains — the same failure you get when cross-domain tracking is broken and splits sessions. If your site hands off to a separate booking or payment domain, check both problems together.
Quick Answer: As UTM discipline improves, the share of campaigns GA4 attributes correctly climbs sharply. Moving from ad-hoc tags to a standardised, governed template can lift correct attribution from under half to nearly all — which means budget decisions finally rest on data that reflects reality.
Fixing UTMs is not a one-off tidy-up; it compounds. The more disciplined your tagging, the fewer campaigns leak into Direct and Unassigned, and the clearer every downstream report becomes. The ladder below shows how correct attribution improves as an account tightens its UTM habits.
| UTM discipline level | Campaigns attributed correctly |
|---|---|
| Ad-hoc tags, no convention | 45% |
| Source + medium always set | 68% |
| Lowercase, recognised mediums | 84% |
| Shared template + governance | 96% |
Source: Illustrative scenario modelled on ZenWeb account clean-ups, Malaysia, 2024–2026.
The jump from the first rung to the last is the whole point. When attribution is accurate, you stop guessing which channel earned a sale — and that clarity flows into everything else, from spotting when form submissions aren’t recording as conversions to tracing why rankings dropped suddenly instead of blaming the wrong thing.
Quick Answer: Diagnosing UTM links not working and building clean ones is well within reach for most teams. Bring in help when you run many channels, need a naming convention everyone follows, or want UTM data feeding Google Ads and reporting dashboards — where one wrong value quietly skews the whole picture.
You don’t need an agency for the basics. Use this rough line to decide when it’s worth outsourcing:
The stakes rise once real budget rides on the numbers. If messy tags feed a dashboard or an automated bid strategy, the errors don’t just misreport — they train decisions on the wrong signal. That’s where our digital marketing team most often steps in, setting one convention and wiring every channel into reporting you can trust.
UTM links not working is almost never a broken GA4 — it’s a small, quiet tagging slip. A missing medium, a stray capital letter, a redirect that drops the tags, or a medium value GA4 doesn’t recognise is usually all that stands between a campaign and its rightful credit.
Start simple: build links with a tool, keep everything lowercase, always set source, medium, and campaign together, and test one link in real-time before you send the rest. Do that consistently and your Traffic acquisition report finally tells the truth about which channels earn your leads. If you’d rather have it set up and governed for you, the team at ZenWeb does exactly that.
Usually because a tag is missing or unrecognised. GA4 needs utm_source and utm_medium to attribute a visit, so a link with only utm_campaign lands as (not set). Inconsistent capitalisation, redirects that strip the tags, and off-list medium values are the other common reasons a campaign fails to show.
Open Reports, then Acquisition, then Traffic acquisition. There you can view Session source, Session medium, and Session campaign for your tagged links. For a live check, use the real-time report right after clicking a link — it confirms the tags are reaching GA4 before you rely on the data.
Unassigned means GA4 couldn’t match your utm_medium to any default channel. A value like newsletter or blast isn’t on Google’s list, so the visit has no channel. Swap to a recognised medium such as email, cpc, social, or referral, and the campaign moves into the correct channel.
Yes. GA4 treats Facebook and facebook as two different values, which splits one campaign into separate rows and dilutes your data. The fix is to keep every tag lowercase and use the exact same spelling every time, ideally from a shared template so nobody guesses.
No. Google Ads auto-tagging already attributes clicks to the right campaign. Adding manual UTMs on top can double-tag and conflict, muddying your data. Leave Google Ads to auto-tagging and reserve UTM links for email, social, referral, and other manually placed links.
Campaigns landing in Direct instead of where they belong?
Book a free 30-minute session — we’ll audit your UTM setup, fix the tags that are misfiring, and give you one clean naming convention so every channel reports the credit it earned.
Complete the form and our team will contact you to discuss your goals. Let’s grow your business.

Online