Channel comparison
Google Shopping vs Meta: feed requirements compared
Google Shopping and Meta share almost every attribute name, so a Shopify feed built for one parses on the other, but they disagree about what is mandatory. Meta requires condition on every item and ignores google_product_category; Google treats identifiers as conditional and checks the feed against your product page.
Where the two specifications diverge
The 5 attributes one channel treats differently from the other. Everything else is identical and is listed further down.
| Attribute | Google Shopping | Meta | What that means |
|---|---|---|---|
| brand | Required in some cases | Recommended | Stricter on Google Shopping. |
| condition | Required in some cases | Required | Stricter on Meta. |
| google_product_category | Recommended | Not supported | Only Google Shopping accepts it. |
| gtin | Required in some cases | Recommended | Stricter on Google Shopping. |
| mpn | Required in some cases | Optional | Stricter on Google Shopping. |
Differences a table cannot show
Requirement levels are the easy part. These are the differences in values, structure and delivery that break a feed copied from one channel to the other.
Meta requires condition on every row
Google only wants condition when an item is not new, so a Shopify feed that omits it passes there. Meta expects the attribute on every item, which means a feed copied straight from Google fails on every row until condition is mapped. Shopify has no condition field, so it comes from a static value for most stores and from a tag or metafield for the rest.
Google reads your product page, Meta largely does not
Google crawls the landing page and compares the price and availability it finds there against the feed, disapproving items that disagree. Meta is far more tolerant of a stale catalogue. This is why the same regeneration cadence that keeps a Meta catalogue healthy can still produce mismatch disapprovals in Merchant Center.
Categorisation works differently
Google accepts google_product_category from its own taxonomy and uses it to decide which vertical rules apply to an item. Meta does not use that attribute at all: it has its own category field and infers a great deal from the title and description. Mapping the Google taxonomy is wasted effort on Meta, and omitting it is a real loss on Google.
Meta can be refreshed more often than Google
Meta offers hourly scheduled fetches and a Catalog Batch API for individual updates. Google schedules daily at the finest, with the Content API for pushes in between. If stock moves quickly, Meta can be kept closer to the truth through scheduling alone, whereas Google needs either the API or a tolerance for being a few hours behind.
Image expectations diverge by surface, not by channel
Both channels accept a single primary image URL, but Meta enforces stricter minimum resolutions on Shops surfaces than on catalogue ads. The same Shopify feed can therefore pass for advertising and fail for Shops, which is a distinction Google has no equivalent of.
Reusing one feed for the other channel
What actually has to change, in the order it is worth doing.
-
Map condition before anything else
It is the only difference that stops a Meta import outright. If everything you sell is new, a static value is the correct mapping and takes one rule. Only stores selling used, refurbished or vintage goods need this driven from a tag or metafield.
-
Drop google_product_category and keep the taxonomy work
Meta ignores the attribute, so it does not need to be in the file. Keep the mapping itself: it still drives your Google and Microsoft feeds, and Microsoft uses the same taxonomy values unchanged.
-
Keep item_group_id exactly as it is
Both channels group variants with item_group_id and both expect one row per variant. If your Google feed is already variant level, this part carries over without a change, and it is what makes the variant picker work in Shops.
-
Check your images against the Shops minimum, not the ads minimum
If you intend to use Instagram or Facebook Shops rather than only catalogue ads, verify the resolution of the images Shopify is actually serving. Theme-resized images are a common cause of items that appear in ads but never in Shops.
-
Decide the refresh cadence per channel rather than once
There is no reason to run both channels on the same schedule. Meta can take an hourly fetch, so give it one if stock moves. Google gains nothing from being regenerated more often than it is fetched, but it does need regenerating before every fetch, or the 30-day expiry starts emptying the catalogue.
Every attribute, side by side
All 16 attributes documented in this knowledge base, as Google Shopping and Meta each treat them.
| Attribute | Google Shopping | Meta |
|---|---|---|
| availability | Required availability | Required availability |
| brand | Required in some cases brand | Recommended brand |
| condition | Required in some cases condition | Required condition |
| custom_label_0 | Optional custom_label_0 | Optional custom_label_0 |
| description | Required description | Required description |
| google_product_category | Recommended google_product_category | Not supported — |
| gtin | Required in some cases gtin | Recommended gtin |
| id | Required id | Required id |
| identifier_exists | Optional identifier_exists | Not documented here — |
| image_link | Required image_link | Required image_link |
| item_group_id | Required in some cases item_group_id | Required in some cases item_group_id |
| link | Required link | Required link |
| mpn | Required in some cases mpn | Optional mpn |
| price | Required price | Required price |
| sale_price | Optional sale_price | Optional sale_price |
| title | Required title | Required title |
Frequently asked questions
Can I use the same feed file for Google Shopping and Meta?
Technically yes, and many merchants do, but it means shipping a file that carries attributes one channel ignores and misses one it requires. The reliable approach is one mapping with two published outputs: condition included for Meta, google_product_category included for Google.
Which channel is stricter, Google or Meta?
Google, on the things that matter. Its identifier rules are more demanding, and it actively compares the feed against your product page, which Meta does not. Meta is stricter in only one obvious way: condition is required on every item.
Does Meta use google_product_category?
No. Meta has its own category handling and does not read the Google taxonomy attribute, so including it has no effect. Microsoft Advertising does use the Google taxonomy, so the mapping is still worth keeping for that channel.
Do I need separate variant rows on both channels?
Yes. Both treat each Shopify variant as its own item with its own id, grouped by a shared item_group_id. A product-level feed loses every size and colour a shopper could pick on either channel.
Both specifications in full
- Google Shopping Google Shopping is the surface where Google displays product listings from a merchant's catalogue, fed by a product feed uploaded to Google Merchant Center. Google's product data specification is the most detailed of the major channels, and the one whose attribute names the other channels tend to borrow.
- Meta Meta's product catalogue is the data source behind Facebook and Instagram Shops, Advantage+ catalogue ads and dynamic retargeting, populated by a product feed uploaded to Commerce Manager. Its attribute names largely mirror Google's, but its accepted values and its handling of variants differ enough to break a feed copied straight across.
Errors on either channel
- Mismatched value: price The price mismatch error means the price in the feed does not agree with the price the channel found when it crawled the landing page. On Shopify the three usual culprits are a feed that has not regenerated since a price change, a link pointing at the wrong market's storefront, and a tax convention difference between the feed and the displayed price.
- Mismatched value: availability The availability mismatch error means the feed says an item is purchasable but the crawled landing page suggests otherwise, or the reverse. On Shopify it is usually a stale feed after a sell-out, or an availability value derived from inventory quantity alone without accounting for variants that do not track inventory or that allow overselling.
- Missing value: GTIN The "Missing value: GTIN" issue means a channel believes a product has a manufacturer-assigned barcode but the feed did not supply one. On Shopify it almost always traces back to the variant barcode field, which is optional in the admin and therefore left empty across large parts of most catalogues.
Related concepts
- Variant-level feed A variant-level feed emits one row for each purchasable variant rather than one row per product, because sales channels treat every size, colour and material as a separately buyable item with its own price, stock and barcode. A Shopify product with four sizes in three colours is one product in the admin and twelve items to a channel.
- Product identifiers Product identifiers are the values that let a sales channel recognise that your listing and someone else's describe the same physical product: a GTIN, or a manufacturer part number together with a brand. They matter because a channel that can identify a product can attach reviews, specifications and competing offers to it, and one that cannot has to treat your listing as an unknown object.
- Feed scheduling Feed scheduling is the arrangement where a sales channel fetches a feed from a fixed URL on a repeating timetable instead of the merchant uploading a file. It matters because the interval between regenerations is the window in which a channel can be wrong about a price or a stock level, and most mismatch disapprovals are caused by that window being too wide rather than by a bad mapping.
Primary sources
Channel specifications change. These are the official documents this page is based on.