Conversion

Google Shopping feed to Facebook catalog

Meta designed its catalog spec to look like Google's, which is why most people assume the Merchant Center feed can go straight into Commerce Manager. It nearly can. The attribute names match on the fields that matter; the values do not: 'in_stock' becomes 'in stock', backorder has no Meta equivalent, identifier_exists means nothing, and the link must sit on your own domain. The table below is the full mapping with every difference marked.

We connect your store, build the feed and keep it in sync. Updated 2026-10-27.

At a glance

  • Same names: id, title, description, link, image_link, price, brand, gtin, mpn, condition, item_group_id, color, size, gender, sale_price, custom_label_0–4, google_product_category.
  • Different values: availability uses spaces on Meta ('in stock', 'out of stock'); Google's preorder and backorder need a rule; age_group gains 'teen' and 'all ages' on Meta.
  • Different limits: title 150 (Google) vs 200 (Meta); description 5,000 vs 9,999; Meta accepts google_product_category directly, so no taxonomy conversion is needed.
  • Textfinity reads the Google feed (or the store behind it) and publishes the Meta feed on a URL that Commerce Manager fetches on a schedule; we set up the mapping for you.

Google Shopping attributes mapped to Meta catalog fields

Attributes from Google's product data specification on the left, fields from Meta's catalog reference on the right. 'Same' means the value passes through unchanged.

Google attributeMeta fieldDifference / transform
ididsame (Meta max 100 chars)
titletitlesame; Meta allows 200 chars, shows ~65
descriptiondescriptionsame; Meta max 9,999, plain text
linklinksame; must be on the business's domain
image_linkimage_linksame; ≥500×500 px, JPEG/PNG
additional_image_linkadditional_image_linksame; Meta up to 50 URLs
availability (in_stock, out_of_stock, preorder, backorder)availability (in stock, out of stock)replace from regexp: _ → space; rule for preorder/backorder
price (24.99 USD)pricesame format
sale_price / sale_price_effective_datesale_price / sale_price_effective_datesame format (ISO 8601 range with '/')
brandbrandsame; Meta needs one of brand, gtin, mpn
gtin / mpngtin / mpnsame
identifier_exists— (none)leave out
condition (new, refurbished, used)conditionsame
item_group_iditem_group_idsame
color / size / material / patterncolor / size / material / patternsame
gender (male, female, unisex)gendersame
age_group (newborn…adult)age_groupsame values accepted; Meta adds teen, all ages
google_product_categorygoogle_product_categorysame; or map to fb_product_category via lookup
product_typeproduct_typesame (≤750 chars)
custom_label_0–4custom_label_0–4same
shipping (country:region:service:price)shippingsame format
excluded_destination / pausestatusadvanced: pause = all → archived, else active

Google attributes from the Merchant Center product data specification; Meta fields and values from Meta's catalog fields reference (developers.facebook.com). Both checked 2026-10-27.

Where a Google Merchant Center feed fails in Commerce Manager

  • Availability spelling. Google's in_stock and out_of_stock use underscores; Meta's reference lists 'in stock' and 'out of stock' with a space. The replace-from-regexp transform (_ → space) fixes the common two; preorder and backorder need an advanced rule because Meta's reference does not list them.
  • Identifier logic. Google uses identifier_exists = no to excuse missing GTINs; Meta simply requires one of brand, gtin or mpn per item. Drop identifier_exists and make sure brand is filled.
  • Link domain. Meta rejects links that are not on the business's own domain, so a Google feed built for a marketplace landing page will not do. Also, Google's ads_redirect tracking URLs have no Meta equivalent; keep link clean.
  • Pause and destinations. Google's pause and excluded_destination attributes are ignored by Meta. If you pause items for Google, map that to Meta's status = archived with an advanced rule, or Meta keeps selling them.
  • Category. Meta accepts google_product_category as-is, so the Google taxonomy to Facebook category question answers itself. Only use fb_product_category if you want Meta's own taxonomy; a two-column lookup sheet does the translation.

Google product taxonomy to Facebook category

Commerce Manager reads google_product_category, name or numeric ID, and uses it for the same purposes it uses fb_product_category: tax, policy and ad relevance. For nearly every store the right move is to send the Google field unchanged and leave fb_product_category empty. When a Meta Shops category requirement forces the Facebook taxonomy (some apparel and beauty categories), build a lookup sheet whose first tab has the Google ID in column A and the Facebook category path in column B and map fb_product_category with 'replace from google sheet', conditioned on 'is in google sheet list'. The sheet replaces substrings row by row, so a short ID can rewrite part of a longer one: list longer IDs above shorter ones they contain. Meta's reference asks for one field or the other, so send only the one you chose.

Lookup sheet, first tab: google_product_category → fb_product_category

google_product_category,fb_product_category
2271,clothing & accessories > clothing > dresses
187,clothing & accessories > shoes & footwear
505771,electronics > audio & video > headphones

Sample: the same products in Google and Meta format

The snippet is three rows of a Google Shopping feed (tab-delimited, trimmed to the columns that differ). The download is the Meta catalog CSV built from them. Everything except availability and the dropped identifier_exists column is identical, which is the point: the conversion is small, but it has to happen on every rebuild.

google-shopping.txt (source)

id	title	availability	price	identifier_exists	google_product_category
TANK-SAGE-S	Ribbed Crop Tank – Sage S	in_stock	24.00 USD	yes	212
LS-LINEN-01	Linen Lampshade	backorder	59.00 USD	yes	594
HP-4421	Noise Cancelling Headphones	out_of_stock	149.00 USD	no	505771

Examples

Worked examples, by situation

Three verticals, three Google rows and the Meta rows they become. Only the differences are shown.

Fashion · Google feed → Meta catalog · 1,800 variants

