Marketer planning a campaign on a laptop showing a marketing strategy document
Home » Blog » UTM Tags: How to Track Your Campaigns Properly (Singapore Guide)

UTM Tags: How to Track Your Campaigns Properly (Singapore Guide)

What GA4 does with each UTM parameter, the one rule that decides your channel, the five mistakes that cost most, and a naming convention you can hand to a junior.

UTM Tags: How to Track Your Campaigns Properly (Singapore Guide)

Open the traffic report of almost any Singapore SME and you will find the same mess: facebook, Facebook, FB, fb and facebook.com sitting on five separate rows, none of which is the real total. Somewhere below them is a campaign called newsletter that has been reused for three years, and a row called (not set) that is bigger than either.

UTM tags are the cheapest measurement tool in marketing — they are free, they take seconds, and they need no code. They are also the easiest to get subtly wrong, because nothing ever fails. A malformed tag does not throw an error; it just quietly files your traffic in the wrong drawer, forever, and there is no way to fix it retroactively.

This guide covers what GA4 actually does with each parameter, the single rule that decides which channel your traffic lands in, the mistakes that cost the most, and a naming convention you can hand to a junior marketer. It sits under our performance marketing guide for Singapore.

What a UTM tag is, in one paragraph

A UTM tag is a parameter added to the end of a URL that tells your analytics where the click came from. Your website ignores it. GA4 reads it, records it against the session, and files that session into a channel. That is the whole mechanism: you are labelling your own links, because a browser does not otherwise tell the destination site which of your posts, emails or ads the visitor tapped.

The corollary matters: UTMs only describe links you control. They cannot tell you anything about traffic you did not tag, and they are a claim rather than a measurement — GA4 believes whatever you write. Tag a link utm_medium=email and paste it into an Instagram bio, and GA4 will report Instagram traffic as email until the end of time.

The nine parameters, and the two that do nothing

Parameter What it means Example Use it?
utm_source Where the traffic came from — the specific platform or publication linkedin Always
utm_medium The type of marketing — this is what decides your channel cpc Always
utm_campaign The specific campaign or promotion gss-2026-launch Always
utm_content Distinguishes versions — which creative, which button hero-cta When A/B testing
utm_term Paid keyword aircon-servicing Rarely — auto-tagging handles this
utm_id Campaign ID, used to join with imported cost data ig-2026-07 If you import cost
utm_source_platform The platform that directed the traffic, e.g. a bid manager sa360 Enterprise only
utm_creative_format Creative type — display, video, search video No — not reported in GA4
utm_marketing_tactic Targeting approach — remarketing, prospecting remarketing No — not reported in GA4

Those last two are a genuine trap. GA4 collects them, so a tagging tool will happily offer the fields and a URL builder will happily populate them — but Google’s documentation states plainly that they “aren’t currently reported in Google Analytics properties”. You can spend an afternoon carefully tagging prospecting versus remarketing and then find nowhere to read it. Put that distinction in utm_campaign or utm_content instead, where you can actually see it.

For 95% of Singapore SMEs, three parameters is the correct answer: source, medium, campaign. Add utm_content only when you are genuinely comparing two versions of something.

The one rule that decides everything: how medium becomes a channel

This is the part almost nobody knows, and it explains most broken reporting. GA4 does not read your utm_medium as a label. It runs it through a set of matching rules to assign a channel.

The important ones, in Google’s own terms:

  • Paid Search — the source matches a known search engine and the medium matches the regular expression ^(.*cp.*|ppc|retargeting|paid.*)$
  • Paid Social — the source matches a known social site and the medium matches that same expression
  • Organic Search — the source is a known search engine, or the medium is exactly organic
  • Organic Social — the source is a known social site, or the medium is one of social, social-network, social-media, sm, social network, social media
  • Email — the source or the medium is email, e-mail, e_mail or e mail
  • Referral — the medium is referral, app or link
  • AI Assistant — the medium is exactly ai-assistant (added 13 May 2026)

Read the paid expression again: .*cp.* matches anything containing the letters “cp” in order. That is why cpc, cpm and ppc all land in paid buckets, and why the widely-copied paid-social works (it starts with “paid”) while a sensible-looking paidsocial also works, but facebook-ads does not — it contains neither “cp” nor “ppc” nor a leading “paid”, so it falls through to Referral or Unassigned.

The practical rule: your medium is not a free-text field. Pick from the values GA4 recognises, and put your descriptive detail in campaign or content. If your reports show a large “Unassigned” row, this is almost always why.

