Why it happens
Meta requires value and currency on every purchase. Meta's pixel reference lists currency and value as required for Purchase. The Conversions API says the same: value is required for purchase events, and currency must be a three-letter ISO code. Without them, Meta cannot add up purchase value or use it to optimise your ads.
Content IDs matter for catalog ads. Meta lists contents or content_ids as required for Advantage+ catalog ads on Purchase. They tell Meta which products were bought. Without them, a purchase cannot be tied to an item in your catalog. If your catalog has items but the IDs do not match, that is a different problem: Meta's catalog match rate is low.
One of several senders leaves the field out. A Shopify store often sends Purchase from more than one place. The Facebook & Instagram app, a custom pixel, old theme code or another app can each send it. Meta's warning covers the pixel as a whole, so one sender with a gap is enough. Old code written for the order status page may have a fixed value or no product list (see Meta Pixel purchase event not firing on Shopify).
The field is there but empty or wrong. A value sent as text with a currency sign, a currency code that is not three letters, or an empty list of IDs counts as a problem too. Meta's own browser extension, Meta Ads Data Advisor, flags missing content IDs, value and currency on the page where the event fires.
Events missing deduplication parameters is its own warning. It means a browser copy and a server copy of the same purchase do not share an event ID. That has its own page: Meta event deduplication on Shopify.
Check it yourself
- 1In Meta Events Manager > Data sources > your pixel, open the Diagnostics tab. Read the warnings for Purchase and note the exact wording. Each issue comes with Meta's steps to fix it.
- 2On the Overview tab, open the Purchase event and check whether it arrives from the browser, the server or both. A warning that matches one source points at that sender.
- 3Open Test events and place a test order. Open the Purchase event and read its parameters: value, currency, content_ids, contents and content_type.
- 4If two Purchase events arrive for the one test order, read both. Note which one lacks the field.
- 5In Shopify admin > Settings > Customer events, list every pixel. Then check your theme code and any tag manager container for a purchase tag.
- 6In Shopify admin > Sales channels > Facebook & Instagram, open the Settings tab > Share data > Change. Note the level: Conservative, Enhanced or Maximum. Above Conservative, the app also sends purchases from a server.
- 7With Meta Ads Data Advisor in Chrome or Edge, finish a test order and read what it reports on the order page.
- 8Meta's help says a fixed issue moves to Previously detected and returns if Meta sees it again.
The fields each server purchase should carry are in setting up the Conversions API on Shopify.
FAQ
Does a missing value stop Meta from counting the purchase?
Meta still receives the event. Without a value it cannot report purchase value or use value to optimise.
Do I need content_ids if I do not run catalog ads?
Meta lists them as required only for Advantage+ catalog ads. They also tell Meta which products sold.
Should value be the total or the subtotal?
Meta leaves that to you. See Meta's purchase value does not match your Shopify order total.
How long until the warning goes away?
Meta moves a fixed issue to Previously detected after it stops seeing it. Send a test order, then check again a few days later.