Skip to content
Best of
Menu

Which sends the approved sale

Nadia Lindqvist, Affiliate tracking, updated 20 October 2026

The network approves the sale hours after the click, and a thank-you tag has already told Meta it was a purchase. Send that Purchase through your tracker once the postback records the conversion. Use a server container in Google Tag Manager if the thank-you URL you control is the moment the sale is real.

If the browser pixel and the server event both fire, they need the same event name and the same id. Meta counts those two posts as one event for 48 hours. When both arrive within about five minutes, it keeps the browser event.

See which entry plan sends the sale

Quick answer

  • Server container. Best for a Purchase that should fire on a thank-you page you control.
  • Tracker. Best for a payable sale that shows up on the postback.
  • Hosted checkout. Best for an order you charge yourself, sent when that payment succeeds.

What fires the Meta event

Three routes can send a Purchase event. The difference is when each one fires. That matters when the affiliate network confirms the sale after the thank-you URL has already loaded.

What fires the Meta event, when it fires, when to use it, and the dedup risk
Route What fires When Use when Dedup
Server container Meta's server tag maps the client event to the Conversions API. A page event, such as the thank-you page. You control the page that should count as the sale. The pixel id and the server id have to match.
Tracker RedTrack, ClickMagick, or Voluum sends the conversion after it is recorded, often from the network postback. After that postback writes the conversion. Approval or rejection comes later. Turn off the extra pixel redirect, so Meta receives a single sale.
Hosted checkout ElasticFunnels sends a server Purchase with value and currency on a paid order. When the checkout payment succeeds. You charge the buyer on a checkout you host. A browser Purchase on the same order still needs that id.

The sale the network has not paid yet

You buy Meta traffic to an affiliate landing page. The click lands, the form submits, and the thank-you page loads. The network still has to approve, hold, or reject that lead. Hours can pass. Sometimes a day.

A server container tied to that thank-you page fires on the page view. The network's later decision is a separate event. Ads Manager can show a purchase the offer never pays, and the purchase gap calculator sets those two columns side by side: Ads Manager purchases against approved, held, and rejected sales.

A tracker can wait, because the network postback is the message that updates the conversion. The event Meta receives after that record can match the result in the postback.

Set up the Facebook Conversions API with Google Tag Manager

Google Tag Manager and the Facebook Conversions API connect in a server container. The container receives the page event and posts it from the server. Google's server-side tagging overview describes moving measurement tags off the website and into a processing container on Google Cloud Platform, or on any other platform you choose.

“Server-side tagging allows you to move measurement tag instrumentation from your website or app to a server-side processing container on Google Cloud Platform (GCP), or any other platform of your choosing.”

Google Documentation: Server-side tagging overview

The same overview lists fewer measurement tags on the site as a benefit, because less tag code runs in the browser. The events still have to reach the tagging server, which is where the Meta tag runs.

Meta's server tag for that container reads the event the client already sent to the tagging server, maps it onto the Conversions API, and posts the server event. That is the Google Tag Manager setup for the Facebook Conversions API. A page event comes in, and a server event goes out. It fires on that page event.

ClickMagick's server-side tracking page describes the same arrangement. The server receives the user data first, processes it with a Google Tag Manager container, and then sends the relevant fields to Facebook or Google Ads.

Leave the browser pixel on the page you host. The server tag is a second copy of the action. Both copies need that shared id, or Meta can count two sales. What that browser tag stores is in the pixel and Conversions API comparison.

Once the Google Ads conversion tag is working from the server container, Google's setup guide says to remove the matching tag in the web container. That keeps the conversion from being recorded twice. For Meta, a second Purchase posted by the tracker, stacked on the thank-you event, is a second conversion unless the ids match.

What the spec says about the two copies

Meta's published server spec puts that requirement in the two passages below.

“For the same customer action, the browser event_name must match the server event_name, and the Pixel eventID must match the server event_id.”