Your utm_medium decides your channel GA4 matches medium against fixed rules. It is a controlled vocabulary, not a description. MEDIUM YOU WRITE CHANNEL YOU GET cpc Paid Search / Paid Social email Email social Organic Social referral Referral facebook-ads Unassigned / Referral Paid rule: medium must match ^(.*cp.*|ppc|retargeting|paid.*)$ — “facebook-ads” matches none of it.

The five mistakes that cost the most

1. Inconsistent case

Google is explicit: “parameter values are case sensitive, e.g. utm_source=google is different from utm_source=Google.” This is the single largest cause of the split-row problem. Lowercase everything, always, with no exceptions. Not “mostly lowercase” — the one capital letter someone types on a Friday creates a permanent second row.

2. Tagging your own internal links

Putting UTMs on a link from one page of your site to another is genuinely destructive. A new campaign source ends the current session and starts a new one, so a single visitor becomes two sessions with two sources, and the original source that actually won you the visit is overwritten. Your homepage starts appearing as a traffic source to itself.

UTMs are for links pointing into your site from somewhere else. Never for navigation, never for internal banners.

3. Manually tagging your Google Ads

Google Ads has auto-tagging, which appends a click identifier (gclid) carrying far more detail than UTMs can — campaign, ad group, keyword, match type, device — and which is what connects cost data to your sessions. Adding your own UTMs on top can override that richer data and break the link between Ads and Analytics.

Leave auto-tagging on and do not hand-tag Google Ads URLs. The same logic applies to any platform with a native integration.

4. Spaces and punctuation

A space in a UTM becomes %20 or a plus sign depending on how the link was built, and you end up with two versions of the same campaign. Use hyphens. Avoid ampersands entirely inside values — an unencoded & terminates the parameter and truncates everything after it.

5. Reusing a campaign name forever

A campaign called newsletter running since 2023 tells you nothing. Date-stamp it: newsletter-2026-07. You will want to compare July against June eventually, and you cannot retrofit that distinction.

A naming convention you can hand over

The convention matters less than the fact that there is one and it is written down. Here is a workable default for a Singapore SME.

Channel source medium campaign
Facebook / Instagram ads facebook / instagram paid-social gss-sale-2026-07
Organic social post facebook / instagram / linkedin social brand-always-on
Email newsletter mailchimp email newsletter-2026-07
LinkedIn ads linkedin cpc b2b-leadgen-2026-q3
Influencer / KOL link their handle, lowercase referral kol-2026-07
QR code on print or in-store qr-instore offline orchard-popup-2026-07
Google Ads Do not tag. Use auto-tagging.

Three governance rules make this survive contact with a real team. Keep one spreadsheet of every tagged link ever created — it is the only defence against the same campaign being spelled three ways. Give one person the authority to approve new source or medium values. And build links with a URL builder rather than by hand, so the encoding is right every time.

Singapore-specific cases worth getting right

WhatsApp links do not carry UTMs

Query strings on a wa.me link do not arrive in your WhatsApp inbox as campaign data. This surprises people constantly, because WhatsApp is the primary enquiry channel for so many local businesses. Track the click on your own site before the jump, and encode the distinction in the prefilled message text instead — a message that opens with “Enquiring about commercial servicing” tells you the source without any tooling. Tracking phone calls and WhatsApp leads covers this in full.

Offline: QR codes on print, MRT, taxis and packaging

Offline advertising is one of the few places UTMs give you something you could not otherwise get at all. A QR code pointing at a tagged URL turns an untrackable placement into a measurable one. Give each placement its own utm_source — not one shared print value — because the whole point is finding out which placement worked.

Use a short redirect URL behind the code so you can repoint it later without reprinting anything.

Directory listings and partner sites

Where you control the link — industry directories, association listings, partner sites, a supplier’s “where to buy” page — tag it. These usually arrive as undifferentiated Referral traffic, and tagging is the only way to tell a listing that sends buyers from one that sends nobody.

Do not tag the AI assistants

Since 13 May 2026, GA4 identifies traffic from assistants like ChatGPT, Gemini and Claude automatically, assigning the medium ai-assistant. Do not hand-apply that medium to your own links — you will contaminate a channel that is genuinely useful precisely because it is detected rather than declared. See the GA4 reports worth checking for how to read it.

Two 2026 changes that affect tagging

