AnalyticsCampaign SetupWorkflowAdvanced

How to Set Up UTM Tracking for Video Ad Campaigns

One lowercase naming convention, dynamic parameters at ad level, a phone-click QA, and a GA4 check so each video variant is visible in your store analytics.

Updated 2026-05-1012 min read

Without UTMs at the creative level, your store and your ad platform can both be 'right' and still be useless: you will know the channel made sales, not which video did the work. Half of what looks like an attribution gap is paid traffic dumped into Direct because parameters were missing, mixed-case, or stripped on redirect. This tutorial writes one convention, maps it onto dynamic URL parameters, proves the string survives a phone click, and checks GA4 so a hook-rate winner can be tied to an actual order — without pretending last-click is the only truth.

01

Write one lowercase convention before you tag anything

Takes 20 minutes

Pick the five standard fields and lock the spelling: source, medium, campaign, content, and term if you truly need it. Everything lowercase, hyphens not spaces, no personal punctuation. Case inconsistency splits one channel into several rows, so Facebook and facebook become two sources. Write the convention in a shared doc, not in someone's Ads Manager memory.

Source and medium identify the channel: meta plus paid_social, tiktok plus paid_social, youtube plus paid_social. Do not invent a new medium per placement unless you have a report that actually uses it — feed versus reels is usually better as content or as a dynamic placement parameter, not as a third spelling of the channel. Campaign identifies the campaign you can find in Ads Manager, using the same string you already use in the campaign name. Content is where the creative lives: hook family, avatar, variant. Term is optional and is where most conventions rot; leave it blank until you have a use.

Reuse the exact creative identifier you already put in the ad name. If the file is serum-hookA-avatar2, that string is utm_content. A report row should trace back to a specific video without a lookup table. Encode enough detail to be useful later but not so much that nobody can remember the pattern on a Friday launch. A companion diagnosis of what happens when this layer is broken lives in the attribution-gap walkthrough; this one is the convention itself, and it only works if both documents use the same tokens.

Pro tip:If two people would tag the same ad differently, the convention is not finished. Add two examples to the doc and stop debating the rest.

02

Map source, medium, campaign and content to real values

Takes 15 minutes

For each platform, write the exact parameter values you will send. Keep source stable even if the UI says Facebook, Instagram or Meta — pick one and never mix. Keep medium paid_social unless you have a hard reason not to. Put the human-readable test name in campaign. Put the variant in content. This is the sheet you will paste from for the next year.

A working pattern looks like this: utm_source=meta, utm_medium=paid_social, utm_campaign=serum-test-q2, utm_content=hookA-avatar2. TikTok gets utm_source=tiktok with the same medium and the same content grammar so a blended store report can still group creative families across channels. YouTube or Demand Gen gets utm_source=youtube. Do not use the word facebook in one campaign and meta in the next 'because the UI changed'. The store does not care what the company is called this quarter; it cares that last month's rows still join.

Resist packing the entire brief into content. Hook, avatar and a short variant token are enough. If you also need the offer or the landing-page version, put that in campaign or in a consistent suffix, not in a 120-character poem. Long UTM strings get truncated by some in-app browsers and by some redirect rules. Short, boring, and identical across six videos in a 3 × 2 grid is the design goal — the six content values should be the only thing that changes inside one test, so a report can compare them without parsing prose.

03

Apply dynamic parameters at the ad, not as a one-off paste

Takes 20 minutes

Set URL parameters on every ad so the value is built at click time from the ad's own name. Manual paste into twenty destination URLs will drift the first time someone duplicates a winner. On Meta, site-source and placement tokens are useful extras; they are not a substitute for content. The campaign field should still be a name you chose, not an accidental autogenerated ID.

Meta's dynamic URL parameters can fill campaign, ad set and ad name at click time, plus placement and site source. Use them for the fields that should always match Ads Manager, and still control spelling: if your ad names are messy, your UTMs will be messy. Clean the naming convention first — hook, avatar, variant, in that order — then point utm_content at the ad name token. TikTok and Google have their own dynamic equivalents; map them onto the same five fields rather than inventing a sixth grammar per platform.

Klip Kanvas can apply naming conventions and UTM parameters when you push creatives into Meta or TikTok, which is the point of shipping a 3 × 2 grid from one brief instead of hand-tagging six URLs. If you launch by CSV or a bulk tool, confirm the UTM column is mapped. A spreadsheet of 40 variants with a blank content parameter is how a healthy account collects 40 unreadable rows in one afternoon. Parameters belong in the production checklist, next to captions and the destination URL, not in a reporting ticket opened three weeks later.

Pro tip:Never put UTMs only on the campaign default and assume every ad inherits them. Check the ad object. That is the URL the click actually uses.

04

Prove the parameters survive a real phone click

Takes 30 minutes

Three things break UTMs silently: redirects, mixed case, and app-to-browser handoffs. Click your own live ad on a phone — not the preview link in Ads Manager — and inspect the final URL on the landing page. If source, medium, campaign and content are still present after every redirect, the layer works. If they are gone, you do not have tracking. You have a theory.

