Tag Docket

Platforms

7 ad platforms, kept as data.

Every platform writes its tracking macros differently, and each one changes its documentation on its own schedule. Here is what each pack knows, which version it is on, and — honestly — how closely we can watch each platform for changes.

7
Platform packs
1
Machine-readable, checked daily
3
Documentation pages monitored
3
Not automatically monitored

Generated from the product’s own pack files; latest pack effective September 28, 2026. 71 macros and 25 rules across the catalogue. Nothing on this page is maintained by hand.

Macros pass through byte for byte

A template token that matches one of your dimensions is substituted. Everything else is left exactly as written. That one rule covers every platform’s macro family.

Passing through is the contract, not a fallback. A macro that gets lowercased or URL-encoded is silently broken — the link looks right until an ad serves. And because a mistyped dimension would also pass through, unresolved tokens are checked against the platform’s pack and anything the platform would not recognise is flagged.

How the composer treats each kind of token
TOKEN FROM RESULT
{season} Your taxonomy Substituted with its approved value
{campaignid} Google Ads, Microsoft Advertising Passed through, byte for byte
{{campaign.name}} Meta, Snapchat Passed through, byte for byte
__CAMPAIGN_NAME__ TikTok Passed through, byte for byte

Every mint records its pack version

A platform changing its syntax is a pack update, not a software release. Because each link stores the version it was checked against, a platform change becomes a question you can ask of every link ever built — which live links use the token that changed — rather than a note that says “we updated our rules”.

Detection is automated. Publication is not.

When a monitored source changes, it opens a review carrying the diff, and a person decides. Publishing straight from a scraped page is how a mistake reaches every agency at once. The automation buys awareness, not authority.

Silence is not success

A check that quietly stops working looks exactly like a page that has not changed. So the alarm is “has not been read successfully on schedule”, never merely “has changed” — and only the parameter table is fingerprinted, not the whole page, so unrelated edits stay quiet.

Meta

2026.09.1
Not automatically monitored Verified September 28, 2026

Name macros freeze at first publish: rename the campaign later and GA4 keeps reporting the original name. The pack warns.

The help page renders in the browser and needs a headless browser to read. That is deliberately not wired in: a half-working path that returned an empty page would look exactly like “unchanged”. Checked by hand.

Syntax
Double braces
UTMs go in
url-parameters
Click id
fbclid
Effective
September 28, 2026
Meta documentation the pack is built from

MACROS (9)

  • {{campaign.id}}
  • {{campaign.name}}
  • {{adset.id}}
  • {{adset.name}}
  • {{ad.id}}
  • {{ad.name}}
  • {{placement}}
  • {{site_source_name}}
  • {{media_type}}

RULES (3)

  • Warns

    Name macros resolve to the campaign, ad set or ad name as it was when the ad was FIRST published. Renaming afterwards does not change the parameter, so GA4 keeps reporting the original name indefinitely.

  • Advises

    Editing URL parameters after publish can push the ad set back into the learning phase. Retro-fixing tags on a live campaign is a delivery decision, not a tidy-up.

  • Advises

    GA4 does not derive source or medium from fbclid. Untagged Meta traffic is classified from the referrer and lands in Organic Social, crediting paid spend to organic.

Microsoft Advertising

2026.09.1
Machine-readable, checked daily Verified September 28, 2026

Hard 2,048-character limits on the final URL and tracking template, and an undefined custom parameter arrives as literal text. Both blocked.

Microsoft publishes these docs from a public GitHub repository, so a change arrives as a real commit rather than a rendered diff. The only genuinely machine-readable source.

Syntax
Single braces
UTMs go in
final-url-suffix
Click id
msclkid
Effective
September 28, 2026
Microsoft Advertising documentation the pack is built from

MACROS (13)

  • {campaignid}
  • {adgroupid}
  • {adid}
  • {keyword}
  • {matchtype}
  • {network}
  • {device}
  • {msclkid}
  • {lpurl}
  • {unescapedlpurl}
  • {escapedlpurl}
  • {lpurl+2}
  • {lpurl+3}

RULES (8)

  • Blocks

    Microsoft caps the tracking template at 2,048 characters, protocol included.

  • Blocks

    Microsoft caps the final URL at 2,048 characters, protocol included.

  • Blocks

    A tracking template must begin with http://, https://, {lpurl} or {unescapedlpurl}.

  • Blocks

    Account, campaign and ad group templates must contain at least one landing page tag.

  • Blocks

    A final URL suffix may not start with ?, & or #.

  • Blocks

    A final URL suffix may not contain {ignore}, {lpurl}, {escapedlpurl} or other landing page placeholders.

  • Blocks

    Microsoft does not validate that a custom parameter exists. An undefined {_name} is neither substituted nor removed, so it arrives at the landing page as literal text with no error anywhere in the interface.

  • Blocks

    Microsoft accepts the first 8 custom parameters on campaigns, ad groups, criteria and ads.

TikTok

2026.09.1
Documentation page monitored Verified September 28, 2026

__CID__ is the ad id and __AID__ the ad set id, despite the names. Auto-attach writes TikTok and Paid capitalised. The pack warns on all three.

