Why it happens
The ID has to match exactly. Meta matches each event to a catalog item by its content ID. For catalog ads, Meta's troubleshooting page says the content ID in your events must exactly match the product ID or group ID of the same item in your catalog. Meta's help describes the match rate as the share of events whose content ID matches a catalog item.
Shopify has several IDs for one product. A Shopify product has a product ID, and each variant has a variant ID and often a SKU. A Google & YouTube feed can use its own ID, which starts with shopify_ and a country code. If the catalog was built from one of these and your pixel sends another, nothing matches.
content_type tells Meta what kind of ID it is. Meta's pixel reference says content_type is product or product_group, based on the IDs you send. product_group matches the group IDs in your catalog, the item_group_id column of a feed. If the type does not fit the IDs you send, Meta may look for the wrong kind of item.
Two senders, two formats. The Facebook & Instagram app, a custom pixel, theme code or another app can all send events to the same pixel. If one sends variant IDs and another sends SKUs, part of your events match and part do not.
The pixel is not connected to the catalog, or the item is gone. Meta's troubleshooting page lists two more causes: the pixel is not associated with the catalog, or the item does not exist in the catalog's feed. A product you deleted, or a variant that was never synced, cannot match.
Purchases need content IDs at all. A Purchase without content_ids or contents cannot match anything. That warning has its own page: Meta warns your Purchase event is missing value, currency or content IDs.
Check it yourself
- 1In Commerce Manager, open your catalog and find the events view (Meta names it Events). Read the match rate for each event and each data source.
- 2Check that the pixel your store uses is connected to this catalog.
- 3Open a few catalog items and note their content ID. Compare it with the same product in Shopify admin > Products: is it the variant ID, the product ID or the SKU?
- 4In Events Manager > Data sources > your pixel > Test events, view a product and place a test order. Read content_ids and content_type on ViewContent, AddToCart and Purchase.
- 5Compare those IDs with the catalog item from step 3. They must be the same text, not only the same product.
- 6If two Purchase events arrive for one test order, read the IDs in both.
- 7With Meta Ads Data Advisor in Chrome or Edge, open a product page and read the catalog details it shows.
- 8In Shopify admin > Sales channels > Facebook & Instagram, check that product syncing is on and that the products you sell are published to the channel.
How product IDs travel with a server purchase is in the Meta Conversions API on Shopify.
FAQ
Should I send variant IDs or product IDs?
Send what your catalog uses. If the catalog lists each variant as an item, send variant IDs with content_type product. If you send group IDs, use product_group.
Why do page views match but purchases do not?
The two events can come from different senders with different ID rules. Check each event on its own.
Does a low match rate stop Meta counting my purchases?
No. Meta still counts the purchase. It cannot tie it to a catalog item for your catalog ads.
How soon does the match rate change after a fix?
Meta works it out from the events it receives. New events with the right IDs raise it over the following days.