Link shorteners, geo-redirects, www-to-apex rules, and HTTPS upgrades often drop query strings unless they are set to forward them. Test each live destination, including the localised URL if the ad is not in English. Also test an in-app click (Instagram, TikTok, YouTube) and a click that opens the system browser, because those paths are not the same. If a parameter is present on desktop preview and missing on iOS in-app, believe the phone. Fix the redirect chain; do not add a second tracking tool to paper over a stripped query string.

Checkout must still see the first landing. Some themes, consent banners and page builders reload the first view without the original query, then the session lands in Direct. Walk all the way to a test order if you can, and confirm the UTM is stored on the session or order, not only on the first page view. A parameter that dies between landing and purchase is how GA4 shows the click and Shopify calls the order Direct. That gap is a UTM problem, not an iOS mystery, and no modelled ROAS number will tell you which hook family actually sold.

05

Check GA4 traffic acquisition against the convention

Takes 20 minutes

In GA4, open Traffic acquisition and Session source/medium, then drill into Session campaign and Session manual ad content. You should see your lowercase pairs, your campaign names, and one row per variant that has spent. If you see (not set), referral, or a mixed-case twin, the click path is still broken. Do this on a small spend before you scale the grid.

Give the property a day of data after the first clicks — real-time can show the hit, exploration reports lag. Compare session counts to outbound clicks in Ads Manager; they will not match one-to-one, and they should not. You are checking presence and spelling, not forcing a reconciliation to the session. Filter out your own IPs if you can. If content is empty but campaign is filled, the ad-level parameter never fired. If everything is (direct) / (none), the landing stripped the query or the click never reached the tagged URL.

Use GA4 as a lens, not as a priest. Last-click in GA4 or Shopify is a conservative floor. It under-credits video prospecting, especially on iOS, because people see an ad, bounce, and come back via email, branded search, or a naked visit. Last-click will call that organic and you will starve the creative that started the path. Watch both: last-click so you do not get drunk on modelled platform ROAS, blended store revenue so you do not fire the top of funnel. UTMs make that pair possible. They do not make last-click the only religion.

06

Reconcile UTMs with platform names and keep the convention alive

Takes 15 minutes

Once a week, spot-check that new ads still emit the same grammar. Duplicated winners, Advantage+ asset mixing, and 'quick' launches from a phone are how conventions die. If a row appears that you cannot map to a file, treat it as a production defect. The report is only as good as the worst tagged ad in the account, and that ad is usually last week's duplicate.

Join on the content string, not on spend date folklore. The ad name in Meta, the utm_content in GA4, and the filename in your creative sheet should be the same tokens. When they drift, you lose the only reason you did this work: tying a 30%+ hook file to the orders it actually influenced. Do not add a fourth tracker to adjudicate Meta versus Shopify versus GA4 to the cent. Keep the pair you already use for creative ranking and for the business: platform metrics inside one account, store blended plus UTM-assisted views for sanity.

Put UTMs on the publish checklist with disclosure, destination match, and the 6-creative structure. New people will skip the tagging if it is a tribal ritual. A one-line rule is enough: no ad goes live without source, medium, campaign and content, all lowercase, content equal to the ad name. When you localise a winner, keep the content token and change campaign or a market suffix so the hook family still rolls up. A global average of four languages is how a bad market hides inside a good one; UTMs are how you stop that, if you actually fill them in.

Pro tip:The first UTM you skip is the one that belongs to the ad you will later swear was a winner.

Final thoughts

UTM tracking for video ads is a naming problem dressed up as an analytics problem. One lowercase convention, dynamic parameters on every ad, a phone click that still shows the query string, and a GA4 check for (not set) will do more than another dashboard. Use the tags to see which hook and which face showed up in the store — then still rank creatives inside the platform and judge the business on blended revenue. Do that and 'which video actually worked' stops being an argument about whose export is right.

Frequently asked questions

1.Do I need utm_term for video ads?

Usually no. Term is a search leftover. Video tests need source, medium, campaign and content. Add term only when you have a report that actually uses it; otherwise it becomes a junk drawer of spellings.

2.Should UTMs replace the pixel and CAPI?

No. UTMs tell your site and GA4 which creative the click carried. The pixel and Conversions API tell the ad platform what to optimise toward. You want both. A perfect UTM on a destination that never fires purchase events still leaves you blind on CPA.

3.Why do my UTMs show up in GA4 but not on Shopify orders?

The landing page saw the query and checkout did not keep it — a reload, a consent wall, a new domain, or a payment redirect. Walk a test purchase on a phone and confirm the first-touch or last-touch UTM is stored on the order. That is a theme or checkout bug, not a GA4 setting.

4.Can I use the same UTM content value on Meta and TikTok?

Yes, and you should when it is the same file. Source changes; the creative token should not. That is how a hook family rolls up across channels without a mapping spreadsheet.

Ready to put this into practice?

Create your first AI UGC video ad in minutes — no filming, no actors, no editing.

Try Klip Kanvas free

More in this section

Ready to make ads like these?

Paste a product link and Klip Kanvas writes the script, casts the creator and renders the ad — no filming, no actors, no editing.