Quick takeaways
- Always set utm_source, utm_medium and utm_campaign; Google also strongly recommends utm_id and utm_source_platform.
- UTM values are case-sensitive: use lowercase and no spaces.
- Choose utm_medium only from values GA4's default channel group recognises, or traffic lands in Unassigned.
- For QR and print, use medium=qr with a GA4 custom channel group, and a separate short link per placement.
- utm_creative_format and utm_marketing_tactic are not currently reported in GA4.
Short answer: a good UTM naming convention uses lowercase only, one separator (for example underscores between parts and hyphens inside a part), a fixed list of sources (google, facebook, instagram, newsletter, whatsapp…), and only the utm_medium values that GA4's default channel group recognises (cpc, paid_social, social, email, referral, sms…). Name campaigns with a template such as yyyy-mm_market_offer, and keep every link in a shared register. The free UTM builder applies these rules and warns you when a value will split or fall into "Unassigned".
Which UTM parameters does GA4 use?
Google Analytics documents five classic parameters and four newer ones. Google says you should always set source, medium and campaign, and it strongly recommends utm_id and utm_source_platform (Google Analytics Help).
| Parameter | Use it for | Example |
|---|---|---|
| utm_source (required) | Who sent the visit: the platform, site or list | instagram, newsletter |
| utm_medium (required) | The type of channel; drives GA4's channel grouping | paid_social, email |
| utm_campaign (required) | The promotion or initiative | 2026-11_ksa_white-friday |
| utm_term | Paid keyword or audience | running-shoes |
| utm_content | Which creative, link or placement | video-15s, header-button |
| utm_id (strongly recommended) | Your campaign ID, used to join imported cost data | cmp-0142 |
| utm_source_platform (strongly recommended) | The platform that manages buying or organic traffic | meta_ads, google_ads |
| utm_creative_format | The creative type | video, display |
| utm_marketing_tactic | The targeting approach | remarketing, prospecting |
Google notes that utm_creative_format and utm_marketing_tactic are not currently reported in Google Analytics properties. Use them only if another tool reads them. Missing values show as "(not set)" in reports.
Which utm_medium values does GA4 recognise?
GA4 sorts traffic into channels with the rules in its default channel group. Those rules are not case-sensitive, but if your medium matches none of them, the visit lands in Unassigned.
| utm_medium | GA4 channel |
|---|---|
| cpc, ppc, retargeting, or anything starting with paid (paid_social…) | Paid Search, Paid Social, Paid Video or Paid Shopping, depending on the source; otherwise Paid Other |
| display, banner, expandable, interstitial, cpm | Display |
| social, social-network, social-media, sm | Organic Social |
| email, e-mail, e_mail | |
| affiliate | Affiliates |
| referral, app, link | Referral |
| any value containing video | Organic Video (or Paid Video with a paid medium) |
| sms | SMS |
| audio | Audio |
| ends with push, or contains mobile or notification | Mobile Push Notifications |
| qr, print, offline, whatsapp, influencer… | Unassigned, unless you create a custom channel group |
Note the last row. Values such as qr or offline are useful labels, but GA4's default group does not know them. If you want a "QR & Print" channel, create a custom channel group with a rule such as "medium exactly matches qr" and place it above the default rules. Standard GA4 properties can have two custom channel groups, and they apply to past data too.
What naming template should you use?
Write the rules down once and share them with everyone who creates links. This template works for most small teams:
- Everything lowercase. GA4 treats Instagram and instagram as two different values.
- No spaces. Use underscores between parts and hyphens inside a part: 2026-11_ksa_white-friday.
- utm_source = the platform or list, from a fixed list: google, facebook, instagram, tiktok, snapchat, x, linkedin, youtube, newsletter, whatsapp, or the partner's domain.
- utm_medium = the channel type, only from the GA4 list above (plus qr if you add a custom channel group).
- utm_campaign = yyyy-mm_market_offer, such as 2026-03_uae_ramadan-iftar or 2026-09_global_back-to-school.
- utm_content = creative or placement, such as story-video-a, reel-15s, menu-table-card, window-sticker.
- utm_term = keyword or audience, only when you need it.
- utm_id = the ID from your register or ad platform, so the same campaign keeps one ID in every link.
What about Arabic? GA4 can store Arabic values, and the Rabetly builder keeps Arabic letters when it cleans values. In practice, Latin values are easier to filter and compare, and mixing scripts (رمضان vs ramadan) splits one campaign into two rows. Keep source and medium in Latin, because they must match GA4's rules, and pick one script for campaign names.
What do good UTM links look like for each channel?
| Channel | source | medium | campaign | content | GA4 channel |
|---|---|---|---|---|---|
| Google Ads | cpc | 2026-11_ksa_white-friday | search-brand | Paid Search | |
| Meta ads (Instagram) | paid_social | 2026-11_ksa_white-friday | reel-15s-a | Paid Social | |
| Email newsletter | newsletter | 2026-11_ksa_white-friday | hero-button | ||
| WhatsApp broadcast or status | social | 2026-11_ksa_white-friday | broadcast-1 | Organic Social | |
| Influencer (unpaid post) | social | 2026-11_ksa_white-friday | creator-name | Organic Social | |
| Influencer (paid partnership) | paid_social | 2026-11_ksa_white-friday | creator-name | Paid Social | |
| QR code on a flyer | flyer | qr | 2026-11_ksa_white-friday | mall-entrance | Unassigned, or "QR & Print" with a custom group |
Two notes. For Google Ads, keep auto-tagging on: Google says GA4 prioritises auto-tagging (the gclid) over manual UTM tags (Google Ads Help), so manual tags there are mainly a backup. For WhatsApp, tag the landing page you send people to, not the wa.me chat link itself; see how to create a WhatsApp link. Rabetly's Influencer preset starts from source=influencer and medium=social; if you want platform-level reports, put the platform in source and the creator in utm_content, as above.
How do you build consistent UTM links with Rabetly?
- Open the UTM campaign builder and paste the landing page URL. Existing query parameters and #fragments are kept.
- Start from a preset: Google Ads, Facebook/Instagram Ads, Organic Social, Email, Influencer, WhatsApp or QR Print. Then adjust the values to your template.
- Turn on "Clean values" and choose your separator. The builder lowercases, removes symbols that split reports, and warns about capitals, spaces and mediums GA4 will not recognise.
- Open Advanced options to add utm_id and the other GA4 fields, or custom parameters such as ref=partner_a.
- Copy, test and shorten. Open the URL once, then use "Shorten with Rabetly" for a clean link or a QR code. Save campaigns and compare channels in Rabetly campaign tracking.
Already have a tagged link? Paste it into "Parse a tracked URL" to load its values. The builder also removes ad click IDs such as gclid, so a copied ad link does not attribute every future visit to one old click.
What are the most common UTM mistakes?
Mixed case and spaces
Facebook, facebook and face book become three rows. Lowercase everything and never use spaces.
Invented mediums
Mediums such as ig, story or whatsapp send traffic to Unassigned. Put the detail in source or content instead.
Tagging internal links
UTMs on links inside your own site overwrite the real source of the visit. Use them only on links from outside.
Long tagged URLs in QR codes
They make the code dense and hard to scan. Shorten the tagged URL first, as explained in static vs dynamic QR codes.
One link for every placement
Use utm_content and a separate short link per placement. Our QR code UTM guide shows this for print.
No register
Keep a shared sheet with the destination, every UTM value, utm_id, the short link, where it was used and the date.
Checklist
Written rules
A one-page convention with allowed sources, mediums and the campaign pattern.
Lowercase, no spaces
One separator style, used everywhere.
GA4-friendly mediums
cpc, paid_social, social, email, referral, sms… or a custom channel group.
utm_id for every campaign
The same ID in all links of one campaign.
Shared register
Destination, UTMs, short link, placement and dates in one sheet.
Frequently asked questions
Are UTM parameters case-sensitive in GA4?
Yes. Google states that utm_source=google and utm_source=Google are different values, so they appear as separate rows. The channel grouping rules themselves are not case-sensitive, but your reports are.
Should I use hyphens or underscores?
Either works for UTMs, as long as you are consistent. A common pattern is underscores between parts and hyphens inside a part, for example 2026-11_ksa_white-friday.
What utm_medium should I use for QR codes?
GA4's default channel group has no QR channel, so medium=qr shows as Unassigned. Use medium=qr anyway for clarity and add a custom channel group with a rule for it.
What utm_medium should I use for WhatsApp?
Use source=whatsapp with medium=social, which GA4 groups as Organic Social. Avoid medium=whatsapp, which GA4 does not recognise.
Do I need UTMs for Google Ads?
Usually not. Keep auto-tagging on; Google says GA4 prioritises auto-tagging over manual UTM tags.
Can UTM values be in Arabic?
They can, but Latin values are easier to filter and compare. Keep source and medium in Latin and use one script consistently for campaign names.
Sources
Build your next campaign link
Use presets, clean values and GA4 fields, then shorten the link or turn it into a QR code.
Open Rabetly