This article covers that mechanism and Meta's own report on it. To find a second sender behind too many purchases, see our page on Meta counting purchases twice.
Why Meta needs to deduplicate at all
Meta's developer documentation recommends sending events from the Meta Pixel and the Conversions API together, and calls this a redundant setup. The server fills the gaps the browser leaves, and Meta keeps one copy of each event.
Shopify's help says that at the Enhanced and Maximum data sharing levels of the Facebook & Instagram channel, the store uses the Conversions API as well as the Meta Pixel. At the Standard level only the pixel sends. A pixel in the theme, a Purchase tag in Google Tag Manager or another app each adds one more sender.
The two ways Meta matches events
Meta's page on deduplicating pixel and server events describes two methods.
Event ID and event name. This is the method Meta recommends. The pixel passes an eventID as the fourth argument of its fbq('track', ...) call, and the server sends event_id with the event. When the IDs match and the event names match, for example both are Purchase, Meta treats them as one event. Meta's parameter reference says the ID can be any unique string, and names order numbers or transaction IDs as good choices.
Browser ID or external ID. As a fallback, Meta can match on the event name together with fbp (the browser ID from the _fbp cookie) or external_id. Meta says this method generally works only when the browser event arrives first and the server event follows.
Two rules apply to both methods:
- The 48-hour window. Meta deduplicates matching events only when they arrive within 48 hours of the first one with that ID. A server copy sent days later is counted again.
- The first event usually wins. When the two copies do not differ in a meaningful way, Meta says it generally keeps the one it received first.
So a Purchase is "missing deduplication parameters" when one of the copies carries no event ID, or carries one that the other copy does not share. Meta then has only the weaker fallback to go on, or nothing at all.
How to read the Event Deduplication tab
Meta's guide to verifying a Conversions API setup points to one place. In Events Manager, open your pixel, click Event Details for the Purchase event and open the Event Deduplication tab. Meta describes three figures there:
- Rate of Events Deduplicated: the share of events from each source that Meta deduplicated.
- Rate of Deduplication Key Usage: the share of events from each source that carried each dedupe key, such as the event ID.
- Overlap: of the events that carried a given key, the share Meta received from both sources, measured against the source that sent fewer events.
Meta says a warning appears when your deduplication rate is too low. Its guide does not name the warning, and the wording in your account may differ.
The same guide says the Overview page shows events before deduplication. A high Purchase count on Overview is therefore no proof of a duplicate on its own.
Check your store in three steps
- 1Open the Event Deduplication tab for Purchase and read the key usage for browser and for server. If one source shows the event ID on almost every event and the other on few, the sender with the low share is the one to fix.
- 2Read the overlap. If both sources carry the key but the overlap is low, the two sides send different values, for example the order number with its # sign on one side and the long order ID on the other.
- 3In Events Manager, use Test events and place one real order with a low price product. Open each Purchase that arrives and compare the event ID of the browser copy with the server copy.
To list every sender in your store and compare Meta's count with your orders, follow the steps on Meta counting purchases twice.
How to fix what you find
One sender sends no event ID. Usually a theme snippet or an old Tag Manager tag. If another sender already covers both browser and server, remove only this one's Purchase. If you keep it, it needs the same ID as the server copy.
Both send an ID, but different ones. Pick one value per order, such as the Shopify order ID, and make both sides use exactly that string.
The server copy arrives late. A server that retries for days can fall outside the 48-hour window.
Two senders that were never meant to work together. For example the Facebook & Instagram channel at Enhanced and a second app with its own server connection. They rarely share IDs. Keep one of them for purchases. Turning off the channel's data sharing stops all the events it sends, page views and add to cart included, so decide what you still need first.
The Shopify options that send the server copy are in Meta's Conversions API options for Shopify.
FAQ
Is the order number a good event ID?
Yes, if every sender uses the same value for the same order. Meta names order numbers and transaction IDs as examples. What breaks deduplication is two formats of the same order.
Does deduplication fix past purchases?
Meta's pages describe deduplication of events as they arrive, within 48 hours. They do not say past counts are corrected after a fix, so expect old days to stay as they are.
Will removing the browser pixel stop the warning?
It removes the need to deduplicate, but you also lose what the pixel sends besides purchases. Meta's recommended setup keeps both with a shared ID.
Where Tikra fits
Tikra sends one Purchase for each paid online order of your store from our server to Meta. Meta starts in a check before sending. With a key that can read your pixel's statistics, Tikra reads Meta's own count every day for at least 48 hours and shows whether another connection still sends your purchases; with another key, sending starts after you turn the store's own Meta purchase tracking off and confirm it on the Meta card. Either way, Meta goes live only when its own count shows no other sender, or when you confirm that the store's own Meta purchase tracking is off. Tikra applies your customers' consent choices to every order, and in Strict mode an order is sent only with the buyer's consent. A written guarantee in our Terms covers eligible orders: at least 97 % reach each platform, fixed within 12 hours or a month's fee credited (Terms of Service, section 8).
The free diagnosis sends none of your orders anywhere. It shows your paid orders of the last 7 full days, how many came from a Meta, Google or TikTok ad, and, after a full day and 10 paid online orders, how many your shoppers' browsers reported. With a key that can read your pixel's statistics, it also shows Meta's count and flags when Meta counts some purchases twice.