Availability respelled, identifier_exists dropped, nothing else changes

Before

id: TANK-SAGE-S  availability: in_stock
identifier_exists: yes  age_group: adult  google_product_category: 212

After

id: TANK-SAGE-S  availability: in stock
age_group: adult  google_product_category: 212

How we set it up

We build the feed from the Meta template and map every attribute as a rename from the same-named Google column; availability gets 'replace from regexp' with pattern _ and replacement space. identifier_exists is simply not mapped.

Furniture · Google feed → Meta catalog · 600 SKUs · backorder items

Google's backorder mapped to Meta's two-value availability

Before

availability: backorder  availability_date: 2026-12-01

After

availability: in stock
description: … Ships from December 1.

How we set it up

We map availability with the advanced expression: if [availability] equals "backorder" OR [availability] equals "preorder" then "in stock" else if [availability] equals "out_of_stock" then "out of stock" else "in stock". A suffix rule appends the ship date to description so the page and the ad agree. Stores that would rather not advertise backorders add a filter instead.

Electronics · Google feed → Meta catalog · 3,500 SKUs · paused items

Google pause and missing GTIN handled for Meta

Before

id: HP-4421  pause: all  identifier_exists: no  brand: Soundcore  gtin: (empty)

After

id: HP-4421  status: archived  brand: Soundcore

How we set it up

We map status with the advanced expression: if [pause] equals "all" then "archived" else "active". Brand is present so Meta's identifier requirement is met without a GTIN; feed hygiene's completeness check confirms brand is filled for 100% of rows before publishing.

Copy this plan

Plan: Google Shopping feed to Meta catalog

Under an hour of setup. If your Google feed is already built in Textfinity, we skip step 1 and build the Meta feed from the same source.

  1. 01

    Add the Google feed (or the store) as the source

    Paste the Google feed URL (CSV, TSV or XML) or connect the store that produces it. Hygiene checks run on import.

    What we set up: We add your Google feed URL, or connect the store behind it, as the source in Textfinity.
  2. 02

    Create the Meta feed from the template

    Meta's spelling is pre-filled; most columns map by rename from the identically named Google attribute.

    What we set up: We start from the Meta (Facebook and Instagram) template and map most columns as renames.
  3. 03

    Fix availability

    Replace the underscore with a regexp rule, or, when preorder and backorder also occur, handle all four values in one advanced rule.

    What we set up: We map availability with replace from regexp (underscore to space) or one advanced rule for all four values.
  4. 04

    Drop Google-only attributes and set status

    Leave identifier_exists, ads_redirect, excluded_destination and shopping_ads_excluded_country unmapped; derive status from pause.

    What we set up: We leave the Google-only columns unmapped and derive status from pause with an advanced rule.
  5. 05

    Decide the category field

    Keep google_product_category as is; add fb_product_category only through a lookup sheet if Shops demands it.

    What we set up: If needed, we map fb_product_category as a replace from google sheet on your lookup sheet.
  6. 06

    Register the feed in Commerce Manager

    Add the feed URL under Catalog → Data sources → Add data feed → Use a URL with an hourly, daily or weekly schedule. Check Diagnostics after the first fetch (outside Textfinity).

    What we set up: We register the URL with you: you give us access to Commerce Manager, or we walk you through it.

Customization tips

Make it yours

Build both feeds from the store, not one from the other

Converting the Google feed works, but a Meta feed built from the same store source lets you give Meta longer titles (200 chars) and richer descriptions without touching Google. The trade-off is two mappings to maintain; most stores accept it once the catalogs diverge.

Keep ids identical across channels

Same id in Google and Meta makes performance comparison and pixel matching trivial. Do not append a channel suffix to Meta ids.

Use Meta's extra title room, carefully

Meta allows 200 characters but shows about 65. A combine that puts the product name first and the variant detail last works for both channels; an AI title config writes 100 to 150 characters with the key information in the first 70, so the visible part carries the product, and only titles you accept in review replace the Google title.

Hourly fetch only if availability moves

Commerce Manager fetches hourly at most. If the Google feed only changes daily, a daily Meta fetch and a daily Textfinity sync are enough and keep diagnostics readable.

FAQ

Questions about google shopping feed to facebook catalog

Can I use my Google Shopping feed for a Facebook catalog?

Almost. Meta's field names match Google's for id, title, description, link, image_link, price, brand, gtin, condition, item_group_id and the apparel attributes, and Meta accepts google_product_category directly. The values that need changing are availability ('in_stock' → 'in stock', no backorder on Meta) and Google-only attributes such as identifier_exists and pause, which Meta ignores or you must translate.

What is the difference between google_product_category and fb_product_category?

They are two taxonomies for the same purpose. Commerce Manager accepts either, as a name or numeric ID. If you already maintain Google categories, send them unchanged; only build a lookup to fb_product_category when a Meta Shops requirement asks for the Facebook taxonomy.

Why does Meta reject in_stock from my Google feed?

Meta's catalog reference lists availability as 'in stock' or 'out of stock', with a space. Google's values use an underscore. Replace the underscore on the way out, and decide what preorder and backorder should become, since Meta's reference does not list them.

Do title and description limits differ between Google and Meta?

Yes. Google allows 150 characters for title and 5,000 for description; Meta allows 200 and 9,999. A feed that passes Google passes Meta on length. Going the other way, from Meta to Google, is where titles need trimming.

Set up for you

Have us turn your Google Shopping feed into a Meta catalog.

Send us the feed URL or your store. We set up the Meta feed in Textfinity, fix availability once and register the URL with you in Commerce Manager; the software rebuilds it every time the Google data changes.

Get your Meta catalog set upOr email support@textfinity.io

Tell us your store and channels. We reply within 24 hours.