How do I create UTM links for ecommerce?
Create UTM links for ecommerce by taking a clean product or collection URL and appending utm_source, utm_medium and utm_campaign with a naming scheme you will still understand next quarter. Optional terms and content distinguish ads. Never stack two UTM sets. CrossKit UTM Builder generates the query string; URL Cleaner removes leftover parameters; Link Checker confirms the page exists.
Inconsistent casing (`Email` vs `email`) splits one campaign into two in analytics. Pick lowercase and stick to it.
Steps
-
Start from a canonical URL
No leftover `fbclid` or old UTMs. URL Cleaner first if needed.
-
Set source = the platform
tiktok, facebook, klaviyo, google.
-
Set medium = the mechanism
cpc, paid_social, email, influencer, affiliate.
-
Set campaign = the offer or flight
ss26_launch, bfcm_2026—human readable, no spaces.
-
Test click-through to checkout UTM survival
Some themes drop query params. Fix that before you spend.
Source, medium, campaign—lowercase and stable
Start from a canonical product or collection URL with no leftover fbclid or old UTMs (URL Cleaner first). utm_source is the platform (tiktok, facebook, klaviyo, google). utm_medium is the mechanism (cpc, paid_social, email, influencer, affiliate). utm_campaign is the offer or flight (ss26_launch, bfcm_2026)—human readable, no spaces. Optional utm_content and utm_term distinguish creatives and keywords. Never stack two UTM sets. Inconsistent casing splits one campaign into two. CrossKit UTM Builder generates the query string; Link Checker confirms the page exists; shorten only after the UTM is final.
Where UTM does and does not apply
UTM is for sites you control, such as Shopify. Amazon attribution is different; use Amazon’s campaign tools where required. Test that themes keep query params through to checkout before you spend. Do not put spaces or Chinese punctuation in UTMs—they encode into strings nobody searches. Do not create a unique campaign name per creative; use campaign for the flight and content for the creative so you can roll up. Shorteners hide parameters from humans, not from the destination site.
How CrossKit fits this job
UTM Builder creates the query string from a clean URL. URL Cleaner removes leftover parameters first. Link Checker confirms the destination is not a 404. URL Shortener comes last, only after the UTM is final. Keep source, medium and campaign lowercase so analytics does not split one flight into two.
Example
Base: `https://shop.example.com/products/harbor-tote`. Built: `...?utm_source=tiktok&utm_medium=paid_social&utm_campaign=harbor_launch&utm_content=creator_mia`. Analytics can attribute that creator without guessing from referrer. Document the naming scheme in one row of a sheet so two people do not invent tiktok vs TikTok vs TT in the same week.
Common mistakes
-
Putting spaces or Chinese punctuation in UTMs
They get encoded and nobody searches that string later.
-
A unique campaign name per creative
You cannot roll up. Use campaign for the flight, content for the creative.
-
Using the creative filename as utm_campaign
You will get thousands of campaign names. Put the flight in campaign and the filename in content.
Recommended tool
UTM Builder
CrossKit UTM Builder creates trackable campaign URLs. Clean with URL Cleaner; shorten with URL Shortener only after the UTM is final; verify with Link Checker.
Frequently Asked Questions
Do Amazon product links need UTM?
Amazon attribution is different from Shopify analytics. Use Amazon’s own campaign tools where required; UTM is for sites you control.
Should I shorten UTM links for TikTok bios?
You can, after the UTM is correct. Shorteners hide the parameters from humans, not from the destination site.
Should every email link have UTM?
Yes if you want email in analytics. Use source=klaviyo (or your ESP), medium=email, campaign=the send name. Keep the names boring and consistent.
Can I add UTM to an already shortened link?
Rebuild from the clean destination, add UTM, then shorten. Do not append UTM onto a short URL and expect analytics to see it.