SMS UTM Naming Conventions: Templates for Source, Medium and Campaign

Copy-ready SMS UTM templates for campaigns, flows and holiday sends. Set utm_medium=sms, pick one source rule and keep GA4 SMS reports clean.

Blue UTMCraft banner with the title SMS UTM Naming Conventions beside a phone showing a text message link and a GA4 source/medium table with sms rows
Table of Contents
  1. Why SMS naming matters
  2. The core rules
  3. Field-by-field template
  4. Campaign templates
  5. Automated flow templates
  6. Holiday send templates
  7. Using utm_content and utm_term
  8. What about RCS and MMS?
  9. Governance note
  10. What to do now
  11. FAQ

For SMS, set utm_medium=sms in lowercase on every text link, use your SMS platform name as utm_source, and build utm_campaign from one fixed pattern. GA4 only puts traffic in its SMS channel when the source or medium is exactly sms, so the medium value is the one you cannot get creative with. Everything else is about keeping reports readable. Below are copy-ready templates for campaigns, automated flows and holiday sends, plus a short governance note.

This post is part of our complete guide to SMS UTM tracking in GA4. If your text traffic is already landing in the wrong channel, start with why SMS traffic shows as Direct or Unassigned.

Why SMS naming matters

GA4 sorts sessions into channels with fixed rules. Its default channel group assigns a session to SMS when the source exactly matches sms or the medium exactly matches sms. Exact match means close is not good enough. These values all miss the SMS channel:

  • text or txt
  • sms-campaign or sms_blast
  • mms or rcs
  • campaign or flow (older platform defaults)

When no channel rule matches, GA4 reports the session as Unassigned. When a text link has no UTMs at all, the click usually opens in the phone browser with no referrer, so GA4 reports it as Direct. Either way, your SMS revenue disappears into a bucket nobody owns.

GA4 channel rules are case-insensitive in practice, but reports still show SMS and sms as separate rows in source/medium tables. Use lowercase sms exactly and you avoid both problems.

The core rules

  1. Medium is always sms. Not the message type, not the flow name. Put those in campaign or content.
  2. Source is the sending platform. For example klaviyo, attentive or postscript. This tells you which tool sent the message when you run more than one.
  3. Lowercase everything. Use hyphens inside a value and avoid spaces.
  4. One pattern per field. Write it down and do not change it mid-quarter.
  5. No personal data. Never put phone numbers, names, emails or customer IDs in a UTM. Google's policies prohibit sending personally identifiable information to Analytics.
  6. Campaign values say what and when. A date prefix plus a short theme sorts well and stays unique.

Some teams prefer utm_source=sms and put the platform name elsewhere. That also lands in the SMS channel. We recommend platform-as-source because it lines up with how most SMS platforms tag links by default and keeps the source column useful. Pick one and use it everywhere. For general naming rules, see our UTM naming conventions guide.

Field-by-field template

ParameterPatternExampleNotes
utm_sourcesending platformklaviyoLowercase. One value per tool.
utm_mediumalways smssmsRequired for the GA4 SMS channel.
utm_campaignyyyy-mm_theme for campaigns, flow_name for automations2026-11_bfcm-early-accessUnique per send. No spaces.
utm_contentlink position or message variantlink-1Optional. Useful when one text has two links or an A/B test.
utm_termaudience or segment labelvipOptional. Use a segment name, never a person.
utm_idcampaign ID if you use onesms-2611-04Optional. Only if you match to cost or CRM data.

The underscore in the campaign pattern splits the date from the theme. Hyphens join words inside the theme. That makes values easy to filter: 2026-11_ shows every November send, and flow_ shows every automation.

Campaign templates

Campaigns are one-time sends to a list or segment. Each one gets its own campaign value.

Send typeutm_sourceutm_mediumutm_campaignutm_content
Sitewide saleklaviyosms2026-10_fall-salelink-1
Product launchklaviyosms2026-10_launch-trail-jacketlink-1
VIP early accessklaviyosms2026-11_vip-early-accesslink-1
Restock announcement (one-time)klaviyosms2026-10_restock-best-sellerslink-1
Last-chance reminderklaviyosms2026-10_fall-sale-last-chancelink-1
A/B test, variant Bklaviyosms2026-10_fall-salevariant-b

Notice the last-chance reminder gets its own campaign value. If you reuse the original value, you cannot tell how much the reminder added. The A/B test keeps one campaign value and splits variants with utm_content, so the campaign total still adds up.

Replace klaviyo with your own platform. If you send through Attentive or Postscript, those tools set their own source defaults, so check your account and match the template to what they actually output.

Automated flow templates

Flows (Klaviyo) or journeys (Attentive) run all year. Do not date them. Give each flow a stable name and use utm_content for the step.

Flowutm_sourceutm_mediumutm_campaignutm_content
Welcome seriesklaviyosmsflow_welcomestep-1, step-2, step-3
Abandoned cartklaviyosmsflow_abandoned-cartstep-1, step-2
Abandoned checkoutklaviyosmsflow_abandoned-checkoutstep-1, step-2
Browse abandonmentklaviyosmsflow_browse-abandonstep-1
Back in stockklaviyosmsflow_back-in-stockstep-1
Post-purchase cross-sellklaviyosmsflow_post-purchasestep-1, review-request
Winbackklaviyosmsflow_winbackstep-1, step-2

