Flexify Flexify

Troubleshooting Low Catalog Match Rate for Meta Dynamic Ads

Learn how Shopify product IDs and variant IDs map to Meta, why Content ID mismatches happen, and how to resolve Dynamic Ads, event tracking, and event matching issues across native and custom pixel setups.

If your Meta Dynamic Ads are showing a low catalog match rate, the issue is often not the Flexify feed itself. In many cases, the problem comes from how product IDs are sent by the Meta pixel and how those IDs are matched against the catalog in Meta Commerce Manager.

What Flexify does - and what it does not do #

Flexify does not manage your Meta pixel. Flexify supplies a product feed that is uploaded to a catalog in Meta Commerce Manager. The pixel setup and event tracking on your Shopify storefront are handled separately.

Our recommendation: use Shopify’s native Meta pixel #

We strongly recommend using the native Facebook and Instagram by Meta sales channel pixel on Shopify.

Multiple or manual pixel setups can cause duplicate or incorrect data in reporting. If you are using the native Shopify setup, avoid adding extra pixel implementations unless you are sure they use the same ID structure.

Also note: if more than one Meta catalog is connected to the same pixel or event data source, the reported match rate may be lower for each catalog. If you are seeing warnings about multiple catalogs connected to the same event source, that may be one reason for a low match rate. In most cases, we recommend avoiding multiple catalogs and continuing to use the Shopify Product Catalog automatically created by the Facebook and Instagram sales channel.

Why Content ID mismatches happen #

The most common source of confusion is that Shopify and Meta structure products differently.

On Shopify:

  • every product has at least one variant
  • prices and inventory exist on the variant level

On Meta:

  • each catalog item uses a unique content ID (content_id)
  • related variants are grouped together using group ID (item_group_id)

Because of this difference, Flexify maps Shopify data like this:

ShopifyMeta
Variant IDContent ID
Product IDGroup ID

This is the structure Flexify uses in the feed, and it matches Meta’s catalog model for variants and product groups.

What this means for Dynamic Ads and event matching #

For catalog matching to work correctly, the IDs sent by your pixel events must match the IDs in your Meta catalog.

In a Shopify-based Meta catalog, the catalog item itself is typically the variant, while the Shopify product ID is used to group related variants together under item_group_id. If your pixel or custom tracking sends a different identifier format than the catalog uses, Meta may struggle to match events such as ViewContent, AddToCart, or Purchase to the right catalog items.

In Shopify’s native Facebook and Instagram sales channel setup, Pixel Helper may show a Shopify product ID together with content_type: product_group. That is usually expected behavior. Variant-level tracking usually requires a custom pixel setup.

Common troubleshooting scenarios #

1. The pixel uses different IDs than the catalog

If your pixel sends one type of ID but your catalog uses another, your catalog match rate can drop.

A common example is:

  • the catalog uses Shopify variant IDs
  • a custom pixel sends Shopify product IDs, SKUs, or some other identifier

In that case, Meta cannot reliably match the event to the catalog item. Meta’s docs say content_ids can contain product IDs such as SKUs, which is exactly why using the wrong identifier format can break matching against a Shopify-based catalog.

2. A custom pixel overrides Shopify’s native setup

If you use a custom pixel or a third-party tracking layer, make sure it sends the same ID structure as your Meta catalog.

If your catalog is based on Shopify and Flexify, that usually means:

  • variant ID for the item itself
  • product ID for the group

If a custom pixel sends a different format than the native Shopify integration, event matching can break.

If you’d like to track events at the variant level for more granular reporting and targeting, you’ll need to implement a custom pixel solution. This can be done by adding your own pixel directly to your theme, or by using a third-party app or Google Tag Manager to set up variant-level tracking. Shopify’s customer events documentation supports using custom pixels and GTM-based setups for custom tracking needs.

3. Multiple catalogs are connected to the same pixel or event data source

A low match rate can also happen when more than one Meta catalog is connected to the same pixel or event data source. In that case, the match rate may be split across catalogs, which can make each catalog appear to perform worse individually.

For most Shopify setups, we recommend avoiding multiple catalogs and continuing to use the Shopify Product Catalog automatically created by the Facebook and Instagram sales channel. This usually leads to a cleaner setup for attribution, tracking, and event matching over time.

4. The feed is correct, but the catalog setup is incomplete

If you are using Flexify as a supplementary feed, remember that the primary catalog still comes from Shopify’s Facebook and Instagram sales channel. The supplementary feed enhances the catalog, but it does not create or delete products, and it does not manage the pixel.

How to troubleshoot low catalog match rate #

Use this checklist:

  1. Check which IDs your catalog uses
    • Open a product in Meta Commerce Manager.
    • Confirm the item ID and the grouped product structure.
  2. Compare those IDs with Shopify
    • In Shopify, check the product and variant IDs for the same item.
    • Remember:
      • Shopify Variant ID -> Meta Content ID (content_id)
      • Shopify Product ID -> Meta Group ID (item_group_id)

  3. Check what your pixel sends
    • Use Meta Pixel Helper or your event debugger.
    • Review the content_id or content_ids values sent on product and cart events. Also check the content_type value. If Shopify product IDs are being passed as group IDs, content_type should be product_group. If variant-level item IDs are being passed, it should usually be product. If content_type is missing, matching can become less reliable.
  4. Check whether the same pixel is connected to multiple catalogs
    • If the same event data source is linked to more than one Meta catalog, the reported catalog match rate may be split across them. If possible, keep your setup focused on a single catalog.
  5. Use the native Shopify pixel where possible
  6. If you use a custom pixel, keep the ID format identical
    • Your custom setup should send the same identifier format that your catalog expects.
    • Do not mix variant IDs, product IDs, SKUs, and custom identifiers unless your catalog is built to use them.

Good to know #

If your catalog is correctly structured and your pixel sends matching IDs, Meta Dynamic Ads should be able to match events to the correct items without any special remapping inside Flexify. Flexify’s role is to provide the feed data in the correct catalog structure. Pixel mismatches usually come from the storefront tracking layer, not from the feed itself.

Low match rate is not always caused by a feed issue or a wrong ID. In some cases, it is caused by the overall catalog and tracking setup, for example when multiple catalogs share the same event data source. Keeping one primary Shopify-created catalog is usually the cleanest long-term setup. Meta also has broader guidance on building a high-quality catalog in Commerce Manager.

Need help? #

If you need help checking how your catalog is set up, please contact our support team at [email protected].