Facebook Ads Tracking: URL Parameters, fbclid, Conversions and Attribution

Facebook Ads tracking rests on three things: the right dynamic parameters in the link, a preserved fbclid and conversions sent back to Meta. Here is every link in the chain and the reasons why Ads Manager and your tracker disagree.

Tracking and Analytics11 min read
Facebook Ads Tracking: URL Parameters, fbclid, Conversions and Attribution
Contents
  1. What Facebook Ads tracking consists of
  2. Dynamic URL parameters in Facebook
  3. fbclid: the Facebook click ID
  4. Sending conversions to Meta: Pixel and Conversions API
  5. Attribution: why Facebook and the tracker count differently
  6. Spend: how to get accurate cost
  7. Reports: which slices to watch
  8. Facebook Ads tracking in ArtisanClo
  9. Step-by-step setup before launch
  10. Common Facebook tracking mistakes
  11. Bottom line

When Meta's Ads Manager shows twenty leads, the affiliate network fifteen and the tracker twelve, you want to find the one correct number. Oddly enough, there are three correct numbers: each system counts by its own logic. The goal of Facebook Ads tracking is not a perfect match but understanding where the gap comes from and seeing the money for every campaign, ad set and ad.

What Facebook Ads tracking consists of

The full setup looks like this:

  1. URL parameters in the ad pass the campaign, ad set and ad IDs and the placement to the tracker.
  2. fbclid is the click ID Facebook appends on its own. You need it later to report the conversion to Meta.
  3. The tracker records the click with all parameters and sends the person to the offer with a click ID for the affiliate network.
  4. The postback from the network brings the lead, approval or rejection to the tracker.
  5. Conversions are sent to Meta through the pixel on the page and/or the Conversions API from the server.
  6. Spend is entered manually, calculated by a cost model or pulled from the ad account.

Below, each link in turn.

Dynamic URL parameters in Facebook

Tags are set in the ad, in the «URL parameters» field. You write a parameter string there without the question mark, and Meta appends it to the website URL. This is more convenient than putting tags straight into the URL: when you duplicate an ad, the URL and the tags will not get mixed up.

Facebook uses double curly braces for dynamic parameters:

Parameter What it inserts
{{campaign.id}} Campaign ID
{{adset.id}} Ad set ID
{{ad.id}} Ad ID
{{campaign.name}} Campaign name
{{adset.name}} Ad set name
{{ad.name}} Ad name
{{placement}} Placement
{{site_source_name}} Site: Facebook, Instagram, Messenger, Audience Network

A sample string for the «URL parameters» field:

utm_source=facebook&utm_medium=paid&utm_campaign={{campaign.id}}&utm_content={{ad.id}}&sub2={{adset.id}}&sub3={{placement}}&sub4={{site_source_name}}

IDs or names

Pass IDs, and names only if you want them. An ID does not change when you rename a campaign, and the tracker uses it to match clicks with spend from the ad account. Names are easier to read in a report, but they can contain spaces, emoji and non-Latin characters that break links and grouping. A full breakdown of tags and macros across platforms is in UTM parameters and ad platform macros.

Tip. Add your own creative or buyer label to a tag, for example sub5=b07. That value does not come from Meta, but you will see it in the slice report, which is handy when several people work in one ad account.

fbclid: the Facebook click ID

When someone clicks an ad, Facebook appends the fbclid parameter, a unique click ID, to the link. You do not need to add it. What you do need is to preserve it:

  • do not strip parameters during redirects between domains;
  • do not lose them when moving from the landing page to the offer if fbclid is needed further down;
  • store the value in the tracker together with the click.

To send server events, Meta does not use the raw fbclid but an fbc value built from it (a prefix, the click time and the ID itself). If fbclid is lost, the event matches worse, and the algorithm gets less out of every conversion. Click IDs across platforms are covered in fbclid, gclid, ttclid, yclid explained.

The Facebook and Instagram in-app browser

Most mobile traffic opens in the app's built-in browser. That brings some quirks:

  • cookies live inside the app and do not carry over to the regular browser;
  • if the person comes back to the site later from Safari or Chrome, the browser pixel will not «recognize» them;
  • the referrer is often lost in this browser, so relying on it to identify the source is unreliable.

