Improve your catalog match rate
Improve your catalog match rate
Your catalog match rate tells you how many of the products shoppers view, add to cart or buy on your store can be matched to a product in your ad catalog. A low match rate means dynamic ads, retargeting and conversion reports can't tell which product a shopper looked at. This article covers:
- How matching works — the same rule on every channel.
- Find the Content ID your pixel sends — on Facebook and Google.
- Compare it with the ID Omega sends — in the feed's mapping.
- Fix the mismatch — change the ID mapping so both sides agree.

How catalog matching works
Two things describe the same product to an ad channel:
- Your pixel — the tracking code on your store. Every time a shopper views a product, adds it to cart or buys it, the pixel sends an event with the product's Content ID.
- Your product feed — what Omega sends to the channel. Every product in the feed has an ID.
The channel matches the two by comparing them as plain text. When the pixel's Content ID and the feed's ID are exactly the same, the event is matched to that product. When they differ even slightly, the event can't be matched and is lost for dynamic ads and product reporting.
12345 , shopify_12345 and shopify_US_12345_67890 are three different IDs to the channel, even when they describe the same product.Each channel names the two sides differently:
Channel | Pixel sends | Feed attribute in Omega |
|---|---|---|
Facebook & Instagram |
| ID |
Google Shopping |
| Offer ID |
XML feeds (TikTok, Microsoft, Pinterest, Klaviyo) | Depends on the channel's pixel | ID |
By default, Omega sends the Shopify Variant ID as the ID, for example 42647978475616. Most pixels installed by Shopify's own sales channel apps send the Variant ID too, so they match out of the box. Mismatches usually come from a pixel installed by a theme, a tracking app or an agency that sends a different format.
What your match rate tells you
Before changing anything, look at how low the rate is. A rate of 0% and a rate that is just low have different causes.
Match rate | Likely cause | What to do |
|---|---|---|
0% | The pixel and the feed use different ID formats, so no event can match any product. This is almost always the ID mapping. | Follow the steps below to compare the two IDs and fix the mapping. |
Low, but above 0% | The ID format is already right, because some events do match. The feed was probably created recently, or you recently added products to it. Meta only matches events against products that are already in the catalog, and it recalculates the rate from past events. | Don't change your mapping. Wait a few days for Meta to process new events against the updated catalog, then check again. |
Find the Content ID on your Facebook pixel
- Install the Meta Ads Data Advisor extension in Google Chrome.
- Open a product page on your online store, choose a variant, and click the Pixel Helper icon.
- Expand the ViewContent event and look at content_ids. That value is the Content ID your pixel sends.
- Note the product and variant you opened, so you can compare the same one in Omega.

Compare it with the ID Omega sends
Start with the data Omega actually sent to the channel for that variant:
- In Omega Feed, open the feed for that channel and go to the Products tab.
- Click Add filter (the filter icon) and enter the variant ID of the product you opened on your store.
- Click the product in the list to open its detail page.
- In the Preview card, read ID (Facebook and XML) or Offer ID (Google). This is the final value in your feed after every mapping and rule is applied. The Data sync to channel table (Data generated for XML feeds) shows the same value next to the other attributes.
- Compare it with the Content ID from your pixel.


Only when the two values differ, look at where the feed's ID comes from:
- Go to the Configuration tab and scroll to Product attributes mapping. Use the product picker above the table to preview the same product.
- Find the ID row (Facebook and XML) or the Offer ID row (Google). The Preview column shows the value the current mapping produces for that product.

What your pixel sends | What Omega sends | Result |
|---|---|---|
|
| Match — nothing to fix |
|
| Pixel sends Product ID, feed sends Variant ID |
|
| Pixel sends SKU, feed sends Variant ID |
|
| Pixel adds a prefix, country and Product ID |
To tell a Product ID from a Variant ID, open the product in Shopify admin and choose a variant: the URL ends in /products/<product ID>/variants/<variant ID>.
Fix the mismatch with mapping
Change the feed's ID so it produces exactly what the pixel sends.
- In Product attributes mapping, click the edit icon on the ID or Offer ID row. Edit attribute mapping opens.
- In Default value, build the ID from variables and plain text. Type or pick a variable to insert it; anything else you type is sent as is.
- Check the Preview next to it. It must equal your pixel's Content ID character for character.
- Click Save in the modal, then Save the feed and let it sync.
Use the row that matches your pixel:
Your pixel sends | Set Default value to |
|---|---|
Variant ID, e.g. | Variant ID (the default) |
SKU, e.g. | SKU |
Product ID, e.g. | Product ID |
|
|
- SKU works only when every variant has a unique SKU in Shopify. Variants with an empty or duplicate SKU get the same ID and overwrite each other on the channel.
- Product ID gives every variant of a product the same ID, so the channel keeps only one of them. Use it only for products without variants.
- Market - Country inserts the feed's target country code, such as
US. If you run one feed per country, each feed produces its own country's IDs automatically.
After the next sync, give the channel a day or two to process new events before checking the match rate again.
Troubleshooting
My pixel sends different IDs on different pages
Some themes or apps send the Product ID on product pages and the Variant ID at checkout. Match the ID on the events that matter most for your ads, usually ViewContent / view_item and Purchase. If they disagree, fix the pixel setup first; a feed can only match one format.
I don't see content_ids or item_id at all
Your pixel isn't sending product data, so no feed ID can match it. Check that the pixel is connected through Shopify's sales channel app or your tracking app, and that it fires ViewContent / view_item on product pages.
The Preview matches but the match rate is still low
The match rate is calculated from past events, so it improves only as new events come in after your fix. The same applies to a new feed, or a feed you just added products to: give Meta a few days to catch up. Also check that the product is actually in the feed: products excluded by Product source, or disapproved by the channel, can't be matched.
I have two feeds on the same channel
Each feed has its own mapping. Fix the ID or Offer ID in every feed that sends products to the same catalog or Merchant Center account.
Updated on: 28/09/2026
Thank you!