Analytics & CRO

Meta Pixel and the Conversions API count the purchase twice: how to find the duplication

Find duplicate Purchase events in Meta Pixel and the Conversions API: eventID, event_id, the same name, repeated sends and a test with a real order.

By DigitaL+ team4 min read
Analytics columns and a funnel for measuring and improving conversions
Key points

Key takeaways

  • Two sends can represent one purchase if the browser and server events are correctly linked.
  • The Pixel eventID must match the CAPI event_id for the same Purchase.
  • Check the integration with a unique test order, a page reload and a repeated notification.
In this article

The store has one confirmed order, but in Meta's diagnostics you see two Purchase sends. This may be the normal pair from the browser and the server, or real duplication. The difference is established from the events of a specific order, not just from the total count in the ad report.

Short answer

For one purchase, send the same event name and a shared identifier: the Pixel uses eventID, and the Conversions API uses event_id. Check that both sends go to the correct Pixel/dataset and represent one result. Then test repeated notifications, page reloads and competing integrations that may send extra purchases.

Two sends don't necessarily mean two purchases

The Pixel measures through the browser; CAPI can send the same action from the server. This combination needs deduplication. If the systems use different identifiers for one purchase, Meta may not recognize that the events refer to one action.

Separately, there are differences in attribution, time windows and order status. A higher ad count than the store's doesn't by itself prove a deduplication defect. First check comparable results and specific sends.

Which fields must match

ElementBrowserServer
Event namePurchaseevent_name: Purchase
Identifier for the same actioneventID: purchase_DEMO_8472event_id: purchase_DEMO_8472
Target configurationThe correct Pixel IDThe corresponding Pixel/dataset
Value and currencyThe agreed valueThe same business definition

The identifier in the table is hypothetical. Meta describes the recommended matching by name and event ID, where the browser eventID must match the server event_id. In the Pixel, eventID is an option in the fourth argument of the call, not just an arbitrary field with a similar name among the purchase data.

The identifier belongs to the action

Generate a stable identifier for one logical purchase and use it in both channels. If the server creates a new random ID on every attempt, a repeated notification looks like a new action. If all orders share the same ID, you risk losing valid results.

Don't use an email or phone number as the purchase identifier. One customer can make several different purchases. With orders from different stores or environments, add safe differentiation so the numbers don't collide.

Map every sender

Check the platform module, GTM, custom code, a server-side container, CAPI Gateway and connected apps. A common cause is an old and a new mechanism running at the same time. The list should show who sends Purchase, when they do it and where they get the event ID.

Don't arbitrarily turn off the whole Pixel to reduce the count. First determine which flow is redundant and what else it measures. After the change, also check the other important events, so you don't fix purchases by losing the whole journey.

A one-order test that reveals the problem

  1. Choose a test environment or an agreed test order and record its number.
  2. Check the agreed state for Purchase: created, paid or another real confirmation.
  3. Trace the browser send and the server payload in the permitted diagnostic tools.
  4. Compare the name, event ID, target Pixel, value and currency.
  5. Check how the browser/server events appear and the deduplication diagnostics in Events Manager.
  6. Repeat with a page reload and a repeated webhook delivery.
  7. Make a second, different order: it must have a new identifier and remain a separate purchase.

The test must prove two things at once: repeating the first order doesn't create a new result, and the second valid purchase doesn't disappear. A general green checkmark for an active integration isn't enough.

Repeated server notifications need their own control

A webhook can be delivered again after a temporary error. The integration must keep track of the processed action and manage retries. This is idempotency: the same incoming operation doesn't create a new business result on every repeat.

Don't rely solely on browser/server deduplication to fix two independent server integrations. Record the sent event, the delivery result and the reason for the retry. The logs must be available only to the authorized team and must not show unnecessary customer data.

When should Purchase be sent?

Define it according to the store's model. With cash on delivery, a created order isn't the same as finally realized revenue. With online payment, loading the "Thank you" page may not be sufficient proof of success. The platform and the store must use a clearly documented result.

CAPI doesn't override the user's choice or the applicable data limitations. Moving measurement to the server is not a reason to send everything without control.

For general diagnostics, read GA4, GTM and conversion tracking. For online stores DigitaL+ combines Analytics & Tracking with Meta advertising. If the problem lies in the results after correct measurement, the next topic is catalog, creatives and margin.

Frequently asked questions

Does Event Match Quality show that there's no duplication?

No. The match quality of user signals and recognizing a repeated event are different checks.

Should event_id be random?

It can be generated in different ways, but it must be unique to the action and stable on repeats. Both channels must use the same value.

After the fix, will all reports match?

No. You'll remove the specific defect, but differences due to attribution, statuses, timing and permitted measurement may remain.

Sources and verification

Official sources

  1. Meta Developers: handling duplicate Pixel and Conversions API eventsMatching browser/server events by name and identifier.
Real projects

Related examples from the portfolio

Luxury Hotel Royal Prague - a DigitaL+ project

Luxury Hotel Royal Prague

Analysis of existing traffic and inquiries, and automation of the booking system

For Luxury Hotel Royal Prague we carried out a detailed analysis of existing traffic and inquiries and automated the booking system in order to optimize the customer…

View the project →
United Bulgarian Bank - a DigitaL+ project

United Bulgarian Bank

Awareness campaign on Google and Facebook

We took part in one of the awareness campaigns for preferential terms and UBB's "OK credit" option. A landing page was created for this purpose, to which…

View the project →
D+
Author and expert editor

DigitaL+ team

Editorial team

The article has been edited against the agency's practice and the official sources cited.

View expert profile →
Continue on this topic

Related guides

From knowledge to execution

If the topic is part of a real project, we can turn it into a prioritized plan, implementation and measurement.

Get in touch with DigitaL+
We use cookies to personalize content and ads, to provide social media features and to analyze our traffic. We also share information about your use of our site with our social media, advertising and analytics partners. View more
Cookies settings
Accept
Decline
Privacy and Cookie Policy
Privacy & Cookies policy
Cookie nameActive

Privacy and cookies

DIGITAL PLUS SOLUTIONS LTD. processes inquiry information and website technical data. The site includes Google Analytics, OpenAI advertising measurement and Cloudflare technology. This notice does not replace consent where required.

Read our full English Privacy Policy for purposes, recipients, retention criteria, your rights and the privacy contact.

Save settings
Cookies settings
Back to top
Call Now Button