Most stores do not have a UTM problem. They have a UTM convention problem. The parameters get added, they just get added five different ways by four different people over two years, and by the time anyone looks at a channel report there are entries for facebook, Facebook, fb, meta, and paid-social all describing the same spend. No tool fixes that after the fact. The convention has to exist before the links do.
Here is the structure I set up on new stores, and the reasoning behind each choice, because the reasoning is what stops people from breaking it later.
The five parameters and what each one is for
Source is where the click came from. The platform or property, not the tactic. Facebook, google, klaviyo, postscript, a partner’s domain name. Keep this list short and closed. If a new source appears in your reports, it should be because you genuinely started using a new platform, not because someone typed it differently.
Medium is the type of traffic, and this is the parameter people get wrong. It should answer how the traffic was acquired, not where. Use a fixed vocabulary of maybe six values: cpc, email, sms, social, affiliate, referral. That is it. The moment someone writes facebook-ads into medium, your reports stop rolling up correctly and you will be cleaning it for a year.
Campaign is the thing you are running. This is where a date-first naming scheme earns its keep, because campaign is the field that grows without limit and alphabetical sorting is the only thing standing between you and chaos. Something like 2026-09-fall-launch sorts chronologically forever.
Content distinguishes variants inside one campaign. Different creatives, different placements, different links in the same email. Term was built for paid search keywords and is mostly vestigial now that platforms auto-tag, so I usually leave it empty rather than inventing a use for it.
The rules that actually prevent drift
Lowercase everything. UTM values are case-sensitive, so Facebook and facebook are two rows in your report forever. Use hyphens rather than underscores or spaces, consistently. Never put a space in a value, because it becomes a percent-encoded mess that is technically fine and visually unreadable.
Write the convention down in a shared document with a filled-in example for each channel, and make a spreadsheet or a builder the only sanctioned way to produce a tagged link. The agency, the email person, and the influencer coordinator all need to be reading from the same sheet. Convention documents that live in someone’s head last about one hire.
Shopify-specific things that will bite you
Do not manually tag Google Ads links if auto-tagging is on. The gclid parameter and your UTMs will compete, and depending on configuration one silently wins. Pick one and stay with it.
Watch your redirects. Shopify redirects set up in the admin do not always carry query strings through, so a tagged link pointing at an old URL can arrive stripped. Test every shortened link and every vanity URL by clicking it and reading the address bar. It takes two minutes and catches most of the damage.
Check what your email and SMS platforms tag by default, because most of them apply their own UTMs automatically and their defaults will not match your convention. Klaviyo in particular will happily tag everything as source klaviyo and medium email, which is fine if that is your convention and a mess if you decided on source klaviyo and medium newsletter.
ThoughtMetric, which sponsors this blog, reads these parameters the same way any attribution tool does, which is the point worth making. No platform infers what you meant. The taxonomy you write is the taxonomy you get, and the tool can only be as clean as the links feeding it. Once the convention is set, audit it on a schedule rather than waiting for a report to look wrong. I laid out how I run that check in the UTM audit every Shopify brand should run quarterly.
Common questions
Do UTM parameters hurt SEO?
Not in any way you need to worry about on a store. Tagged URLs can create duplicate variants of a page, but canonical tags handle that and Shopify sets them by default. The real rule is simpler: never use UTMs on internal links between pages of your own site, because that starts a new session and overwrites the original source.
Should I tag organic social posts?
Yes, and it is the highest-return tagging you can do. Untagged organic social frequently lands in direct rather than social, because in-app browsers do not reliably pass a referrer. Tagging is the only way to separate organic social from paid social in your own reporting.
What do I do about the mess I already have?
Do not try to rewrite history. Set the convention, apply it going forward from a clear date, and use channel grouping rules in your analytics tool to fold the old variants into the right buckets. Then pick the date you switched and treat comparisons across it carefully for one full quarter.
Leave a comment