The takeaway: identify the source by tags and fbclid, and send conversions from the server.

Sending conversions to Meta: Pixel and Conversions API

For Facebook's algorithm to optimize delivery toward people who buy, it needs events. Two channels deliver them:

Meta Pixel Conversions API
Who sends The visitor's browser Your server or tracker
Ad blockers, cookies, in-app browser Affect it Do not affect it
Status after the lead (approved, rejected) No Yes, if the tracker knows it
What you need Code on the page Pixel (dataset) ID and an access token

If you run traffic to an affiliate network's offer, you usually have no access to its «Thank you» page, so there is nowhere to put a pixel. Then the Conversions API is the only working channel: the tracker receives the postback from the network and sends the event to Meta itself.

If you use both channels, the event must carry a shared ID, or one lead will be counted twice. How to choose between the channels is covered in postback vs pixel, and step-by-step Conversions API setup in sending conversions to ad platforms.

Which event to send

  • Lead, right at submission. Lots of events and fast learning, but some are junk and duplicates.
  • Purchase or a custom event on approval: reflects money more accurately, but arrives after the hold delay.

Many buyers start with leads and switch to approved conversions once there are enough of them. Statuses are covered in lead, hold, approved, rejected.

Attribution: why Facebook and the tracker count differently

Discrepancies are inevitable. The main reasons:

Reason What happens
View-through attribution Meta credits a conversion to someone who saw the ad but did not click. The tracker does not see these conversions
Attribution window Meta assigns a conversion to an ad within a window after the click or view. The tracker ties it to a specific click, with no window
Conversion date Systems may attribute the conversion to the impression date, click date or conversion date
Modeled conversions For part of the traffic with privacy restrictions, Meta estimates conversions statistically
Time zones The ad account's time zone and the tracker's may differ
Duplicates Pixel and server without deduplication double the events

The attribution window is set at the ad set level; the default is usually 7-day click and 1-day view, but options and defaults change, so check the current interface.

Tip. For profit decisions, rely on the tracker and the affiliate network's data. Use Ads Manager to manage delivery and compare ads with each other: within one system, the numbers are comparable.

Spend: how to get accurate cost

Without spend, the tracker shows revenue but not profit. There are three options:

  1. Manually: enter the daily amount per campaign. Accurate, but takes discipline.
  2. By a cost model: average CPC or CPM. Quick but approximate: Facebook charges for impressions, and the cost per click fluctuates.
  3. Imported from the ad account: the tracker pulls spend through the API. The most convenient option, provided the tracker matches campaigns by ID. For that, the campaign ID has to arrive with the click, one more reason to pass {{campaign.id}}.

How this turns into profit and ROI is covered in how to calculate profit and ROI.

Reports: which slices to watch

Tagging exists for the sake of reports. Useful slices for Facebook:

  • campaign → ad set → ad: where the money is and where it leaks;
  • placement: Instagram Stories and the Facebook feed often convert differently;
  • site (site_source_name): Facebook, Instagram, Audience Network;
  • country and device, especially in multi-geo campaigns;
  • your own tags: creative, buyer, combo.

Compare ads by EPC and CR, not only ROI: on low volume a single conversion changes ROI dramatically. The metrics are collected in affiliate marketing metrics.

Facebook Ads tracking in ArtisanClo

In ArtisanClo, a platform is described once as a traffic source, from the Facebook Ads template. The source defines the parameters (campaign ID, creative ID, platform click ID, placement and an unlimited number of SubID tags) and the cost per click model. In a flow with a tracker, the chosen source lays these parameters out as campaign tags, from which the ad link is built.

Next:

  • Conversions from the affiliate network arrive by postback in «Receiving conversions»: about 300 ready-made network templates, with statuses mapped automatically.
  • Sending to Meta: on higher plans, conversions are sent directly to your ad account using your keys: the pixel ID and the token.
  • Spend from the ad account: on the Business plan, spend for the last 3 days is pulled every morning; a campaign is matched to a flow by the campaign ID in the clicks.
  • If you need the exact amount, daily spend can be entered manually in «Reports», and it is spread over that day's clicks.
  • Reports: «Money by slice» (flow, source, day, country, offer, device, sub1–sub10 tags) and a report builder with multi-level grouping.

