UTM tracking for an online store works when every link you share outside your site carries the same small set of tags, written the same way every time. Use lowercase with underscores, set utm_source, utm_medium and utm_campaign on every tagged link, pick your medium values from a short fixed list that Google Analytics 4 already recognises, and leave Google Ads links to auto-tagging. That one habit decides whether your sales show up as “Email” or “Paid Social” in GA4, or vanish into “Unassigned”.
Below is a naming system you can copy, the GA4 rules it is built on, the tags that most often go wrong, and how Shopify reads the same tags. Everything was checked against Google Analytics, Google Ads, Shopify and TikTok help pages on November 2, 2026.
Why loose UTM tags break your reports
GA4 treats tag values as plain text, and Google says outright that “Parameter values are case sensitive, e.g. utm_source=google is different from utm_source=Google.” Google’s own best-practice note adds that “SpringSale and Spring_Sale are considered distinct.” So if one person on your team writes Facebook and another writes facebook, your source report shows two rows that you have to add up by hand.
Gaps cause a second problem. Google says: “Missing UTM parameters will result in (not set) values being present in reporting.” And the medium you choose decides which default channel a visit lands in. If GA4 cannot match your tags to any channel rule, the visit is filed as “Unassigned”, which Google describes as “the value Analytics uses when there are no other channel rules that match the event data.”
For a small store this matters most around big promotions. You want to know whether the Black Friday email, the SMS blast or the Instagram ads paid for themselves, and you cannot answer that from a report full of duplicates and unassigned rows. Clean tags are also what make a cost per customer worth trusting, as we explain in how to calculate customer acquisition cost.
The five fields and what each one is for
Google’s URL builder help page lists the UTM parameters GA4 reads. These five are the ones a store uses day to day:
- utm_source: Google describes it as the “Referrer, for example: google, newsletter4, billboard”. In plain terms, who or what sent the visit.
- utm_medium: “Marketing medium, for example: cpc, banner, email”. The type of traffic.
- utm_campaign: “Product, slogan, promo code, for example: spring_sale”. The promotion.
- utm_content: used “to differentiate creatives”, for example two call-to-action links in the same email.
- utm_term: “Paid keyword”.
Google says “you should always use utm_source, utm_medium, and utm_campaign.” It also lists utm_id, utm_source_platform, utm_creative_format and utm_marketing_tactic, and notes that the last two “isn’t currently reported in Google Analytics properties.” Most small stores can skip all four unless they upload campaign cost data.
The three fields to set on every tagged link, plus two optional ones. Field roles from Google Analytics Help, checked November 2, 2026.
Six naming rules that keep reports clean
- Lowercase everything. Google’s guidance is to “Use lowercase as a standard practice.” It removes the most common source of duplicate rows.
- Underscores, never spaces. Spaces get encoded in URLs and are easy to mistype.
black_fridayis safer thanblack friday. - One source name per platform. Google recommends: “Use only one unique utm_source for each distinct platform such as Facebook, Instagram, TikTok.” Decide now whether Instagram ads are
instagramorfacebookand never mix them. - Medium comes from a fixed list. Pick from the values in the table below. Do not invent new ones per campaign.
- Campaign names start with the date. A pattern like
2026_11_bfcmor2026_11_new_arrivalssorts in order and stays unique across years. - Keep the details in utm_content. Ad format, creative version or link position (
video_a,header_button) belong here, so your campaign list stays short.
A copy-ready naming system for a small store
The table maps the channels a typical store uses to tag values, and shows which GA4 default channel each one should land in under Google’s published rules. We built it from the rule text on Google’s default channel group page.
Email from your email tool klaviyo, shopify_email or your tool’s name email 2026_11_bfcm Email. The rule is Source or Medium = “email|e-mail|e_mail|e mail”
SMS or text messages your SMS tool’s name sms 2026_11_bfcm SMS. The rule is Source or Medium “exactly matches sms”
Instagram bio, posts and stories (unpaid) instagram social 2026_11_new_arrivals Organic Social. A medium of “social”, “social-network”, “social-media” or “sm” qualifies on its own
Facebook, Instagram, TikTok or Pinterest ads facebook, instagram, tiktok or pinterest paid_social 2026_11_bfcm A paid channel. “paid_social” matches Google’s paid medium pattern; the source must be on Google’s site lists to count as Paid Social, otherwise it falls to Paid Other
Affiliate or influencer links the partner’s name, for example jane_doe affiliate 2026_11_gift_guide Affiliates. The rule is Medium = “affiliate”
Partner blogs, directories, link-in-bio pages the site’s name referral evergreen Referral. Medium is one of “referral”, “app” or “link”
QR codes on inserts, flyers and packaging package_insert or flyer print 2026_11_repeat_buyer Unassigned. GA4 has no default print channel, so filter these by medium
Google Ads No manual tags. Use auto-tagging. Classified from the Google Ads link, not from UTMs
Our naming system, mapped to the GA4 default channel rules on Google Analytics Help (Default channel group), checked November 2, 2026. Google does not publish the full lists of social, search, video and shopping sites on that page.Two points in that table need a little care. First, Google’s channel rules are not case sensitive (“Channel definitions aren’t case sensitive and can’t be edited”), so Email still lands in the Email channel. The source and campaign rows inside that channel are case sensitive, though, so lowercase still matters. Second, for paid social, Google’s rule needs both a paid medium and a source that is on its social site list, and Google does not publish that list on the help page. After your first campaign, click a test link and check which channel it lands in before you spend real money.
Tags that land in the wrong place
We ran common tag combinations through the GA4 rules in Python to see where each one ends up. These are the patterns worth avoiding.
source=newsletter, medium=newsletter Unassigned Neither value is “email”, “e-mail”, “e_mail” or “e mail” medium=email
source=facebook, medium=facebook (on a paid ad) Not a paid channel “facebook” does not match the paid medium pattern, so the ad can never count as Paid Social medium=paid_social
source=your SMS tool, medium=text Unassigned The SMS rule needs “sms” exactly medium=sms
source=a creator, medium=influencer Unassigned There is no influencer rule; Affiliates needs medium “affiliate” medium=affiliate, creator name in source
medium=cpc, campaign=holiday_shop Matches the Paid Shopping rule Campaign names containing “shop” or “shopping” match Google’s shopping pattern Avoid “shop” in paid social campaign names
Facebook in one ad, facebook in another Same channel, two source rows Channel rules ignore case; tag values do not Lowercase only
Our check of example tags against the manual-traffic rules on Google’s Default channel group page, run in Python on November 2, 2026. Rows that depend on Google’s unpublished site lists assume facebook is on the social list.The fixes are boring on purpose. Each one swaps a creative label for a value Google’s rules already know.
Google Ads: let auto-tagging do the work
Google Ads adds a click identifier, the GCLID, to your ad links. Google says auto-tagging “adds a bit of additional information a parameter called GCLID” to the URL, and that “Auto-tagging is now on by default for new accounts.” The key line for store owners is this: “in Google Analytics 4 (GA4), auto-tagging is prioritized over manual tagging due to the absence of an override option.”
In practice, adding your own UTMs to Google Ads links gives GA4 nothing extra and gives your team one more thing to keep consistent. Link Google Ads to GA4, keep auto-tagging on, and save your naming system for every other channel. If you are still setting up your first campaigns, see where to start with Google Ads on a small budget.
How Shopify reads the same tags
Shopify uses UTM tags in its own reports, separately from GA4. Its marketing help page says: “Traffic that comes to your store with utm_campaign parameters in the URL is attributed to marketing.” Shopify’s attribution view, under Growth > Attribution, uses the “Last non-direct click” model by default, which Shopify says “Gives 100% of attribution credit to the last channel that the customer interacts with before making a purchase, excluding direct visits.” Shopify notes it “can take up to 24 hours” for report data to update.
Shopify Campaigns and auto-match rules
Shopify’s Campaigns feature can group sessions by your UTM values. Shopify says “Your store must be on the Basic plan or higher” and “You need to use a desktop device to create a campaign.” The path is Growth > Campaigns > Create campaign (checked November 2, 2026).
An auto-match rule can use utm_campaign, utm_source, utm_medium, utm_term and utm_content, plus Shopify’s own Channel and Type fields. Every value in the rule has to match. Shopify’s example rule is utm_campaign = "elle" AND utm_source = "facebook", and it says “All additional parameters from the landing page are ignored.” That is a good reason to keep your campaign values identical across channels: one rule on utm_campaign = 2026_11_bfcm can then collect the email, SMS and ad traffic for the whole promotion.
Shopify’s pages do not say whether this matching is case sensitive. Lowercase tags avoid the question entirely. For email and SMS, Shopify also advises that rules should “match on UTM parameters, such as utm_source and utm_medium, instead of the Channel parameter.”
Shopify Messaging adds its own tags
If you send email with Shopify Messaging (formerly Shopify Email), Shopify adds tags for you. Its defaults are utm_source=shopify_email, utm_medium=email and a utm_campaign made from the email name plus an activity ID. You can change them under Apps > Messaging > Settings, in the UTM tracking section. Shopify says “Each parameter value must be 100 characters or less,” and changes apply only to new campaigns, not existing ones or drafts.
The default campaign value will not follow your date pattern, so decide whether to edit it per email or accept it. The medium is already email, which fits GA4’s Email rule. For what to put in those emails, see our guide to a welcome series for the first seven days.
For the Shopify reports that use these fields week to week, see how to read Shopify Analytics.
Building tagged links without typos
Google offers a free Campaign URL Builder for websites, linked from its help page. Ad platforms have their own options. TikTok’s help page recommends its own TikTok URL builder tool for setting up UTM parameters, and lists macros that fill in values automatically, including __CAMPAIGN_NAME__, __AID_NAME__ (ad group name), __CID_NAME__ (creative name) and __PLACEMENT__. If you use macros, your ad names become your tag values, so name your TikTok campaigns in lowercase with underscores too. Our TikTok ads testing guide covers how to structure those first campaigns.
Meta’s help pages on URL parameters blocked our automated check, so we could not confirm Meta’s current dynamic values for this article. Follow Meta’s own instructions inside Ads Manager and confirm the result with a test click.
For everything else, a shared spreadsheet is the simplest builder. Put the page URL in column A, then source, medium, campaign and content in columns B to E, and use this formula in Google Sheets or Excel:
=A2&IF(ISNUMBER(FIND("?",A2)),"&","?")&"utm_source="&LOWER(SUBSTITUTE(B2," ","_"))&"&utm_medium="&LOWER(SUBSTITUTE(C2," ","_"))&"&utm_campaign="&LOWER(SUBSTITUTE(D2," ","_"))&IF(E2="","","&utm_content="&LOWER(SUBSTITUTE(E2," ","_")))
It lowercases every value, swaps spaces for underscores, adds ? or & depending on whether the URL already has parameters, and skips utm_content when it is blank. We checked the same logic in Python on three test rows: a plain product URL, a URL that already had a variant parameter, and a row with mixed-case values and spaces. Add a data validation drop-down on the medium column so nobody can type a value outside your list.
Common mistakes
- Tagging links inside your own store. A UTM tag describes how someone arrived. Putting tags on your homepage banners or menu links mixes up where visitors came from with where they clicked once they were already on the site. Use tags only on links that live outside your store.
- Letting each campaign invent a medium. “story”, “reel”, “bio” and “post” are all
social. Put the detail inutm_content. - Reusing campaign names across years.
bfcmin 2025 andbfcmin 2026 merge into one row. A date prefix prevents it. - Tagging Google Ads by hand. GA4 prioritizes auto-tagging anyway.
- Skipping the test click. One click on a new tag, checked in GA4 and Shopify, catches most mistakes before the budget is spent.
What you should check next
- Write your allowed source and medium values in one shared sheet and share it with anyone who creates links.
- Open your GA4 acquisition reports for the last 90 days and list every source and medium that looks like a duplicate or sits in Unassigned.
- Confirm auto-tagging is on in Google Ads and remove any manual UTMs from ad URLs.
- Check your Shopify Messaging UTM settings and your email tool’s link tracking settings so they use
emailas the medium. - Create a Shopify campaign with an auto-match rule on
utm_campaignfor your next promotion, then send a test link through each channel.
Frequently asked questions
Do UTM tags affect SEO or how Google ranks my pages?
The Google pages we checked for this article do not say. UTMs are meant for links you share in emails, ads and social posts, not for your internal navigation or sitemap, so keep them on external links only.
Should Instagram and Facebook ads use the same source?
Either works as long as you choose once. Google’s advice is one unique source per platform, so many stores use instagram and facebook separately and keep the placement in utm_content.
Why does my campaign show “(not set)” in GA4?
Google says missing UTM parameters produce “(not set)” values. Usually one of the three core fields was left off the link.
What is utm_id and do I need it?
Google describes it as a “Campaign ID” used “to identify a specific campaign or promotion” and to match campaign data you upload. If you do not upload cost data to GA4, you can leave it off.
Will fixing my tags change old data?
No. New tags apply to new visits. Keep a note of the date you switched so you know where the clean data starts.
The takeaway
Pick your values once, write them down, and make every tagged link follow them: lowercase, underscores, the three core fields every time, and a medium GA4 already understands. Let Google Ads auto-tag itself, match Shopify campaigns on utm_campaign, and test each new tag with one click. Clean tags are what turn “which channel worked?” into a question you can answer, and they feed the bigger fix when your store gets traffic but no sales.
Sources
- Google Analytics Help, “URL builders: Collect campaign data with custom URLs”. support.google.com
- Google Analytics Help, “Default channel group” (channel rules and descriptions). support.google.com
- Google Analytics, Campaign URL Builder. ga-dev-tools.web.app
- Google Ads Help, “About auto-tagging”. support.google.com
- Shopify Help Center, Measuring marketing performance. help.shopify.com
- Shopify Help Center, Marketing reports. help.shopify.com
- Shopify Help Center, Understanding Campaigns (auto-match rules). help.shopify.com
- Shopify Help Center, Creating campaigns. help.shopify.com
- Shopify Help Center, Shopify Messaging email analytics (UTM tracking parameters). help.shopify.com
- TikTok Ads Manager Help, “About UTM Parameters” (last updated February 2026). ads.tiktok.com
Last reviewed: November 2, 2026. GA4 channel rules, Shopify admin paths and plan requirements, and platform tagging options were checked on this date.
How this article was made: researched and drafted with AI assistance, with every factual claim checked against the sources above. The naming system and example tag values are our recommendation, and the “wrong place” table is our own check of example tags against Google’s published rules, assuming facebook is on Google’s unpublished social site list.
Related guides
- How to read Shopify Analytics: the reports that matter weekly
- How to calculate customer acquisition cost correctly
- Google Performance Max for Shopping: when it works
- Email welcome series: what to send in the first seven days
