Skip to content
Best of
Menu

One Purchase when both sends fire

Nadia Lindqvist, Affiliate tracking, updated 22 October 2026

Ads Manager shows two Purchases for one commission, or a purchase count higher than the sales the network approved. The browser fired Purchase on the presell or the checkout, and the tracker or the hosted checkout fired Purchase again when that sale was recorded.

Match the event name and the event id on the pixel Purchase and the server Purchase from your tracker or funnel. Meta counts that pair once. Run a test purchase and look for one Purchase in Test Events before you trust the Ads Manager count.

“We determine if events are identical based on their ID and name.”

Meta Documentation: Deduplicate pixel and server events

See which starter plan sends the sale to Meta

Quick answer

  • Tracker CAPI. Best for a server Purchase after the tracker records the sale.
  • Hosted checkout. Best for a server Purchase when the checkout you host takes payment.
  • Pixel only. Best for one browser Purchase, with the server send turned off.

What Meta matches: event name and event id

The pixel field is eventID. The server field is event_id. For the pair to collapse, those two strings have to be equal, and the server event_name has to equal the name the pixel sent, on the same pixel. The pixel and the Conversions API are covered in a separate guide, which walks through what the pixel reports and what the server event reports.

“for deduplication, the eventID from a browser or app event must match the event_id in the corresponding server event.”

Meta Documentation: Server event parameters

A match inside 48 hours counts once. Meta keeps the first event that arrived.

“If we find a match between events sent within 48 hours of each other, we only consider the first one.”

Meta Documentation: 48-hour match

When the pixel copy and the server copy land within about five minutes of each other, Meta favors the one from the pixel.

“If a server and browser/app event arrive at approximately the same time (that is, within 5 minutes of each other), we favor the browser/app event.”

Meta Documentation: Browser preference

Facebook Conversions API events: Purchase or a custom event

Purchase is the standard event affiliates use when they want Meta to optimize toward a sale. A second charge on the same visit, an upsell, is a different choice.

On the Meta Ads page, the Conversions API connection can report upsells as a Purchase, as a custom event, or not at all. Leaving the upsell off Purchase keeps that standard event for the first sale.

“On the Conversions API connection, report upsells as a Purchase, as a custom event or not at all”

ElasticFunnels Documentation: Upsell events

Meta matches a custom event on its id and its name too. Give the upsell its own event name and Meta treats that upsell as a separate event from Purchase. If the upsell goes out as Purchase and uses the first sale's id, Meta keeps one Purchase.

Where each server Purchase starts

Three routes can put a sale in front of Meta. They split on which system fires the server event, and on whether a browser Purchase is still running beside it.

Where the Meta Purchase starts, what has to match, and who it fits
Route What fires The id Fits
Tracker CAPI RedTrack or ClickMagick after the sale is in the tracker. Voluum uses a conversion API postback. On Voluum, turn off Pixel Redirect while that postback is on. The sale is a network result the tracker already stored.
Hosted checkout ElasticFunnels posts a server Purchase when checkout payment succeeds. A browser Purchase on that page still has to share the name and the id. You charge the buyer on a checkout you host.
Pixel only The browser Purchase, with the server send left off. One event. There is no second id to line up. You want Meta to count only the Purchase the pixel fires.

Tracker: the sale is already on the click

RedTrack's Facebook tracking page describes a pre-built Conversion API integration that sends online and offline conversion data back to Meta. The server event follows the conversion the tracker holds. The page says that integration sends both online and offline conversion data. If a pixel Purchase already went out for the commission, the event id on the tracker send has to match it, or Ads Manager can count both. The RedTrack review covers the plan around that integration. The integration is on every affiliate plan, including Solo. Plans and the trial are on the RedTrack pricing page.

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

ClickMagick calls Audience Optimization a Conversions API integration. It sends first-party conversions to Meta as they are recorded. The same article says you can see the result of every conversion sent by clicking the Log button. Starter is the plan that includes this integration. Trial details are on the ClickMagick pricing page. The ClickMagick review is the longer write-up.

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

Voluum's Facebook guide is the place that names the duplicate path in plain words.

“Make sure that you turn off the Pixel Redirect URL option to avoid sending your conversions twice.”

Voluum Documentation: Facebook Conversions API setup

That redirect is a second send of the conversion while the API postback is already on. The Voluum review covers the tracker. Profit is the entry plan, on the Voluum pricing page.

Voluum homepage with the headline about one ad tracking platform, a dashboard preview, and counts of advertisers and events.

