Short answer
Use a shared UTM convention for incoming campaign links. Control medium values, audit tool defaults and measure internal promotions with events.
The answer in detail
Reserve UTM parameters for incoming external campaign links, use lowercase and choose a medium GA4 can classify. A shared naming convention prevents fragmented campaigns and Unassigned traffic. For movement inside the store, measure interactions with events instead of adding acquisition tags.
The benchmark
UTMs are URL labels describing where a visit came from. Google documents more parameters than most teams need daily; start with these five and consistently include source, medium and campaign.
| Parameter | Purpose | Example |
|---|---|---|
utm_source |
Referring platform or sender | newsletter, facebook, partner-name |
utm_medium |
Channel type | email, cpc, affiliate |
utm_campaign |
Campaign | 2026-11-black-friday |
utm_term |
Paid-search keyword | Used for keyword identification |
utm_content |
Link or creative variant | hero-button, video-15s |
Values are case-sensitive: Facebook and facebook can become different sources. Missing parameters can produce (not set) values.
GA4 default channels use rules involving source, medium and other context, not a medium label alone. The following is a practical summary of the source's October 2026 snapshot; check Google's complete rules for your combination.
| Medium | Typical classification or condition |
|---|---|
| email, e-mail, e_mail | |
| sms | SMS |
| social, social-media, social-network, sm | Organic Social |
| Paid pattern such as cpc/ppc/retargeting or beginning paid | Paid Social when source and other rules match social traffic |
| display, banner, cpm | Display |
| affiliate | Affiliates |
| referral, link, app | Referral |
| Ending in push | Mobile Push Notifications, subject to full rules |
| No matching rule | Unassigned |
Shopify also reads UTMs. Its marketing-performance documentation associates visits containing utm_campaign with marketing and constructs channel reporting from campaign data. Identical tags do not make Shopify and GA4 attribution identical.
The rule
Keep one shared spreadsheet and generate outgoing campaign URLs from it. Use lowercase, hyphens instead of spaces and no accents; start campaign names with dates for sorting. Restrict medium through a controlled list. For a QR campaign, define an appropriate custom channel instead of assuming qr is a recognized default medium. See the custom-channel method.
| Channel | Source | Medium | Campaign | Content |
|---|---|---|---|---|
| Newsletter | newsletter | 2026-11-black-friday | hero-button | |
| Meta ad | facebook or instagram | cpc | 2026-11-black-friday | video-15s |
| Unpaid creator post | social | 2026-11-serum-launch | creator-01 | |
| Affiliate | partner-name | affiliate | 2026-q4-partners | article-link |
| SMS | sms | sms | 2026-11-private-sale | link-1 |
Inspect tools' automatic values too. The source cites Klaviyo changing default medium settings from campaign or flow to message type on June 2, 2025, while preserving some saved account settings. At one apparel brand, much email traffic consequently appeared as Unassigned; the estimated fix took 30–60 minutes. Verify the account rather than assuming a new default fixed old settings.
The steps
- Inventory 90 days. Export source/medium pairs from GA4. Find case variants such as Facebook/facebook/fb and unrecognized mediums.
- Write the convention. Use a column per parameter and data validation for medium. Define the campaign owner and naming vocabulary.
- Generate links. With URL in A, source in B, medium in C, campaign in D and content in E, the source's Google Sheets formula adapted to comma-separated locales is
=A2&IF(REGEXMATCH(A2,"\?"),"&","?")&"utm_source="&LOWER(B2)&"&utm_medium="&LOWER(C2)&"&utm_campaign="&LOWER(D2)&IF(E2="","","&utm_content="&LOWER(E2)). Use it only with validated simple values and URLs without fragments or existing UTM duplicates; it is not a general URL encoder. Some spreadsheet locales require semicolons. - Audit tools and migrations. Review email and advertising configurations. One outdoor brand observed by the authors spent roughly three weeks without campaign UTMs after changing email tools.
- Clean internal navigation. Crawl your domain for
utm_in links between your own pages and remove those acquisition labels. A link from a transactional email into the store is external, despite the source grouping it with internal links; tag and classify that incoming email deliberately. - Monitor monthly. Track Unassigned and
(not set), investigate increases and record corrections in the operating log. They are diagnostic signals, not proof that every missing value came from naming.
The pitfall
Tagging a homepage banner with UTMs pollutes campaign interpretation. Its apparent sales may have been acquired by ads, email or search. Attribution behavior depends on report scope; do not assume an internal click always starts a new GA4 session. A different attribution model cannot repair misleading source data.
For internal promotions, use view_promotion and select_promotion, including promotion name and creative_slot. Free-text naming causes another failure: Black-Friday, blackfriday and bf26 split one campaign into separate rows and distort channel conversion comparisons.
What to tell your team
“Last quarter, 14% of sessions were Unassigned and Black Friday had four spellings. From Monday, incoming campaign links come from the shared sheet, and internal navigation uses events.” These figures are fictional.