Source Group (11 June 2026). GA4 added a dimension that consolidates the many source values Facebook, Instagram and TikTok generate into single rows. This does not excuse sloppy tagging — it only groups platform-generated variants, not your own inconsistent spellings — but it does make social reporting far more readable. Switch your dimension to Source Group when totalling a platform.

Aggregate Parameter Diagnostic (30 July 2026). GA4 now surfaces alerts when URL parameters it expects are missing — specifically the Google click identifiers gbraid and gad_ — because their loss degrades campaign data. This matters because parameters get stripped: by redirects that drop query strings, by aggressive link shorteners, by consent tools, and by web platforms that “clean” URLs. If you see these alerts, the fix is upstream of analytics — find what is eating the query string. It is worth checking that your own redirects preserve parameters, since a redirect that drops them will silently break both auto-tagging and your UTMs.

Separately, since 28 July 2026 campaign cost data import requires a currency field. If you import cost to sit alongside utm_id, expect to specify SGD explicitly rather than relying on a default.

Anatomy of a tagged URL yoursite.sg/promo/ ?utm_source= &utm_medium= &utm_campaign= The page Untouched. Your site ignores the tags. WHO sent it Free text. Lowercase, spelled the same way every single time. WHAT KIND Controlled list. This is the one GA4 matches to decide your channel. WHICH PUSH Date-stamp it, or you cannot compare July against June later. Hyphens, never spaces. Never an unencoded ampersand inside a value — it truncates everything after it. These three are enough for 95% of Singapore SMEs. Add utm_content only when comparing two versions.

A worked example: one promotion, six links

Abstract rules are easy to agree with and hard to apply. Here is a single Great Singapore Sale promotion for a fictional retailer, tagged end to end, showing how the same landing page gets six different labels.

Where the link lives The tag you add Channel it reports as
Instagram paid ad ?utm_source=instagram&utm_medium=paid-social&utm_campaign=gss-2026-07 Paid Social
Instagram bio link ?utm_source=instagram&utm_medium=social&utm_campaign=gss-2026-07 Organic Social
Customer email blast ?utm_source=mailchimp&utm_medium=email&utm_campaign=gss-2026-07 Email
QR code, shopfront window ?utm_source=qr-shopfront&utm_medium=offline&utm_campaign=gss-2026-07 Unassigned — but cleanly separated
Influencer’s story link ?utm_source=janetanfood&utm_medium=referral&utm_campaign=gss-2026-07 Referral
Google Ads Nothing — auto-tagging handles it Paid Search

Three things this makes possible that were impossible before. You can total the whole promotion in one row by filtering on utm_campaign=gss-2026-07, across paid, organic, email, offline and influencer at once. You can compare the paid Instagram ad against the organic Instagram post directly, which is the comparison most businesses want and almost never have. And the shopfront QR code — previously a complete blind spot — now has a number attached to it.

Note the QR row lands in Unassigned, because offline matches none of GA4’s channel rules. That is acceptable and deliberate: the value is in the clean source, not in the channel label. If Unassigned traffic bothers you, build a custom channel group that maps offline to a channel of your own — custom channel groups re-bucket historical data for reporting, which is the one thing about UTM data you can change after the fact.

How to audit what you already have

Twenty minutes, once, and it will pay for itself.

  1. Open Acquisition → Traffic acquisition, set the dimension to Session source / medium, date range last 12 months.
  2. Scan for case duplicates — the same value with different capitalisation. Note them; you cannot fix history, but you can stop creating more.
  3. Look for Unassigned and (not set). Any meaningful volume means mediums that match none of GA4’s rules.
  4. Look for your own domain as a source. That is internal tagging, and it is corrupting your acquisition data right now.
  5. Check Google / cpc exists and looks sane. If Google Ads traffic is landing anywhere else, auto-tagging is off or being overridden.
  6. Write the convention down, share it, and start applying it from today.

You cannot retroactively fix UTM data — the values are baked into the sessions as they were recorded. Everything above is about stopping the bleeding, which is exactly why it is worth doing sooner rather than after another year of it. What the tags feed into matters too: see attribution models for how that channel then gets credit, and how to read your marketing report for turning it into a decision. Our case studies show what clean channel data makes visible.

Frequently asked questions

Do UTM tags hurt my SEO?

Not in practice. Tagged URLs can create duplicate versions of a page, but Google handles this routinely and a canonical tag resolves it. The real risk is not SEO — it is people sharing a tagged link organically, so your campaign accumulates traffic that had nothing to do with the campaign.

Should I tag links in my email newsletter?

