# One Purchase when both sends fire · Postback Report

> Source: https://postbackreport.cc/compare/facebook-conversion-api-deduplication

## 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 ](https://developers.facebook.com/docs/marketing-api/conversions-api/deduplicate-pixel-and-server-events) Oct 2026 

**Disclosure:**We may earn a commission when you buy through links on this page. It never affects our rankings. [How we research](/methodology). 

[See which starter plan sends the sale to Meta](/best/server-side-signal-checker-which-entry-plan-sends-the-sale-to-meta-and-google)

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](/compare/facebook-pixel-vs-conversion-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 ](https://developers.facebook.com/docs/marketing-api/conversions-api/parameters/server-event/) Oct 2026 

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 ](https://developers.facebook.com/docs/marketing-api/conversions-api/parameters/server-event/) Oct 2026 

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 ](https://developers.facebook.com/docs/marketing-api/conversions-api/parameters/server-event/) Oct 2026 

### 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](https://elasticfunnels.io/integrations/meta-ads), 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 ](https://elasticfunnels.io/integrations/meta-ads) Oct 2026 

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](https://www.redtrack.io/facebook-tracking/) 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](/reviews/redtrack) 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](/reviews/redtrack/pricing).

[ClickMagick calls Audience Optimization](https://www.clickmagick.com/kb/kb.cgi?answer=686) 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](/reviews/clickmagick/pricing). The [ClickMagick review](/reviews/clickmagick) is the longer write-up.

[Voluum's Facebook guide](https://doc.voluum.com/article/facebook-conversion-integration) 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 ](https://doc.voluum.com/article/facebook-conversion-integration) Oct 2026 

That redirect is a second send of the conversion while the API postback is already on. The [Voluum review](/reviews/voluum) covers the tracker. Profit is the entry plan, on the [Voluum pricing page](/reviews/voluum/pricing).

A server container is another way to build the event. Read [Conversions API through Tag Manager or a tracker](/compare/facebook-conversion-api-google-tag-manager) for that setup. The [gateway guide](/compare/facebook-conversion-api-gateway) 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 ](https://elasticfunnels.io/integrations/meta-ads) Oct 2026 

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](https://elasticfunnels.io/integrations/meta-ads)

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](/compare/elasticfunnels-vs-clickfunnels). The write-up on this site is the [ElasticFunnels review](/reviews/elasticfunnels).

### 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 ](https://developers.facebook.com/docs/marketing-api/conversions-api/using-the-api/) Oct 2026 

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 ](https://www.clickmagick.com/kb/kb.cgi?answer=686) Oct 2026 

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](/best/purchase-gap-calculator-ads-manager-purchases-against-network-approved-sales). A later approval can go out on its own. Read [how to send the network sale to Meta after the click](/compare/meta-offline-conversions-affiliate-postback).

#### 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](https://developers.facebook.com/docs/marketing-api/conversions-api/deduplicate-pixel-and-server-events), the [server event parameters](https://developers.facebook.com/docs/marketing-api/conversions-api/parameters/server-event/), and the notes on [using the API](https://developers.facebook.com/docs/marketing-api/conversions-api/using-the-api/) spell out how a pixel event and a server event match, including the test code.

[ElasticFunnels' Meta Ads page](https://elasticfunnels.io/integrations/meta-ads) covers the checkout Purchase, the upsell choice, and the test code field. [Voluum's Facebook setup](https://doc.voluum.com/article/facebook-conversion-integration) names the pixel redirect. [RedTrack's Facebook tracking page](https://www.redtrack.io/facebook-tracking/) describes the pre-built integration, and [ClickMagick's Audience Optimization article](https://www.clickmagick.com/kb/kb.cgi?answer=686) covers the upload log and events Meta filters in reporting.

### Related reading

* [How the pixel and Conversions API each send a Meta event](/compare/facebook-pixel-vs-conversion-api)
* [Conversions API through Tag Manager or a tracker](/compare/facebook-conversion-api-google-tag-manager)
* [Gateway versus the tracker postback](/compare/facebook-conversion-api-gateway)
* [WordPress plugin events and the network sale](/compare/facebook-conversion-api-wordpress)
* [Send the network sale to Meta after approval](/compare/meta-offline-conversions-affiliate-postback)
* [Keep the fbclid through the redirect](/compare/fbclid-parameter)
* [Ads Manager purchases versus network-approved sales](/best/purchase-gap-calculator-ads-manager-purchases-against-network-approved-sales)
* [Which entry plan sends sales to Meta](/best/server-side-signal-checker-which-entry-plan-sends-the-sale-to-meta-and-google)
* [RedTrack review](/reviews/redtrack)
* [ClickMagick review](/reviews/clickmagick)
* [Voluum review](/reviews/voluum)
* [ElasticFunnels review](/reviews/elasticfunnels)

[See which starter plan sends the sale to Meta](/best/server-side-signal-checker-which-entry-plan-sends-the-sale-to-meta-and-google)

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](mailto:nadial@postbackreport.cc)

Last checked 2026-10-22

---

[ Postback Report ](/) 

Postback Report ranks affiliate tracking software for media buyers running Meta and Google direct response, judged on postbacks, cost, and the Conversions API.

[Contact](/contact)

Postback Report

We may earn a commission when you buy through links on this page. It never affects our rankings.

© 2026 Postback Report. Independent and reader-supported.
