ZenWeb - Blog - How to Set Up UTM Tracking to Prove Your Campaigns

How to Set Up UTM Tracking to Prove Your Campaigns

Jian Tat Lee
August 1, 2026

Share this post:

How to Set Up UTM Tracking to Prove Your Campaigns
TL;DR: To set up UTM tracking, agree a lowercase naming convention first, then tag every link you control — email, organic social, WhatsApp broadcasts, QR codes, partner posts — with utm_source, utm_medium and utm_campaign using Google’s Campaign URL Builder. Log every link in one shared sheet. Read the results in GA4 under Acquisition → Traffic acquisition. Untagged links land in Direct and Referral, where nobody can prove they worked.

1. Introduction

Quick Answer: UTM tracking is the only way an in-house marketer can prove that the campaign they ran — not luck, not the brand, not the sales team — brought the traffic. Set it up before the campaign launches. Once the clicks land untagged, the credit is gone and you cannot recover it later.

The uncomfortable moment in most Malaysian marketing teams comes at the monthly review. You ran the EDM, the LinkedIn posts, the WhatsApp broadcast and the partner feature. Traffic went up. Enquiries went up. Then someone asks which one did it — and the honest answer is a shrug at a GA4 report where 40% of sessions say “Direct”.

That shrug is not an analytics problem. It is a tagging problem, and it was decided weeks before the report existed.

UTM parameters are the small text tags you append to a link so Google Analytics knows where a visitor came from. They cost nothing and are the difference between “the March EDM brought 312 sessions” and “marketing did some things”. This guide covers the naming convention, the six-step build, where to read the data, and the Malaysian channels where UTMs quietly stop working.

We run the same system on every campaign at ZenWeb, and it is the first thing we fix when a client’s reporting does not add up. Before the detail, here is a practitioner walking through the setup inside GA4.

How to Track UTM Codes in Google Analytics [Updated for GA4]

Source video: MeasureSchool on YouTube


2. What UTM Tracking Proves — And What It Can’t

Quick Answer: UTM tracking proves where a session started — which link, on which channel, from which campaign. It does not prove causation, does not follow a user across devices, and does not settle who deserves the credit when six touchpoints preceded the sale. It is evidence, not a verdict.

Most guides oversell this. UTMs are a labelling system, nothing more. They answer one question well: which link did this person click to arrive here? Everything else — influence, assist, brand lift — sits outside their reach. Knowing the boundary keeps you out of arguments you cannot win.

  • UTMs prove arrival. The March EDM sent 312 sessions and 14 form fills. That is a fact you can defend line by line.
  • UTMs do not prove persuasion. Someone may see your LinkedIn post, search your brand two days later, and arrive via Google. The EDM gets nothing; brand search gets everything.
  • UTMs do not survive channel hopping. A tagged link keeps its tags when copied into a WhatsApp group — but if the person retypes your domain instead, the trail ends.
  • UTMs cannot fix last-click bias. They feed the model; they do not choose it. That is a separate fight, covered in last-click attribution hiding your real winners.

New to the concept? Start with what UTM tracking is, then come back for the build. Assigning credit across channels is a bigger question, covered in marketing attribution.

Key takeaway: Sell UTMs internally as proof of arrival, not proof of persuasion. Overclaiming is how marketers lose credibility the first time sales checks the numbers.

Not sure your tracking survives contact with reality?

We audit the tagging, the channel groupings and the conversion setup before we touch a single campaign. See how our SEO team sets up measurement →


3. The Five UTM Parameters in Plain English

Quick Answer: There are five parameters worth knowing. Three are compulsory in practice — utm_source, utm_medium, utm_campaign. Two are optional — utm_content and utm_term. Google advises using source, medium and campaign on every tagged link; leave any of them out and the report fills with “(not set)”.

Source is who sent them. Medium is what kind of link it was. Campaign is which push it belonged to. Read the table once and the system clicks.

ParameterWhat it answersExample value
utm_sourceWhich platform or partner sent the click?facebook, mailchimp, whatsapp
utm_mediumWhat type of marketing was it?email, organic_social, cpc
utm_campaignWhich specific push does this belong to?raya_2026, q3_webinar
utm_contentWhich creative or link position was clicked?hero_button, video_a
utm_termWhich paid keyword triggered it?seo_agency_kl

Google’s Analytics documentation on campaign URLs is blunt about half-tagging: missing parameters show up as “(not set)”. A link with a source but no medium is worse than useless — it looks tracked and reports nothing. If GA4 itself is new to you, our primer on what Google Analytics 4 is covers the basics.

Key takeaway: Source, medium and campaign go on every link, every time. Content and term are for when you need to compare two creatives or two keywords.

4. How to Set Up UTM Tracking in Six Steps

