DecisaBlog
Back to blog
Tracking6 min read

UTM Templates for Google Ads, Meta and TikTok (Copy, Paste, Done)

Copy-paste UTM templates for Google Ads, Meta and TikTok using each platform's dynamic parameters — plus the naming conventions that keep reports clean.

By Decisa Team ·

Open the campaign report of any account that has been running paid traffic for a few months and look at the utm_campaign column. You will almost certainly find the same campaign spread across three rows — summer_sale, Summer Sale, summersale-v2 — plus a fat (not set) row where someone forgot to tag at all. Every one of those rows is a decision you can no longer make, because the data that should answer "which campaign produced this order?" got shredded at the moment of tagging.

The fix is not discipline. It is removing humans from the loop. All three major ad platforms can inject campaign, ad set and ad values into your URLs automatically at click time. This post gives you one copy-paste template per platform and the handful of conventions that keep the output clean for years.

Let the Platform Fill In the Blanks

Hand-typed UTMs fail for a boring reason: people abbreviate, capitalize and rename inconsistently. Dynamic parameters fail never, because the platform substitutes the real value on every click. Each platform has its own syntax for the same idea:

What you wantGoogle Ads (ValueTrack)Meta (dynamic parameters)TikTok (macros)
Campaign name— (not available){{campaign.name}}__CAMPAIGN_NAME__
Campaign ID{campaignid}{{campaign.id}}__CAMPAIGN_ID__
Ad set / ad group{adgroupid}{{adset.name}}__AID_NAME__
Ad / creative{creative}{{ad.name}}__CID_NAME__
Keyword{keyword}
Placement{placement} / {network}{{placement}}__PLACEMENT__
Click IDgclid (auto-appended)fbclid (auto-appended)ttclid (auto-appended)

Three syntaxes, one principle: write the template once, and every URL the platform serves carries the truth about where the click came from.

Google's dynamic values are called ValueTrack parameters. The cleanest setup is a single account-level final URL suffix — Settings → Account settings → Tracking — so every campaign inherits it and nobody edits URLs per ad:

utm_source=google&utm_medium=cpc&utm_campaign={campaignid}&utm_term={keyword}&utm_content={creative}

What each piece does:

  • {campaignid} — the numeric campaign ID. Note the table above: ValueTrack has no campaign-name parameter, so you pass the ID and map it to a name in your reporting layer. The upside is that IDs survive renames; the name in your report stays whatever your tool resolves it to.
  • {keyword} — the bid keyword that matched the search. Populated on Search; empty where keywords do not exist (e.g. Performance Max), which is itself useful signal.
  • {creative} — the ad's ID, so creative tests are separable without guessing.

Worth knowing: {matchtype}, {device} and {network} exist if you want more dimensions, and the gclid click ID is appended automatically by auto-tagging — it rides alongside your UTMs, not instead of them.

Meta: Dynamic URL Parameters

Meta fills values with double-brace parameters in the URL parameters field of the ad setup (Ads Manager → ad level → Tracking → URL parameters):

utm_source={{site_source_name}}&utm_medium=paid&utm_campaign={{campaign.name}}&utm_term={{adset.name}}&utm_content={{ad.name}}

Two deliberate choices in that template:

  • {{site_source_name}} resolves to a short code for where the ad ran — fb, ig, msg or an. That splits your utm_source into up to four values, which is exactly what you want when Instagram and Audience Network perform differently. If you prefer one consolidated row, hardcode utm_source=facebook and pass {{placement}} in a spare slot instead.
  • Names, not IDs — {{campaign.name}} reads beautifully in reports, but Meta substitutes the current name at delivery time. Rename a campaign mid-flight and your history splits into two rows. Pick names you will not touch, or use {{campaign.id}} if your team renames things weekly.

Spaces in names arrive URL-encoded (Summer%20Sale), which is one more reason to name entities in kebab-case from day one. Meta documents the full parameter list in its Business Help Center.

TikTok: URL Macros

TikTok has no separate URL-parameters field — you append the macros directly to the landing page URL when building the ad:

utm_source=tiktok&utm_medium=paid&utm_campaign=__CAMPAIGN_NAME__&utm_term=__AID_NAME__&utm_content=__CID_NAME__

The naming convention trips everyone up once: in TikTok's macro vocabulary, AID is the ad group and CID is the creative. So __AID_NAME__ gives you the ad group name and __CID_NAME__ the ad name — the table in the first section is worth bookmarking just for this. ID variants (__CAMPAIGN_ID__, __AID__, __CID__) exist when you want rename-proof values, and the ttclid click ID is appended automatically, same as Google's gclid and Meta's fbclid.

Conventions That Keep Reports Clean

The templates handle the mechanics. These rules handle the entropy:

  • Lowercase everything. Most reporting tools treat UTMs as case-sensitive, so Facebook and facebook become two rows forever. Hardcoded values lowercase; entity names lowercase at creation.
  • Fix your vocabulary and write it down. One source value per platform (google, facebook or the {{site_source_name}} set, tiktok) and one medium per traffic type (cpc, paid). The enemy is fb, meta and facebook-ads coexisting.
  • Name entities like they will end up in a URL — because they will. br-prospecting-broad-2026 beats [BR] Prospecting | Broad (June) in every report you will ever read.
  • Decide names vs. IDs per platform. Google forces IDs. On Meta and TikTok, names are readable but break on rename; IDs are stable but need a lookup. Either works — mixing them per ad does not.
  • Never hand-edit URLs per ad. Set the template at the highest level the platform allows and let inheritance do the work.
  • Keep UTMs and click IDs separate jobs. gclid/fbclid/ttclid are for click-to-conversion matching; UTMs are for humans reading reports. You need both, and the templates above preserve both.

This is also where a UTM builder earns its keep: in Decisa, links are generated from a fixed vocabulary, so the convention is enforced by the tool rather than remembered by whoever builds Friday's campaign — and the same parameters later join each click to the order it produced.

Set It Up This Week

  1. Google: paste the template into the account-level final URL suffix so every campaign inherits it.
  2. Meta: paste the template into the URL-parameters field — and into your duplication checklist, since new ads copy it from the source ad.
  3. TikTok: append the macro string to the landing page URL in your ad-build routine.
  4. Document the vocabulary (source and medium per platform) somewhere the whole team sees it.
  5. Rename before you launch: kebab-case campaign and ad set names on Meta and TikTok, then stop renaming.
  6. Verify with one real click per platform: click a live ad, check that every parameter arrived populated and lowercase on your landing page.

Tagging is the least glamorous work in paid media, and the templates above make it a one-time job. Do it once, properly, and every report you open for the next year answers the only question that matters: which ad actually produced this order.