A server container is another way to build the event. Read Conversions API through Tag Manager or a tracker for that setup. The gateway guide covers the pipe that copies a pixel event, which is separate from a postback that waits until the tracker has stored the sale.

Hosted checkout: the payment is the server 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 sit on one record. The Meta send on that record is a server Purchase from the checkout you host.

“If a page also fires a browser Purchase event, Meta receives both.”

ElasticFunnels Documentation: Meta Ads integration

Both of those Purchases still have to share the name and the id described above. The event leaves when the checkout payment succeeds. On that same connection you can add a test events code so the events show in Events Manager.

Every feature is on every plan, including that server Purchase. During the trial you can set up pages, funnels, and a custom domain.

Funnel platform

ElasticFunnels

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

The hosted checkout sends Purchase after payment.

Meta Ads integration

ElasticFunnels is newer than the platforms buyers compare it with, and there is very little independent review coverage of the Meta event settings. Until you run real volume through it, you are largely taking the vendor's word for how that Purchase is built. The product has been on the market since 2023, which is why those outside write-ups are still thin. You still get the pages, the same-URL split test, and the checkout.

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

Facebook Conversions API test events

Test Events in Events Manager uses a test id sent as test_event_code. Add that code to the server event and complete one test order. Test Events shows what arrived. Meta says the field is for testing. Remove the code before you send real visitors.

“The test_event_code field should be used only for testing”

Meta Documentation: Using the API

ElasticFunnels accepts that code as an optional value on the Conversions API connection. When the name and the id match, Meta keeps one event. When they do not, the two sends stay separate.

On ClickMagick, the Log button in Audience Optimization shows the result of each conversion the upload sent. That log is the server side of the check. It is a different screen from Test Events.

Pixel plus the server send

Running both is how a lander pixel and a tracker, or a checkout pixel and a server Purchase, describe one commission. The match is what keeps that from becoming two sales in Ads Manager.

What works

  • Meta can keep a single event when the pixel Purchase and the server Purchase share a name and an id.
  • You can leave the pixel on the page and still send the sale from the tracker or the checkout.

What to watch

  • A Purchase that arrives without the matching id stays a second event.
  • An upload can succeed and still be filtered in Ads Manager reporting, so the ad account total and the upload log can disagree.

What buyers report when the pair fails

People who still saw two Purchase events found that only one of the two carried an event ID, so Meta did not treat them as the same event. The check they point to is Test Events, where the id and the name on each copy can be read together.

A missing id is separate from what Ads Manager does with an upload that already went through.

“Some events are deduplicated or filtered.”

ClickMagick Knowledge Base: Audience Optimization

The ad account can show fewer conversions than the Log button recorded.

When the ids match and the count is still high

A matched id addresses the double send. If Test Events shows one Purchase and Ads Manager still lists more purchases than the network approved, set those two numbers side by side in the purchase gap calculator. A later approval can go out on its own. Read how to send the network sale to Meta after the click.

My take

I would match the event name and the event id, then open Test Events and confirm a single Purchase before I changed a campaign. For an upsell I do not want inside that Purchase, I would use the custom event option on a checkout I host. On Voluum I would follow the Pixel Redirect instruction in that Facebook guide while the API postback is on.

Changelog

  • On 22 October 2026 this guide first covered the event name, the event id, Test Events, a custom event for the upsell, and the three ways a Purchase gets sent.

Questions

Do the pixel and the server event both need an event id?
Yes. The pixel field is eventID and the server field is event_id. Those values have to be the same string, the event names have to be the same, and both events have to hit the same pixel.
How do I test without those events landing in the live campaign?
Events Manager gives you a test_event_code. Add it on the server send, watch Test Events, and take the code off when the check is done. ElasticFunnels has an optional field for that code on the Conversions API connection.
Should an upsell be Purchase or a custom event?
Use a custom event when that extra charge should stay out of the sale Meta optimizes. Use Purchase for the upsell when you want it in that same event, and a fresh id when it should count on its own.
Ads Manager purchases are higher than the sales the network approved. What next?
Put the two counts side by side in the purchase gap calculator. A matched id addresses a double send. A gap that remains is the network decision, and the offline guide is the send that can wait for approval.

What we read

Meta's deduplication guide, the server event parameters, and the notes on using the API spell out how a pixel event and a server event match, including the test code.

ElasticFunnels' Meta Ads page covers the checkout Purchase, the upsell choice, and the test code field. Voluum's Facebook setup names the pixel redirect. RedTrack's Facebook tracking page describes the pre-built integration, and ClickMagick's Audience Optimization article covers the upload log and events Meta filters in reporting.

Related reading

See which starter plan sends the sale to Meta

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-22

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.