Quick Answer: Set up UTM tracking by writing the naming convention first, building links in Google’s Campaign URL Builder, logging each one in a shared sheet, shortening them for social and print, testing one link in GA4 Realtime, then reviewing the campaign report a week later. The whole build takes an afternoon.

How to set up UTM tracking for a campaign

Do these six steps in order before the campaign goes live. Skipping straight to link-building is how teams end up with eleven spellings of “facebook” by December.

  1. Write the convention before the links. One page, agreed by everyone who publishes: allowed source values, allowed medium values, a campaign naming pattern, and a rule that everything is lowercase with underscores.
  2. Build links in the Campaign URL Builder. Use Google’s free Campaign URL Builder. Paste the landing page, fill source, medium and campaign, copy the generated URL. Never hand-type parameters — one typo and the row splits.
  3. Log every link in one sheet. Columns: date, channel, owner, full tagged URL, campaign value. This is how you answer “what did we tag in March?” six months later without guessing.
  4. Shorten for social, print and QR. A tagged URL is long and ugly in an Instagram bio or on a bunting. Run it through your shortener — the tags travel through the redirect intact.
  5. Test one link in GA4 Realtime. Click your own tagged link on a phone, then open GA4 → Realtime and check the session source/medium matches. Two minutes now saves a month of dead data.
  6. Review the campaign report a week in. Look for the row you expect. Missing rows, or two near-identical rows, mean the convention broke — and you can still fix it mid-campaign.

Do not tag Google Ads links by hand. Auto-tagging handles that, and manual UTMs on top can conflict — the correct setup is in launching your first Google Ads campaign. Meta is the opposite case: you tag those links yourself, and launching your first Facebook ad campaign shows where the URL parameters field sits.

Key takeaway: The convention comes before the first link, and the test click comes before the campaign. Everything else is admin.

5. Your Naming Convention Is the Whole Job

Quick Answer: UTM values are case sensitive, so Facebook and facebook become two separate rows in GA4. A naming convention — all lowercase, underscores not spaces, a fixed list of allowed values — is what keeps one campaign from appearing as five.

This is where most teams lose — not in the setup, in the drift. Three people tag links over four months, nobody agreed the vocabulary, and the report becomes a lineup of near-duplicates merged by hand every month.

Google states the rule plainly in its campaign parameter guidance: values are case sensitive, so utm_source=google is a different thing from utm_source=Google. The fix is boring and it works:

  • Lowercase, always. No exceptions, no proper nouns, no capitalised campaign names.
  • Underscores, never spaces. A space becomes %20 and the row looks broken.
  • Fix the source list. Write down the ten sources you actually use. A new source gets added to the list before it appears in a link.
  • One medium per channel type. email for EDM, organic_social for unpaid posts, paid_social for Meta ads, referral for partners.
  • Date the campaign value. raya_2026 beats raya, because next year you will want to compare them.

When rows do not appear at all, the cause is usually a broken parameter rather than a broken convention — our fix guide for UTM links not working in GA4 runs through the usual suspects.

Key takeaway: A one-page convention beats any UTM tool you can buy. Case sensitivity is not a suggestion — GA4 will split your campaign without telling you.

6. How Much of Your Traffic Is Actually Tagged?

Quick Answer: Across Malaysian SME accounts we take over, tagging coverage is high on email and paid social, and close to zero on the channels marketers actually own — WhatsApp broadcasts, QR codes, partner mentions and staff email signatures. Those are exactly the links that end up as unexplained Direct traffic.

Before fixing anything, measure how much of your own marketing is invisible. This pattern repeats in almost every account we audit.

UTM Coverage by Channel, Before vs After
Share of links carrying UTM tags by channel, before and after a tagging standard, Malaysian SME accounts.
ChannelTagged at handoverTagged after standardWho owns the link
Email / EDM~60%~100%Marketing exec
Paid social (Meta)~50%~100%Agency or exec
Organic social posts~20%~85%Social executive
WhatsApp broadcastunder 10%~80%Sales / marketing
QR codes & printnear zero~70%Marketing / events
Partner & PR mentionsnear zero~50%PR / partnerships

Source: ZenWeb client sample, 500+ Malaysian SME accounts, 2024–2026. Licence.

Read the last column, not the first. Every low-coverage row is a channel the marketing team owns outright — fixable this week, without a developer or a budget request. Paid channels are usually already covered, and the process in analysing your own Google Ads performance data assumes that tagging is in place.

Key takeaway: The untagged channels are the owned ones. Nobody is stopping you tagging the WhatsApp broadcast — the team just never made it someone’s job.

7. Where Untagged Clicks End Up

Quick Answer: Untagged clicks do not disappear — they land somewhere misleading. WhatsApp and app-to-browser clicks mostly land in Direct. Untagged social lands in Referral or Direct. The result is a Direct row that looks like brand strength but is actually your own untagged marketing.

