Meta catalogue, Pixel and Google Merchant
Send products to a Meta catalogue and Google Merchant Center with one id everywhere, and run the Meta Pixel without counting any order twice.
What it is
Your app is the master of your product catalogue for ads. Products, prices, stock and pictures go to your Meta catalogue for Advantage+ catalogue ads (dynamic product ads), and the same products go to Google Merchant Center. Each item uses one id everywhere: its SKU, or a store-based id for a shop product without a SKU. The Meta Pixel and the server conversions send the same ids, so Meta can match "viewed", "added to cart" and "bought" to the product.
The Meta Pixel on your WooCommerce shop is loaded by the CFI Order Attribution plugin. Each browser event and its server copy carry the same event id, so Meta counts it once.
Who it is for
- Online sellers running Meta catalogue ads or Google Shopping
- Shops selling in more than one country and currency
- Cash-on-delivery sellers who need Meta to count only paid orders
Before you start#
- In Meta Commerce Manager, create or reuse a catalogue and a system user with catalogue management access.
- Paste the catalogue id and the system-user token in Integrations › Meta / Facebook. Connect the catalogue to your pixel in Meta Events Manager.
- Switch off any other catalogue sync and any other plugin's pixel, so there is one master.
- Update the store plugin to version 2.3.0 or later.
Step by step#
- Open Integrations › Attribution › Ad platforms and find the Meta catalogue block.
- Check the catalogue settings, such as whether prices include tax and the optional margin-band and stock-band labels, and choose Sync now.
- Open Problems and fix any item Meta refused: no shop link, no image, no price, or variations sharing one SKU.
- In WordPress, open WooCommerce › Settings › CFI Attribution › Meta Pixel, enter your pixel id and keep Who loads the Meta Pixel set to Cash Flow Inventory.
- Put Meta's test event code in both the plugin and the app, place a test order and confirm it in Meta's Test events screen. Then clear the code.
- Create your Advantage+ catalogue ad on a product set in Meta Ads Manager.
What is sent to the catalogue#
Name, description, price in your currency, sale price, availability from stock you can actually sell, the stock count, the shop link and pictures, brand, colour and size. A GTIN is sent only when its check digit is valid. Products that are not sold online are hidden, not deleted.
Updates go with every stock change, every price or product change, a nightly check of what changed, and Sync now. When Meta asks the app to slow down, sending pauses and resumes by itself.
Markets#
Under Markets, add a country with its currency. Prices there come from a price list in that currency, or from an exchange rate only if you choose one, with a rounding rule (exact, whole amounts, or ending in .99). Prices are never converted automatically. Product names and descriptions stay as you wrote them. An item without a price in a market is not sent there.
Product sets#
Product sets suggests sets: in stock with a high or medium margin, best sellers of the last 30 days, new in the last 30 days, or everything except low stock. Propose turns a suggestion into a change that a person approves and runs; Roll back deletes it. Nothing is created automatically.
Google Merchant Center#
The Google upload uses the same product rows and the same id as the Meta catalogue, through Google's Merchant API. Stock changes update only availability and price.
The Pixel: browser and server, counted once#
- Browser events: PageView, ViewContent, AddToCart, InitiateCheckout, AddPaymentInfo and a custom OrderPlaced on the thank-you page.
- Purchase is never sent from the browser. Your app sends it from the server only when the order is paid; for cash on delivery, once the courier's cash is settled. Refused parcels are never counted as sales.
- The pixel loads only after the shopper agrees, where the law asks for consent first. Global Privacy Control means no.
- Pixel health shows problems such as a Purchase sent from the shop's browser or two pixels on one page.
Limits and what is not there yet#
- Tested against recorded copies of Meta's and Google's APIs (contract sandbox) and in the plugin's test set-up. Nothing has been sent to a real Meta catalogue, dataset or Merchant Center account yet.
- The app keeps no translations of product names for markets.
- The assistant and AI apps can read the catalogue status, items, problems and markets, and propose a product set. They never approve or run it.
Questions#
Why is an item missing from my catalogue ads?
Open Problems. Items Meta refused, or that could not be sent, are listed there with what to do. Items with problems are not shown in catalogue ads.
I use another pixel plugin. Can I keep it?
Yes, in "Other plugin" mode, but switch its Purchase event off. Otherwise Meta counts every order twice.
Why optimise on Purchase if it arrives later?
Purchase is sent only for orders that were really paid, so ads learn from real sales. OrderPlaced can be used as a custom conversion for early learning.
Are my margins sent to Meta?
No. With the optional labels on, only a band (high, medium or low) is sent, never your figures.
