All networks
Meta Ads logo
Tracking reference · Social

Meta Ads tracking tokens & macros

Tracking on Meta Ads runs on URL parameters you append to your destination link, with Meta filling in dynamic macros like {{campaign.id}} and {{adset.id}} at click time and auto-tagging the click with an fbclid. Append these macros and ValidVisit can attribute every visit back to its exact sub-source inside Meta and judge it Valid or Invalid, with its evidence.

Cross-check any macro against the network’s official documentation. Meta Ads official docs →

6
Meta Ads macros mapped to attribution
2
required for attribution
no-hop
one script, no link rewriting
Valid / Invalid
a verdict on every visit

Meta fills in its dynamic parameters automatically, so {{campaign.id}} is the required anchor and {{adset.id}} plus {{ad.id}} let ValidVisit narrow each click down to the specific ad set and ad driving it, while {{placement}} tells you whether the click came from Feed, Stories, Marketplace, or the Audience Network. The fbclid click id is added automatically by auto-tagging rather than as a macro you type, so as long as your URL carries the campaign, ad set, ad, and placement parameters, every arriving click is tied to a real sub-source rather than an anonymous lump of "Meta traffic".

That per-placement granularity matters because Meta has no per-publisher URL token: the placement is the finest unit a click carries. Once ValidVisit shows which placements are sending low-quality or invalid traffic (IVT), the levers all sit in the tools Meta gives you: uncheck Audience Network under Manual placements in the ad set, upload a publisher block list in the Meta Brand Safety and Suitability Center (it covers Audience Network apps, Facebook in-stream reels, ads on Facebook Reels and profile feeds), and pause the ad sets with the highest invalid share. Meta states that it does not charge for invalid traffic it detects and that refunds are decided case by case at its own discretion. The verdict is a report: it changes nothing in your Meta ad account, so every opt-out, block list or pause is something you do manually in Meta Ads Manager using that evidence.

MACRO MAP

Meta Ads macro → ValidVisit param

Campaign ID *campaign
Meta Ads macro
{{campaign.id}}
ValidVisit param
vv_campaign_id
Example
120000
Ad Set IDadset
Meta Ads macro
{{adset.id}}
ValidVisit param
vv_adset_id
Example
120001
Ad IDad
Meta Ads macro
{{ad.id}}
ValidVisit param
vv_ad_id
Example
120002
Placementplacement
Meta Ads macro
{{placement}}
ValidVisit param
vv_placement_id
Example
facebook_feed
Site sourcepublisher
Meta Ads macro
{{site_source_name}}
ValidVisit param
vv_publisher_id
Example
an
Click ID (fbclid) *click
Meta Ads macro
(auto-tagging)
ValidVisit param
fbclid
Example
IwAR…

* required for Meta Ads attribution.

TRACKING URL

Ready-to-use Meta Ads tracking parameters

meta-ads tracking parameters
utm_source=meta-ads&utm_medium=social&vv_campaign_id={{campaign.id}}&vv_adset_id={{adset.id}}&vv_ad_id={{ad.id}}&vv_placement_id={{placement}}&vv_publisher_id={{site_source_name}}

In Meta Ads, paste these into the URL parameters field, under Tracking, on each ad, and keep the ad’s own URL as your plain landing page. Meta Ads adds them to every click and fills the macros, so every visit arrives attributed and ready to judge.

Using Meta Ads tokens?

See which Meta Ads sources send bots.

  • Every visit judged Valid or Invalid, worst source first.
  • Attributed through the Meta Ads tokens above, down to the placement.
  • Works beside your tracker, with nothing added to the click path.

Just your email · no card · unsubscribe anytime · privacy policy

Meta Ads traffic quality →
deal-alerts.example71% invalid
zone 447123% invalid
premium-news.example2% invalid
WHAT IT JUDGES BY

What Meta Ads tokens let you break bots down by

Breakdown the tokens allow
  • Site source — Where the ad ran: fb, ig, msg, th or an (Audience Network).
  • Placement

Carries a per-click id, stored with each visit so a verdict traces back to the click.

Where you can act, in Meta Ads
  • IP exclusionnot offered
  • Device targetingdocumented
  • OS targetingdocumented
  • Browser targetingnot offered
  • Connection typedocumented
  • Languagedocumented

Tokens last verified against Meta Ads’s docs on 2026-10-02.

Found a bad publisher? Exclude it in Meta Ads

The buyer compiles a TXT/CSV list (max 10,000 lines per list) of app store URLs, Facebook Page URLs and Instagram account URLs and uploads it as a publisher block list in the Meta Brand Safety and Suitability Center, then applies it to their ad accounts, which keeps their ads off those publishers across Audience Network apps, Facebook in-stream reels, ads on Facebook Reels and profile feeds.

Meta Brand Safety and Suitability Center → Publisher block lists → Create publisher block list → upload .csv/.txt (or tick publishers in Partner-publisher lists / Delivery reports → Add to publisher block list); applied for the business, an ad account or a campaign; affects apps in Audience Network, Facebook in-stream reels, ads on Facebook Reels, and Facebook and Instagram profile feed
FAQ

Meta Ads tracking token FAQs

Which token identifies the sub-source on Meta Ads?+

There is no per-publisher token, but {{placement}} tells you which placement a click came from, with values such as facebook_feed, instagram_stories and audience_network_classic, and {{campaign.id}}, {{adset.id}}, and {{ad.id}} pin each click to the exact campaign, ad set, and ad. Together they are the closest thing to a sub-source on Meta, and ValidVisit reports the invalid share of each combination.

Do I need a funnel hop to use these macros?+

No. These are plain URL parameters appended to your destination link; Meta substitutes the macro values at click time and adds the fbclid via auto-tagging. No funnel hop, link wrapper, or extra hop is required.

Where do I add these parameters in Meta?+

Add them at the ad level in Meta Ads Manager: under Tracking, type them into the URL parameters field or click Build a URL parameter, and Meta appends them to your Website URL. The fbclid needs no setting, Meta attaches it by itself. Keep {{campaign.id}} present since it is the required anchor for attribution.

Is Meta Ads traffic real? See how ValidVisit judges every Meta Ads visit for bot traffic.
deal-alerts.example71% invalid
zone 447123% invalid
premium-news.example2% invalid

Judge every Meta Ads visit — and find the fake ones.

See which Meta Ads publishers and placements send real buyers vs. bots.

Just your email · no card · unsubscribe anytime · privacy policy

Join the waitlist with just your email · 7-day trial at launch

One script · no cookies · no device IDs · raw IP never stored