The macro documentation page is fetched and its parameter table fingerprinted.

Syntax
Double underscores
UTMs go in
url-parameters
Click id
ttclid
Effective
September 28, 2026
TikTok documentation the pack is built from

MACROS (14)

  • __CAMPAIGN_ID__
  • __CAMPAIGN_NAME__
  • __AID__
  • __AID_NAME__
  • __CID__
  • __CID_NAME__
  • __PLACEMENT__
  • __CALLBACK_PARAM__
  • __CALLBACK_URL__
  • __IDFA__
  • __GAID__
  • __IP__
  • __UA__
  • __SL__

RULES (3)

  • Warns

    __CID__ is the AD id, not the campaign. Read as an abbreviation it looks like campaign id, and mapping it to utm_campaign produces a campaign dimension full of ad IDs — a valid URL, populated values, and a report wrong at the wrong level of granularity.

  • Warns

    __AID__ is the AD SET id, not the ad.

  • Warns

    URL Auto-attach is on by default and writes utm_source=TikTok and utm_medium=Paid, both capitalised. GA4 treats Paid and paid as different mediums, so auto-attach fragments channel reporting against anything composed in lowercase.

Snapchat

2026.09.1
Not automatically monitored Verified September 28, 2026

Uses {{adSet.name}} in camelCase where Meta uses {{adset.name}}, so a URL copied from Meta partly works. The pack blocks the Meta casing.

Renders in the browser, like Meta, and is checked by hand for the same reason.

Syntax
Double braces
UTMs go in
url-parameters
Click id
ScCid
Effective
September 28, 2026
Snapchat documentation the pack is built from

MACROS (8)

  • {{campaign.name}}
  • {{campaign.id}}
  • {{adSet.name}}
  • {{adSet.id}}
  • {{ad.id}}
  • {{creative.name}}
  • {{creative.headline}}
  • {{site_source_name}}

RULES (3)

  • Blocks

    Snapchat uses {{adSet.name}} in camelCase; Meta uses {{adset.name}} in lowercase. Four other tokens are byte-identical across the two platforms, so a URL copied from a Meta workflow PARTLY works — the shared tokens resolve, the ad-set token does not, and nothing looks broken.

  • Advises

    Shopify advertisers using the Snapchat Ads App have snap_campaign_id set to a fixed identifier that cannot be overwritten, by the builder or by url_macro_parameters.

  • Advises

    Previewing an ad by scanning a Snapcode populates dynamic parameters as 'successful_' rather than real values. That is preview-only behaviour, but it looks exactly like broken tagging.

LinkedIn

2026.09.1
Documentation page monitored Verified September 28, 2026

No inline macros at all: tracking parameters are a mapping set through LinkedIn’s Marketing API. A macro typed into the URL is blocked.

The rendered documentation page is fetched and its parameter list fingerprinted.

Syntax
API mapping, no inline macros
UTMs go in
api-tracking-parameters
Click id
li_fat_id
Effective
September 28, 2026
LinkedIn documentation the pack is built from

API MAPPING VALUES (8)

  • ACCOUNT_ID
  • ACCOUNT_NAME
  • CAMPAIGN_GROUP_ID
  • CAMPAIGN_GROUP_NAME
  • CAMPAIGN_ID
  • CAMPAIGN_NAME
  • CREATIVE_ID
  • CREATIVE_NAME

RULES (2)

  • Blocks

    LinkedIn does not substitute inline tokens. A macro written into the URL arrives at the landing page as literal text.

  • Warns

    LinkedIn does not deduplicate. A static utm_campaign on the creative plus a dynamic mapping for the same key puts the parameter in the served URL twice.

Spotify

2026.09.1
Not automatically monitored Unverified

No macro system; HTTPS only. Audio ads are often heard, not clicked, so a spoken URL or promo code carries attribution.

There is no public page to check. Spotify’s advertising help centre returns no articles in any category.

Why unverified: Spotify's advertising help centre returns 0 articles in every category, including through its own search. This pack rests on secondary summaries and needs confirming from inside Ads Manager. It also has no scrapeable public source, so it cannot be monitored automatically.

Syntax
No macros
UTMs go in
clickthrough-url
Effective
September 28, 2026
Spotify documentation the pack is built from

MACROS

None. Any token in the URL is served as literal text.

RULES (3)

  • Blocks

    Spotify has no macro system. A token copied from another platform's workflow is served literally.

  • Blocks

    All Spotify tracking URLs and third-party tags must be HTTPS.

  • Advises

    Audio ads are frequently heard rather than clicked, and the call to action is a spoken URL someone retypes from memory. Nothing can be tagged inline in that path.

How closely each platform is watched

Machine-readable, checked daily

1

Documentation page monitored

3

Not automatically monitored

3

Nothing here is real-time, and not every platform can be watched automatically. We would rather say so than show a last-checked date for a check that never ran.

Run on a platform that isn’t here?

Tell us which one and how you tag it. A pack is data, so adding a platform is a matter of documenting its syntax honestly — including saying so when the documentation cannot be confirmed.

Ask about a platform

Mint against the pack, not against memory.

Request access and we set your organization up. Every plan includes every platform pack.