The Facebook and Instagram in-app browsers are recognized, and the fbclid click ID is recorded in the click card. To count traffic without filtering, a flow has «Tracker» mode, which works when connected with the PHP file. Sending conversions to the ad account works only for flows with a tracker. More about the platform on the Facebook Ads page, plan terms on the pricing page.

Step-by-step setup before launch

A short checklist that saves hours of investigation after launch:

  1. Create a Facebook source in the tracker and set the cost per click model.
  2. Build the parameter string with {{campaign.id}}, {{adset.id}}, {{ad.id}}, {{placement}} and your own tags.
  3. Paste it into the «URL parameters» field of each ad, not into the website URL.
  4. Set up the postback in the affiliate network's dashboard and make sure the tracker's click ID goes into the offer link.
  5. Connect sending to Meta: the pixel ID and token for the Conversions API. Choose the event the campaign will optimize for.
  6. Make a test click on the published ad from a phone, in the Facebook or Instagram app. The tracker should show the campaign, ad set and ad IDs and fbclid.
  7. Send a test conversion and check that it attached to the click in the tracker and showed up in the test events section of Events Manager.
  8. Check spend: the next day it should land on the same campaign as the clicks.

Tagging for a team

When several buyers work in one ad account, agree on a tag scheme in advance: which sub holds the buyer, which the creative, which the combo. Without that, a month later the report will have five spellings of the same creative. How to organize reporting is covered in affiliate marketing as a team.

Common Facebook tracking mistakes

  • Tags in the URL instead of «URL parameters»: when ads are duplicated, one campaign's tags end up in another.
  • Spaces and non-Latin characters in names passed through {{campaign.name}}, breaking grouping.
  • fbclid lost after a redirect: the Conversions API receives events with no link to a click.
  • Pixel and server without deduplication: double conversions in Ads Manager and a mistrained algorithm.
  • Comparing Ads Manager against the tracker without accounting for the attribution window: an endless hunt for a bug that does not exist.
  • No campaign ID in the click: the spend import cannot match the campaign to the flow.

Bottom line

Facebook Ads tracking runs from the link to the money: campaign, ad set and ad IDs in «URL parameters», a preserved fbclid, a postback from the network, server-side events sent to Meta and spend for every campaign. Ads Manager and the tracker will disagree, and that is fine as long as you know why. Rely on the tracker and the network for profit decisions, and on Ads Manager for optimizing delivery.

Frequently asked questions

01

Where do I add UTM parameters and macros in Facebook Ads?

In the ad settings, in the URL parameters field of the Tracking section. You enter a parameter string without the question mark, and Meta appends it to the website URL. That keeps the link clean and lets you set tags in one place for each ad.

02

Do I need to add fbclid to the link myself?

No. Facebook appends fbclid to the link automatically when someone clicks the ad. Your job is not to lose it on the way: do not strip parameters during redirects, and store the value in your tracker.

03

Why does Facebook show more conversions than my tracker?

Most often because of view-through attribution: Meta can credit a conversion to someone who saw the ad but reached the site another way. Other reasons are modeled conversions for part of iOS traffic, different attribution windows and different report time zones.

04

Which event should I send to Facebook: lead or approved?

It depends on volume. Leads come in fast and often, so the algorithm learns from them more easily. Approved conversions reflect money more accurately but arrive later and less often. Many buyers start with leads and switch to approved conversions once there is enough volume.

05

Can I track Facebook ads without the pixel?

For tracker reports, yes: clicks are tagged with URL parameters and conversions arrive by postback from the network. But for Meta's algorithm to optimize delivery for conversions, it needs events, sent via the pixel, the Conversions API or both channels with deduplication.

Read next

See your traffic for real

Connect ArtisanClo to your site, see who actually arrives from your ads, and why every click got its decision.