This is the chart to show your manager. It reframes Direct traffic from “people love our brand” to “we lost the receipts”.

Where Untagged Clicks Get Reported
Share of untagged sessions reported as Direct traffic, by originating channel.
Untagged channelReported as DirectShare
WhatsApp link
~90%
QR code / print
~85%
Email (desktop client)
~70%
PDF / e-brochure
~60%
Organic social post
~30%

Source: ZenWeb client tracking, Malaysian SME accounts, 2024–2026. Licence.

The WhatsApp row is the one that matters in Malaysia. Links shared in chat usually arrive with no referrer, so GA4 has nothing to work with and files the session under Direct. If Direct has been climbing while brand searches have not, you are almost certainly looking at your own untagged links — the fixes are in too much direct traffic in GA4.

Direct traffic is not a channel. It is a shrug — the label GA4 uses when your marketing forgot to introduce itself.

Key takeaway: Untagged campaigns quietly inflate Direct and make the brand look stronger than it is — flattering everyone except the marketer who has to prove their work.

8. The Naming Errors That Break Reports

Quick Answer: Five naming errors cause most broken UTM reports: mixed capitalisation, spaces in values, inventing new mediums, tagging internal links, and manually tagging Google Ads on top of auto-tagging. Each one is silent — GA4 never warns you, it just reports the wrong thing.

These are the errors we find most often when a new client’s campaign report will not reconcile.

Common UTM Errors and Their Cost
Frequency of UTM naming errors in audited accounts and their effect on reporting.
ErrorFound inWhat it does to the report
Mixed capitalisation

~6 in 10 accounts

One channel splits into two or more rows
Spaces in values

~4 in 10 accounts

Values render as %20 and look broken
Invented mediums

~5 in 10 accounts

Traffic falls outside GA4 channel groups
Tagging internal links

~2 in 10 accounts

Restarts the session and destroys the original source
Manual tags on Google Ads

~3 in 10 accounts

Ads and GA4 numbers stop agreeing

Source: ZenWeb account audits, Malaysian SMEs, 2024–2026. Licence.

The last row deserves its own warning. Overwriting Google’s auto-tagging with hand-built UTMs is the fastest way to make your paid numbers stop reconciling — covered in why GA4 and Google Ads numbers do not match. Tagging your own internal navigation links, which people do with good intentions, wipes out the source of the visitor who just arrived.

Key takeaway: UTM errors are silent. GA4 never flags them, so your only defence is a convention plus a monthly scan for near-duplicate campaign rows.

9. What Changes in the First 12 Weeks

Quick Answer: After a team adopts a UTM standard, the visible change is fast. Direct traffic falls as sessions get correctly reclassified, named campaign rows appear in GA4, and by roughly week 12 the marketing report stops relying on guesses. Nothing about the marketing changed — only the visibility.

This is what the first quarter of disciplined tagging typically looks like in an account we have just taken over. Nothing about the spend changed — only the labelling.

Attribution Clarity, Week 0 to Week 12
Direct traffic share, identified campaign rows and reportable sessions over twelve weeks after adopting a UTM standard.
MetricWeek 0Week 4Week 8Week 12
Direct share of sessions

~40%

~31%

~23%

~18%

Named campaign rows in GA4

2

7

12

16

Sessions you can explain

~55%

~66%

~76%

~84%

Source: ZenWeb client tracking, typical account trajectory, 2024–2026. Licence.

Note what does not move: sessions, leads, revenue. Tagging creates no traffic. It moves traffic out of the “we don’t know” bucket and into rows carrying your campaign names — exactly what you need when someone asks which ads are actually bringing the leads.

Key takeaway: Expect roughly a quarter before the reporting feels solid. The traffic was always there — tagging just gives it a name you can defend.

Tagging fixed, but the campaigns still under-perform?

Clean data usually reveals which channel was quietly wasting budget all along. Compare our Google Ads management options →


10. Where to Read UTM Data in GA4

Quick Answer: Open GA4 and go to Reports → Acquisition → Traffic acquisition. Switch the primary dimension to Session campaign or Session source / medium. Your tagged campaigns appear as named rows. Add a conversion metric to the same table and you have the entire proof in one screen.

Google documents the location itself: campaign data surfaces in the Traffic acquisition report, under session source, medium and campaign. Three habits turn that screen into a report your boss will read:

  • Always pair traffic with a conversion. Sessions alone prove reach, not results. Add key events so each campaign row carries its own lead count.
  • Compare like periods. Campaign rows mean nothing in isolation. Compare against the previous campaign, not the previous month.
  • Export the same three columns every time. Campaign, sessions, conversions. Consistency is what makes a monthly report skimmable.