Meta Specification: Server-side API spec

“If a server and browser event arrive at roughly the same time (within 5 minutes), Meta favors the browser event.”

Meta Specification: Deduplication window

A tracker post or a hosted checkout that also sends Purchase for that order has to carry the same id. Two Purchase posts with two ids are two conversions in Ads Manager.

How the tracker sends after the postback

The tracker stores the click. The network's postback ties the conversion to that click: approved, held, rejected, or whatever status the URL you installed reports. The Conversions API call goes out after that record exists. A thank-you page load is a different trigger.

Build that URL with the click id and the payout macros the tracker documents. The postback builder lays out those macros. If the postback you give the network is the approved sale, the Meta event can follow the approval. If the postback fires on every lead, Meta hears about the lead. The URL you install is what decides which result gets sent.

RedTrack homepage with the AdTracker badge, the headline Track every conversion, and a cube diagram of tracking layers.

RedTrack's Facebook tracking page describes a pre-built Conversions API integration that sends online and offline conversion data back to Meta, attributed to the ads. The longer write-up on this site is the RedTrack review.

Voluum's Facebook conversion guide warns about sending the sale twice. Turn off the Pixel Redirect URL when the Conversions API postback is enabled, because leaving that redirect on sends the conversion a second time. The Voluum review is the plan-level write-up.

The same guide says every conversion Meta can register has to occur on a domain the advertiser owns. The offer URL on the network belongs to the network. The page you host is the domain you can verify, which is why the pixel stays there and the server event is sent from your side of the stack.

Where each route helps, and where it breaks

Server container

Pick this when the thank-you page, or your own checkout, is the sale. The container fires when the page loads, hours before an affiliate manager approves the lead.

What works

  • The server container can post the event when your page loads, without waiting on the affiliate network.
  • Google lists fewer measurement tags on the website as a benefit of moving those tags to the server.

What to watch

  • A thank-you Purchase can reach Meta while the network still has the lead on hold, or later rejects it.
  • The on-page pixel and the server tag are two posts. They count as one sale only when the names and the ids match.

Tracker

Pick this when the payable event is the network's decision. The container cannot see that decision. The postback can.

What works

  • The Meta event can match the status the postback recorded, so an approval and a raw lead stay separate.
  • RedTrack documents a pre-built Conversions API integration, and ClickMagick lists Audience Optimization / CAPI on Starter.

What to watch

  • The tracker waits for the postback before it sends the event. A late or missing postback means a late or missing Meta event.
  • Voluum says to turn off the Pixel Redirect URL when the Conversions API postback is on, or the sale goes out twice.

What buyers report when both copies fire

People setting up a server container beside a pixel describe two copies of each event. The purchase column inflates when the id is missing, or when the browser id and the server id disagree. That id is what links the two events.

When the ids disagree, the purchase count in Events Manager can run ahead of the orders you were actually paid for. One sale becomes two rows, and the campaign optimizes toward a number the network will not pay. When the ids match, the pixel event and the server event count as one action, which is what the spec describes.

Those reports describe a duplicate event. Treat them as a warning about the container path. The postback path has its own double send, the Pixel Redirect URL in the Voluum guide.

My take

I would let the tracker send Purchase after the offer confirms the sale, and I would use the server container if the thank-you URL I control is the sale. If both are live, I would keep a single Purchase and the shared id, and I would drop the extra one.

Which entry plan sends events to Meta

The server container is a host you run, on Google Cloud or another platform, separate from a tracker invoice. On the tracker side, look at which entry plan already includes that integration.

RedTrack includes a native Conversions API for Meta and Google on every affiliate plan, including Solo. Plans and the trial are on the RedTrack pricing page.

Affiliate tracker

RedTrack

Price (17 Oct 2026)
$141/mo annual
Conversions API
On Solo

The postback can be the moment Meta hears about the sale.

Facebook tracking page

