Short answer: A UTM parameters example: https://example.com/offer?utm_source=facebook&utm_medium=paid-social&utm_campaign=diwali-sale-oct-2026&utm_content=reel-hindi-v1. Always set utm_source, utm_medium and utm_campaign, write every value in lowercase from an approved list, and pick the medium to match GA4's default channel group rules, or the visit lands in "Unassigned". Leave Google Ads to auto-tagging, never put personal data in a UTM, and log every link in one shared sheet.
Need this done for you? GrowthSparx offers a fixed-scope lead tracking and attribution setup: GA4, Google Ads, Meta, WhatsApp, calls and CRM wired into one dashboard, usually live in 2–3 weeks.
What are UTM parameters and which ones does GA4 read?
UTM parameters are labels you add to the end of a link so analytics tools know which campaign sent the visit. GA4 reads nine of them. Google's URL builders help page says to "always use" source, medium and campaign, and that values are case sensitive: google and Google become two different sources.
| Parameter | Answers the question | Our convention | Required? |
|---|---|---|---|
utm_source | Which site, app or list sent the visit? | Platform name: facebook, instagram, linkedin, newsletter, whatsapp | Yes |
utm_medium | What kind of channel? | From a fixed list of 10–12 values (see the channel table below) | Yes |
utm_campaign | Which campaign or offer? | offer-month-year, e.g. monsoon-sale-jul-2026 | Yes |
utm_content | Which creative or link? | format-language-version, e.g. reel-hindi-v2 | Recommended |
utm_term | Which keyword or audience? | Paid keyword or audience name, e.g. lookalike-1pc-buyers | Optional |
utm_id | Which campaign ID? | The platform campaign ID, useful if you import cost data | Optional |
utm_source_platform | Which buying platform? | Rarely needed outside Google's own platforms | Optional |
utm_creative_format, utm_marketing_tactic | Creative type; prospecting vs remarketing | Skip: Google says these are "not currently reported" in GA4 | No |
Missing values show up as "(not set)" in reports. Parameter order does not matter, and GA4 strips UTMs from the "Landing page + query string" dimension; you will find the full tagged URL under "Page location".
UTM parameters examples by channel (copy and adapt)
These are the patterns we use for Indian lead-generation and D2C accounts. Each row shows the GA4 default channel the visit should land in, based on the rules in the next section. Replace the campaign and content values with your own. You can generate any of them with our free UTM builder, which lowercases and encodes values for you.
| # | Placement | utm_source | utm_medium | utm_campaign / utm_content | GA4 channel |
|---|---|---|---|---|---|
| 1 | Meta ad, Facebook feed | paid-social | 3bhk-sector-150-oct-2026 / carousel-english-v1 | Paid Social | |
| 2 | Meta ad, Instagram Reel | paid-social | diwali-sale-oct-2026 / reel-hindi-v2 | Paid Social | |
| 3 | Meta retargeting ad | retargeting | diwali-sale-oct-2026 / cart-abandoners-static-v1 | Paid Social | |
| 4 | Instagram bio link | social | always-on / bio-link | Organic Social | |
| 5 | LinkedIn sponsored post | paid-social | cfo-webinar-nov-2026 / document-ad-v1 | Paid Social | |
| 6 | Google Search ad | No UTMs: keep auto-tagging on (GCLID) | Paid Search | ||
| 7 | Microsoft Ads search ad | bing | cpc | brand-search-2026 / rsa-v1 | Paid Search |
| 8 | Google Business Profile website button | organic | gbp-noida-office / website-button | Organic Search | |
| 9 | WhatsApp broadcast to opted-in list | broadcast | open-house-nov-2026 / template-v1 | Organic Social (default) or a custom "WhatsApp" channel | |
| 10 | Link sent by sales on WhatsApp | sales-followup | pricing-page / rm-share | Organic Social (default); exclude from budget decisions | |
| 11 | Email newsletter (Zoho Campaigns, Mailchimp) | newsletter | nov-2026-edition / hero-cta | ||
| 12 | Transactional SMS | sms | sms | emi-reminder-nov-2026 / link-1 | SMS |
| 13 | QR code on a hoarding | hoarding-noida-expressway | qr-code | launch-oct-2026 / qr-billboard-v1 | Unassigned unless you add a custom channel |
| 14 | QR code on a brochure or standee | brochure | qr-code | expo-pragati-maidan-2026 / standee-a | Unassigned unless you add a custom channel |
| 15 | Paid influencer, Instagram story link | paid-influencer | skincare-launch-nov-2026 / creator-handle-story | Paid Social | |
| 16 | Unpaid creator or barter post | social | skincare-launch-nov-2026 / creator-handle-barter | Organic Social | |
| 17 | Commission-based affiliate | partner-site-name | affiliate | festive-2026 / banner-300x250 | Affiliates |
| 18 | YouTube video description (organic) | youtube | video | emi-explainer-2026 / description-link | Organic Video |
| 19 | Paid listing on a property portal linking to your site | 99acres | paid-listing | sector-150-oct-2026 / featured-listing | Paid Other |
A full link from row 2 looks like this:
https://example.com/diwali-sale?utm_source=instagram&utm_medium=paid-social&utm_campaign=diwali-sale-oct-2026&utm_content=reel-hindi-v2
For Meta ads, add the tags in the ad's URL parameters field rather than in the website URL, so the landing page stays clean and the same parameters apply to every placement. Meta also offers dynamic values (campaign, ad set and ad names) that fill in automatically; if you use a dynamic source value, check in GA4 which values actually arrive, because any source that is not on Google's social list will not reach Paid Social.
How does GA4 decide the channel from your UTMs?
GA4 sorts manually tagged traffic into its default channel group using source, medium and campaign name. These are the rules that matter for the examples above:
| Channel | Rule for manual (UTM) traffic |
|---|---|
| Paid Social | Source is on Google's social-site list and medium matches ^(.*cp.*|ppc|retargeting|paid.*)$ |
| Organic Social | Source is on the social list, or medium is social, social-network, social-media, sm, social network or social media |
| Paid Search | Source is on the search-site list and medium matches the same paid pattern |
| Organic Search | Source is on the search list, or medium is exactly organic |
| Source or medium is email, e-mail, e_mail or e mail | |
| SMS | Source or medium is exactly sms |
| Affiliates | Medium is affiliate |
| Referral | Medium is referral, app or link |
| Display | Medium is display, banner, expandable, interstitial or cpm |
| Organic Video / Paid Video | Source is on the video list (or medium contains "video" for organic); paid needs the paid medium pattern |
| Paid Other | Medium matches the paid pattern but no other paid rule applies |
| Unassigned | Nothing matches |
Google publishes the source lists as a downloadable spreadsheet from the same help page. Checked October 2026, facebook, fb, instagram, ig, linkedin, whatsapp, quora and t.me are listed as social; youtube is listed as video; google and bing as search. "telegram", "sharechat" and "x" were not on the list, so tag those visits with utm_medium=social (organic) or a custom channel.
Three consequences people miss:
- Any medium containing "cp" counts as paid.
cpc,cpmandcplall match.*cp.*. That is why row 19 lands in Paid Other: 99acres is not on the social or search lists, but the medium is paid. - Invented mediums fall into Unassigned.
qr-code,influencer,printandofflinematch nothing. Either use a medium GA4 recognises or build a custom channel group (Admin, Data display, Channel groups). Standard properties get two custom groups of up to 50 channels each, and Google says they apply to reports retroactively. We usually add "QR and Offline" (medium exactlyqr-code) and "WhatsApp" (source exactlywhatsapp) above the social channels. - The source alone can decide the channel. Because
whatsappis on the social list, a WhatsApp broadcast taggedutm_medium=broadcaststill lands in Organic Social. If you want WhatsApp separated from Instagram, the custom channel is the only clean way.
Why not tag Google Ads with UTMs?
Auto-tagging appends a GCLID to every ad click, and Google's auto-tagging page states that in GA4 "auto-tagging is prioritized over manual tagging due to the absence of an override option." Manual UTMs on Google Ads add maintenance without changing GA4 reports, and the GCLID is what offline imports need. If you want keyword or match-type detail in your CRM, use ValueTrack parameters in a tracking template, e.g. {lpurl}?kw={keyword}&mt={matchtype}&cid={campaignid}. The template must include {lpurl} or the landing page breaks.
What naming convention should you use?
The convention matters more than the exact words. Ours, which matches the defaults in the UTM builder:
- Lowercase only. Case sensitivity is the commonest cause of split rows.
- Hyphens between words, no spaces, underscores or plus signs. Pick one separator and never mix.
- Source = the platform, not the agency or the tool that sent it. Use
newsletternotzoho, because you may switch tools. - Medium = channel type from a closed list. Ours:
paid-social,retargeting,cpc,social,email,sms,broadcast,sales-followup,affiliate,paid-influencer,qr-code,referral,video,organic. - Campaign = offer-or-project + month + year, so a report sorted alphabetically groups by offer:
open-house-nov-2026. - Content = format-language-version, so you can filter on "hindi" or "reel" across campaigns.
- Term = keyword or audience, used only where it adds a decision (e.g. comparing a lookalike with an interest audience).
UTM parameter validation rules
Run every link through these checks before it goes into an ad, email or QR code. If you keep links in a Google Sheet, rule 1 can be a data-validation formula: =REGEXMATCH(B2,"^[a-z0-9]+(-[a-z0-9]+)*$").
| Rule | Pass | Fail |
|---|---|---|
1. Values match ^[a-z0-9]+(-[a-z0-9]+)*$ | diwali-sale-oct-2026 | Diwali Sale, diwali_sale--2026 |
| 2. Source, medium and campaign all present | All three set | Medium missing, so the row reads "(not set)" |
| 3. Medium is on the approved list | paid-social | fb-ads, paidsocial, Paid_Social |
| 4. Source + medium give the intended GA4 channel | instagram + paid-social = Paid Social | insta + ads = Unassigned |
| 5. No personal data | utm_content=rm-share | utm_term=9876543210, an email address or a name |
| 6. No UTMs on internal links | Tags only on links from outside your site | A homepage banner tagged to your own pricing page, which restarts attribution |
7. Exactly one ?, then & between pairs, any #anchor last | /page?ref=a&utm_source=x#form | /page#form?utm_source=x (UTMs after the # are not read) |
| 8. Survives redirects | Parameters visible on the final page | Shortener or http-to-https redirect drops the query string |
| 9. No UTMs on Google Ads final URLs when auto-tagging is on | GCLID only | Both GCLID and UTMs |
Rule 5 is a Google policy, not a preference. Google's PII guidance names utm_source, utm_medium, utm_term, utm_campaign and utm_content as places personal information must not appear. It also matters under India's DPDP Act: a phone number in a URL ends up in server logs, analytics and every tool that sees the link.
What should a UTM governance sheet contain?
One shared sheet, one owner, and a rule that nobody types a UTM by hand. Columns we use:
| Column | Example | Why |
|---|---|---|
| Date created | 2026-10-08 | Audit trail |
| Owner | Priya (paid social) | Who to ask when a row looks wrong |
| Destination URL | https://example.com/sector-150 | Checks the page still exists |
| source / medium / campaign / content / term | facebook / paid-social / 3bhk-sector-150-oct-2026 / carousel-english-v1 / – | Validated by formula |
| Expected GA4 channel | Paid Social | Checked against GA4 a day after launch |
| Final URL | Generated by formula, never typed | Removes typos |
| Placement | Meta ad set "NCR 28-45 lookalike" | Links the tag to where it was used |
| QA status | Tested: redirect OK, GA4 OK, CRM OK | Nothing goes live untested |
Review the sheet monthly against GA4's "Session source / medium" report. Any combination that appears in GA4 but not in the sheet is a link someone made by hand, and any session landing in Unassigned points to a medium that needs fixing.
How do you get UTM values into the CRM?
GA4 tells you which campaigns bring sessions. Only the CRM can tell you which campaigns bring buyers, so the UTMs have to travel with the lead:
- On landing, a small script stores the UTMs and click IDs (
gclid,fbclid) in a first-party cookie, so they survive if the visitor browses three pages before enquiring. - Hidden form fields read the cookie and submit
utm_source,utm_medium,utm_campaign,utm_contentand the click IDs with the lead. Our form tracking guide covers the GTM side. - Map each hidden field to its own CRM property, with separate first-touch and latest-touch versions. How to persist and report those is covered in CRM revenue attribution setup.
- Submit one test lead per channel from the governance sheet and check the CRM record before launch.
If your form or checkout sits on another domain, the UTMs and GA4 session will break at the hop unless you configure cross-domain tracking.
What are the most common UTM mistakes?
- Three spellings of one medium. "paid_social", "paidsocial" and "Paid-Social" create three rows. Fix: closed medium list, validated by formula.
- Tagging internal banners. A visitor from a Meta ad who clicks your own tagged banner gets a new session credited to the banner. Fix: use GA4 events or
?ref=parameters for internal promotion tracking, never UTMs. - UTMs on a QR code that points to a short link with no redirect test. Printed material cannot be corrected. Fix: point the QR at a redirect you control and test it on Android and iPhone camera apps before printing.
- Treating sales follow-up links as marketing. When a relationship manager sends the pricing page on WhatsApp, last-click reports credit WhatsApp for a deal Meta or Google created. Fix: tag them
utm_medium=sales-followupand report them separately. Our first-touch vs last-touch guide explains why this distorts budgets. - Click-to-WhatsApp ads tagged like website ads. These clicks open a chat, not your site, so UTMs never reach GA4. Use the referral data in the chat webhook instead, as covered in WhatsApp lead tracking.
Sources
- Google Analytics Help: URL builders, collect campaign data with custom URLs (supported parameters, case sensitivity, required fields)
- Google Analytics Help: Default channel group (channel rules, medium regex and the source-category spreadsheet)
- Google Analytics Help: Custom channel groups (two per standard property, 50 channels, retroactive)
- Google Ads Help: About auto-tagging (auto-tagging prioritised over manual tagging in GA4)
- Google Ads Help: ValueTrack parameters (tracking template parameters, {lpurl} requirement)
- Google Analytics Help: Best practices to avoid sending PII (no personal data in UTM values)