Once tagging is stable, the reporting layer gets easy. Measuring marketing with simple KPIs in GA4 and building a marketing dashboard in Looker Studio both assume the campaign rows exist. For the monthly write-up, pull the campaign table straight into the monthly marketing report template.

Key takeaway: Traffic acquisition plus a conversion column is the whole report. Everything fancier is decoration on top of correctly tagged links.

11. The Malaysian Gap: WhatsApp, Walk-Ins and QR Codes

Quick Answer: UTMs stop at the click. In Malaysia, where a huge share of enquiries finish inside WhatsApp, that means the tag proves the visit but not the conversation. Tag the link into WhatsApp, then hand the campaign name across to sales — otherwise the trail ends at the chat window.

Every UTM guide written for a Western SaaS audience assumes the form fill is the finish line. In Malaysian SMEs, the form is often just the doorway to a WhatsApp thread — and the real conversion happens in a chat nobody is tracking. Three moves close most of that gap:

  • Tag the click into WhatsApp. Give each WhatsApp button its own utm_content so you know which page started the chat.
  • Pre-fill the chat message. Text like “Hi, I’m enquiring from the Raya promo page” carries the campaign name into the conversation, where sales can see it.
  • Give print and events their own campaign values. A QR code on an exhibition bunting deserves utm_source=expo_kl and a campaign value you will still recognise in six months.

The mechanics of joining chat enquiries back to campaigns are in WhatsApp leads not being tracked. If your customers buy offline entirely, the problem changes shape — see measuring marketing when you sell offline.

Key takeaway: UTMs get the visitor to your door. In Malaysia, someone still has to carry the campaign name into WhatsApp — build that handover deliberately.

12. Conclusion

Quick Answer: To set up UTM tracking that actually proves your campaigns, agree the naming convention, tag every owned link through the Campaign URL Builder, log them centrally, test before launch, and read the results in Traffic acquisition. The discipline matters more than the tooling.

Nothing here is technically difficult. That is exactly why it gets skipped — it looks like admin, and admin loses to the campaign deadline every time.

But the marketing executive who can say “the March EDM produced 312 sessions and 14 enquiries, here is the row” is in a different conversation from the one pointing at a traffic line going up. Tagging buys you that sentence, and it has to happen before launch, not after someone asks the question. Turning the data into something a boss will read starts with building a marketing report your boss will read.

If the tagging, channel groupings and conversion setup all need untangling at once, that is the audit we run at the start of every SEO engagement — none of the ranking work is provable without it.


13. Frequently Asked Questions

1. Do I need UTM tracking if I already have Google Analytics?

Yes. GA4 records the traffic either way, but without UTM parameters it cannot tell which campaign sent it. Your EDM, WhatsApp broadcast and organic posts get bundled into Direct or Referral. UTMs turn anonymous sessions into named campaign rows you can report on.

2. Should I add UTM parameters to my Google Ads links?

No. Auto-tagging already passes Google Ads campaign data into GA4, and manual UTMs on top can override it and make the two platforms disagree. Tag everything else you control — email, organic social, WhatsApp, QR codes, partner links — and leave Google Ads alone.

3. Why is my UTM campaign not showing up in GA4?

Usually a missing utm_medium, a typo in a parameter name, a redirect that strips the query string, or looking too early — standard reports can take up to 24 hours. Check the link in Realtime first, then confirm the full URL survived any shortener.

4. Are UTM parameters bad for SEO?

Not for the links you send out. Tagged URLs are for inbound links from email, social and print — never for internal site navigation. Tagging your own internal links restarts the session in GA4 and wipes out the visitor’s original source.

5. How many UTM parameters should I use per link?

Three as standard: utm_source, utm_medium and utm_campaign. Add utm_content only when you need to compare two creatives in the same campaign. Parameters you never report on just make the URL longer and the convention harder to enforce.

Ready to prove what your marketing is actually doing?

Book a free 30-minute strategy session — we’ll review your tracking setup, your Google ranking and your competitors, then give you a concrete 90-day plan with realistic cost-per-lead and pipeline targets.

Get my free strategy session →

Table of Contents

Table of Contents

See Also

Best CRM Software for Malaysian SMEs to Use in 2026

Best CRM Software for Malaysian SMEs to Use in 2026

Pipedrive Review: Best CRM for Small Sales Teams?

Pipedrive Review: Best CRM for Small Sales Teams?

How to Lower Your Cost Per Lead in Meta Ads (2026)

How to Lower Your Cost Per Lead in Meta Ads (2026)

Get A Free Proposal

Complete the form and our team will contact you to discuss your goals. Let’s grow your business.

Meowketing Specialist

Online

Today

Meow! 👋

We are Official Google Partner,
Ask us anything about Marketing!