If you rebuild a flow with a new offer and want to compare old and new, add a version suffix: flow_welcome-v2. Change the value on the day the new version goes live and note the date in your naming sheet.

Most SMS platforms can fill the campaign value automatically from the flow or message name. That is convenient, but it means anyone who renames a flow also renames its GA4 campaign. Klaviyo also offers dynamic values such as list or segment name and ID. See Klaviyo's UTM tracking docs and our Klaviyo SMS UTM setup guide for the options.

Holiday send templates

Holiday weeks are when naming falls apart. Several people send fast, and a few typos split one campaign into three rows. Agree on these values before November.

Sendutm_campaignutm_contentTip
Black Friday early access2026-11_bfcm-early-accesslink-1A shared bfcm theme word lets you total the whole event.
Black Friday day-of2026-11_bfcm-black-fridaylink-1Separate from early access so you can compare.
Cyber Monday2026-11_bfcm-cyber-mondaylink-1Use the month the send goes out.
BFCM last call2026-12_bfcm-last-calllink-1Date follows the send, even if the sale started in November.
Shipping cutoff reminder2026-12_holiday-shipping-cutofflink-1Short, urgent sends benefit from their own value.
Gift card push2026-12_holiday-gift-cardslink-1Point to a gift card page, not the homepage.
New Year sale2027-01_new-year-salelink-1New year prefix keeps sorting correct.
Valentine's Day2027-02_valentines-daylink-1Plain ASCII only. No apostrophes in values.

Source and medium stay the same in every row: your platform and sms. A shared theme word such as bfcm lets you filter the whole event in GA4 with a "contains" match while still seeing each send. For more holiday pitfalls, read 10 SMS tracking mistakes that break your holiday campaign data.

Using utm_content and utm_term

Most texts have one link, so utm_content is often just link-1. It earns its place when:

  • A message has two links, such as a product and a size guide. Use link-1 and link-2, or product and size-guide.
  • You run an A/B test. Use variant-a and variant-b.
  • A flow has several steps. Use step-1, step-2 and so on.

Use utm_term for an audience label like vip, new-subscribers or lapsed-90d. Keep it to segment names. A term value that identifies one person is personal data and does not belong in a URL. To find these fields in reports, see how to find utm_content and utm_term in GA4.

What about RCS and MMS?

Some platforms now tag by message type. Postscript, for example, replaced its static medium with a Message Type token that outputs SMS or RCS depending on the channel actually used (Postscript docs). An rcs medium does not match GA4's SMS rule, so those sessions land in Unassigned.

You have two choices:

  • Force sms for all text-style messages. Simple, and everything stays in the default SMS channel. You lose the RCS split in source/medium.
  • Keep rcs and mms as separate mediums and create a custom channel group with a channel such as "SMS & RCS" where medium matches the regex ^(sms|rcs|mms)$. Custom channel groups apply to past data too.

We recommend the second option if RCS is a real part of your program, because rich cards and buttons may perform differently. Either way, check what value actually appears in GA4, including case. More detail in RCS business messaging UTM tracking.

Governance note

A naming convention only works if someone owns it. Keep this light:

  • One owner. Name one person who approves new campaign patterns and flow names.
  • One naming sheet. List allowed source values, the medium, the campaign pattern, every live flow value, and the date each changed.
  • Check platform defaults twice a year. Vendors change defaults. Klaviyo moved its default utm_medium to a Message type value on June 2, 2025, but accounts that had saved custom UTM settings before then kept their old values. Older accounts may still send campaign or flow as the medium.
  • Lock the medium. Where your platform allows it, set utm_medium globally and stop people overriding it per message.
  • Review weekly in busy seasons. In GA4, filter session medium for anything that looks like a text value but is not exactly sms.

A shared builder helps too. When everyone creates links from the same template in UTMCraft, typos drop. For teams producing many links at once, see our bulk UTM workflow.

What to do now

  • Open your SMS platform's UTM settings and confirm the medium outputs lowercase sms.
  • Decide your source rule (platform name) and write it down.
  • Copy the campaign, flow and holiday tables above into your naming sheet and adjust the theme words.
  • Rename any flow values that include dates or spaces.
  • Send a test text to your own phone, tap the link and check the URL in the address bar.
  • In GA4, look at Traffic acquisition by session source/medium and fix any text traffic outside / sms.

Run through our UTM QA checklist before your first holiday send.

FAQ

Should utm_source be sms or the platform name?

Both work for GA4's SMS channel, because the rule matches source or medium. We recommend utm_medium=sms with the platform as source. It keeps the source column informative when you use more than one tool.

Does capitalization matter for utm_medium=sms?

Channel matching is case-insensitive in practice, but SMS and sms still show as separate rows in source/medium reports. Use lowercase sms exactly.

Should flow campaign values include a date?

No. Flows run continuously, so a date becomes wrong quickly. Use a stable value like flow_abandoned-cart and add a version suffix only when you rebuild the flow.

Can I put the customer's first name or phone number in a UTM?

No. UTMs must never contain phone numbers, names, emails or other personal data. Use segment labels instead.

For the broader setup, read SMS UTM Tracking: The Complete Guide to Measuring Text Message Campaigns in GA4. Browse the SMS & Messaging Tracking guides to choose another troubleshooting task.

References