Yes, and it is one of the highest-value places to do it, because email traffic otherwise arrives as Direct when opened in a desktop client. Use utm_medium=email with a date-stamped campaign name.

What is the difference between utm_source and utm_medium?

Source is who sent the traffic (linkedin, mailchimp, a partner’s name). Medium is what kind of marketing it was (cpc, email, social). Source can be anything; medium should come from a short controlled list, because GA4 matches it against fixed rules.

Can I fix UTM data after the fact?

No. The values are recorded with the session as they arrived. You can create custom channel groups to re-bucket messy historical data into more sensible groupings for reporting, which helps — but the underlying source and medium values cannot be rewritten.

Why is so much of my traffic “Direct”?

Direct is GA4’s bucket for sessions with no detectable source: typed URLs, bookmarks, most app and PDF links, some email clients, and untagged links generally. A large Direct share almost always means untagged links rather than genuine brand recall. Note that since May 2026 some of what used to land here is separated out as AI Assistant traffic.

Is there any point tagging if I only run Google Ads?

Not for the ads themselves — auto-tagging covers those better than UTMs could. But you almost certainly have other links: email signatures, a Google Business Profile website link, directory listings, social bios. Those are worth tagging, and they are exactly the ones sitting in Direct right now.

The short version

Lowercase everything. Use source, medium and campaign, and pick your medium from the values GA4 actually recognises. Never tag internal links, never hand-tag Google Ads. Date-stamp campaign names. Keep one spreadsheet and one owner.

That is genuinely most of it. UTM discipline is not a sophisticated technique — it is a small amount of consistency applied without exception, which is why it tends to be the first thing that slips and the cheapest thing to fix.

If your channel data is already a mess and you would rather someone untangled it, sorting out measurement is where we start with every client under performance marketing. Get in touch and we will audit what your reports are actually telling you.

Written by Adrian Tan, SDM. Last updated 31 July 2026. Sources: Google Analytics 4 Help — custom campaign URL parameters (answer 10917952), default channel group definitions (answer 9756891), GA4 release notes (answer 9164320).



Want to know where you actually rank?

We will run a free visibility check across your target searches and send back an honest read — no obligation.

Picture of Adrian Tan

Adrian Tan

A seasoned digital marketing professional with over 15 years of experience, I have built and executed high-impact digital strategies across SEO, SEM, Social Media Marketing (SMM), Social Media Advertising (SMA), content marketing, performance marketing, and integrated digital campaigns. My expertise extends beyond individual channels, focusing on how every aspect of digital marketing works together to drive measurable business growth. Throughout my career, I have successfully managed and optimized campaigns across a wide range of industries, including technology, finance, healthcare, retail, e-commerce, education, real estate, hospitality, and professional services. This cross-industry experience has enabled me to develop data-driven strategies tailored to unique business objectives, customer behaviors, and competitive landscapes. I have partnered with multinational corporations (MNCs) as well as established enterprises and high-growth businesses, helping them strengthen their digital presence, increase brand visibility, generate qualified leads, improve customer acquisition, and maximize return on marketing investment. From developing comprehensive digital strategies to managing multi-channel campaigns with substantial budgets, I have consistently delivered results through continuous optimization, analytics, and innovation. My expertise includes technical and on-page SEO, enterprise SEO strategies, paid search (Google Ads, Microsoft Ads), paid social campaigns across Meta, LinkedIn, TikTok, and other platforms, marketing automation, conversion rate optimization (CRO), web analytics, audience segmentation, content strategy, and performance reporting. I combine analytical thinking with creative problem-solving to ensure every campaign aligns with broader business goals. What sets me apart is my holistic understanding of the digital marketing ecosystem. Rather than viewing SEO, paid media, social media, and content as isolated disciplines, I develop integrated strategies where every channel supports the customer journey—from awareness and engagement to conversion, retention, and advocacy. This full-funnel approach allows businesses to achieve sustainable growth while adapting to evolving market trends and consumer expectations. Driven by continuous learning and innovation, I stay at the forefront of emerging technologies, AI-powered marketing, automation, and evolving digital platforms. My passion lies in transforming complex marketing challenges into scalable, measurable, and sustainable growth opportunities that deliver long-term business success.

On this page

Share

Get found by customers already looking for you

A free, honest look at where you stand today and what it would take to move.

Not sure where you stand?

Tell us about your business and we will take an honest look at where you are today — and what it would take to get where you want to be.

No obligation · a human replies within one working day