ClickMagick lists Audience Optimization / CAPI on Starter, beside the visitor allowance on that plan. The trial and the refund window are on the ClickMagick pricing page. The public pricing page does not state a per-visitor overage, so none is printed here.

ClickMagick homepage with a green headline about bad ad data and an illustration of a seated figure beside opt-in and sales cards.

Affiliate tracker

ClickMagick

Price (20 Oct 2026)
$79/mo
Starter
Audience Optimization / CAPI

One ad account per platform, inside the visitor allowance.

Pricing page

When the checkout you host sends Purchase

ElasticFunnels is a funnel platform for teams that run paid traffic. It builds the pages, split-tests variants under one URL, and hosts the checkout, so the click and the paid order share one record. The Meta piece of that record is a server Purchase with the order value and currency, sent when the sale is paid, even if no pixel fired in the browser. The click stores fbc and fbp from the cookies, or from fbclid.

The Meta Ads page says that if the page also fires a browser Purchase, Meta receives both. Use the same id on both so Meta can deduplicate them. The event fires when the checkout payment succeeds. That is the same moment a hosted checkout counts the order.

Every feature is available on every plan, including the server Purchase. Pages, funnels, and a custom domain can be set up during the trial.

Funnel platform

ElasticFunnels

Price (17 Oct 2026)
$97/mo
Trial
14 days, no card

The hosted checkout sends Purchase after payment.

Meta Ads integration

It is newer than the platforms it is usually compared with, and there is very little independent review coverage of the Meta events. Until you run real volume through that connection, you are largely taking the vendor's word for the postback and the conversion details. The platform has been on the market since 2023, which is why those write-ups are still scarce. Pages, the same-URL test, and the checkout stay on the account.

The peer comparison for the funnel job is ElasticFunnels vs ClickFunnels. The write-up on this site is the ElasticFunnels review.

Changelog

  • On 20 October 2026, the first version set the server container next to the postback path and the hosted checkout.

Questions

How do you set up the Facebook Conversions API with Google Tag Manager?
Stand up a server container on Google Cloud or another host, and send the page events there. Install Meta's server tag so it maps each client event into the Conversions API. The on-page pixel can stay on the page you host. Put one id on both copies.
How does deduplication work for the Conversions API in Google Tag Manager?
Meta treats the browser post and the server post as one action when the event names match and the ids match. It holds that match for two days. When the two arrive close together, it keeps the browser copy.
Can a server container and a tracker both send Purchase?
One sale should produce one Purchase. If the container and the tracker each post that event, both posts need the same id, and you still want a single payable event rather than a thank-you plus a later approval.
Does the tracker wait for an approved sale?
The Meta event follows the conversion the postback wrote onto the click. A postback reserved for the approved result can line the send up with a payable sale. A postback on every lead reports the lead.

What we read

Other sources

9 discussions and reviews read for this page. Quotes are excerpts; open a link to read the original in context.

  1. [g1] Server-side tagging overview Google,
  2. [g2] Google Ads server-side setup Google,
  3. [m1] Meta server-side API spec Meta,
  4. [m2] Conversions API tag for Google Tag Manager Meta,
  5. [v1] Voluum Facebook conversion integration Voluum,
  6. [r1] RedTrack Facebook tracking RedTrack,
  7. [c1] ClickMagick on server-side tracking ClickMagick,
  8. [c2] ClickMagick pricing ClickMagick,
  9. [e1] ElasticFunnels Meta Ads ElasticFunnels,
Related reading

Comments

No comments yet. Questions and your own experience are welcome.

Leave a comment

Thank you. Your comment will appear once it has been reviewed.

See which entry plan sends the sale

Written by

Nadia Lindqvist

Affiliate tracking

Nadia covers affiliate tracking software for people who buy Meta and Google traffic. She reads vendor pricing pages, documentation and long-term user reports, and she writes about which tracker fits a given buyer.

nadial@postbackreport.cc

Last checked 2026-10-20