Integration

Shopify + Meta catalog

Shopify's Facebook & Instagram channel fills one Meta catalog for Shops, Instagram Shopping and ads. A separate Shopify Facebook catalog feed is for the cases the channel does not cover: different titles for ads, a filtered product set, a second catalog, or a store that cannot pass Meta's onboarding. Here is the field mapping and how the catalog fetches the feed.

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

At a glance

  • The Facebook & Instagram by Meta channel uses one product catalog for Facebook Shop, Instagram Shopping and Facebook Marketing, and the business portfolio you pick must own the Facebook Page.
  • Meta's catalog needs id, title, description, availability, condition, price, link, image_link and one of brand, gtin or mpn; titles are capped at 200 characters but Meta recommends 65.
  • Textfinity pulls products from Shopify natively, maps them to the Meta template and publishes a feed URL that Commerce Manager fetches as a scheduled data feed; we set it up with you.
  • Scheduled feeds cannot update more often than once an hour; stock that changes faster belongs in the channel or the batch API.

Channel sync or catalog feed: which Shopify Facebook catalog integration

The channel is the right default for a store that sells inside Facebook and Instagram Shops. It keeps one catalog in sync, handles checkout and lets Meta own the onboarding; Shopify notes it has limited visibility into onboarding errors because Meta maintains the channel. Requirements include a business portfolio that owns the Page, staff with full control of that portfolio, a supported country and an account Meta considers trustworthy.

A feed is the right choice when the catalog that runs ads should differ from the store: ad-specific titles, a subset of products, a catalog per country or language, or extra fields such as fb_product_category and custom labels for product sets. You can run both, as long as each catalog has one source. The feed route also works for stores where the channel is blocked on a Page-ownership or eligibility problem, because a catalog fed by URL does not depend on the Shopify connection at all.

Shopify fields to Meta catalog fields

Shopify fieldMeta catalog fieldRule in Textfinity
SKU (variant)idRename; max 100 chars, must be unique or Meta ignores all copies
Title + Option valuestitleCombine; max 200 chars, aim for 65 so it is not cut
Description (HTML)descriptionRemove from regexp <[^>]+>; plain text, max 9,999 chars, no links
Inventory quantityavailabilityAdvanced: if calc{[variant_inventoryQuantity]} > 0 then "in stock" else "out of stock" (with a space, not an underscore)
(static)conditionAdd static value new
PricepriceAdd suffix " USD" (9.99 USD, no symbol)
Compare-at priceprice / sale_priceCompare-at becomes price and Shopify price becomes sale_price when a compare-at exists
URL handlelinkAdd prefix https://store.example/products/ ; must be on your domain
Variant image URL, else Product image URLimage_linkAdvanced fallback; JPEG or PNG, at least 500 x 500, up to 8 MB
Other image rowsadditional_image_linkCombine up to 50 URLs with a comma
VendorbrandRename; max 100 chars
BarcodesgtinRename; empty stays empty
Product iditem_group_idRename so variants group; max 100 chars
Google Shopping / Google Product Categorygoogle_product_categoryRename; or map fb_product_category instead
Option valuescolor, size, genderRename; gender is female, male or unisex

Meta field names and limits from the Meta commerce catalog fields reference; Shopify columns from the product CSV help page; both checked 2026-10-27.

What has to change between a Shopify export and a Meta catalog

  • Availability spelling: Google writes in_stock, Meta writes in stock with a space. A feed built for Google Shopping cannot be pasted into Meta without this one rule; the convert page linked below covers the full Google-to-Meta translation.
  • Title length: Meta allows 200 characters but recommends 65 so titles are not cut in placements. Build a short combine for Meta and keep the long one for Google.
  • Description: plain text, no links, no all-caps. Strip HTML and keep it under 9,999 characters.
  • Price and sale price: a currency code with a space, never a symbol. If sale_price is sent, it must be lower than price and pair with sale_price_effective_date when the promotion has dates.
  • Images: at least 500 x 500 pixels. Shopify thumbnails in older image rows fail this; use the full Product image URL.
  • Duplicate ids: if two rows share an id Meta drops both. Variant SKU, not product handle, is the safe id.

How the catalog ingests the feed

The catalog reads the feed as a scheduled data feed in Commerce Manager. It must be a product (e-commerce) catalog under the business portfolio; a generic catalog will not accept a product feed, so create the catalog as an e-commerce catalog in Commerce Manager first.

Meta accepts CSV, TSV, RSS XML and ATOM XML, fetches from a URL on the interval you set, and does not support scheduled uploads more often than once an hour. Textfinity publishes the feed on a stable URL and rebuilds it on the shop's sync schedule, and we add that URL to the catalog with you, through access to your business portfolio or on a short call. Diagnostics for rejected items live in Commerce Manager; Textfinity does not import them.

Examples

Worked examples, by situation

Three Shopify stores that needed something the channel sync does not do.

Fashion · Meta Advantage+ catalog ads · 1,900 variants

Short ad titles with the color first

Before

Title: Relaxed Linen Shirt
Product type: Linen Shirt
Options: Color Sand, Size M
Vendor: Marlow

After

title: Sand Linen Shirt by Marlow
item_group_id: 7812339
color: Sand
size: M

How we set it up

We map title as an advanced expression, [variant_color] + " " + [product_productType] + " by " + [product_vendor], built from the short product type rather than the store title (advanced expressions name Shopify fields with underscores), and rename color and size from the variant options. Keeps titles under Meta's recommended 65 characters.

Furniture · Meta catalog, Germany · 600 SKUs, English store copy

German catalog from an English Shopify store

Before

Title: Oak Dining Table 180 cm
Description: <p>Solid oak, oiled finish.</p>

After

title: Esstisch Eiche 180 cm massiv geölt, Holztisch für 6 bis 8 Personen, Massivholz-Esstisch mit natürlicher Maserung
description: Massiver Esstisch aus geölter Eiche, 180 cm … (500 to 1,000 characters)

How we set it up

We set up one AI config that enhances the title and a second for the description, both translated into German. Titles come out at 100 to 150 characters with the key facts in the first 70, which is roughly what Meta shows; descriptions at 500 to 1,000. Once the store accepts the generations in review, title and description use replace from AI config with the English values as fallback. The DE feed filters Shopify Markets to the DE market for price and link.

Supplements · Meta Shops and ads · 140 SKUs

Keep subscriptions and bundles out of the ads catalog

Filters and static fields

exclude if product.metafield.custom.channel_exclude is equal to "subscription"
exclude if product.productType is equal to "Bundle"
condition <- static "new"
availability <- if calc{[variant_inventoryQuantity]} > 0 then "in stock" else "out of stock"

How we set it up

We exclude with is equal to on a product metafield and the product type, because the Shopify connection does not import tags, set condition as a static value and availability as an advanced expression. The channel keeps the full catalog for Shops; this feed fills a second catalog used only by the ad account.

Copy this plan

Plan: Shopify to a Meta catalog in one sitting

Create the catalog in Commerce Manager first; the feed steps we set up in Textfinity for you.

  1. 01

    Create or pick the catalog in Commerce Manager

    Make a product catalog under your business portfolio before you connect anything. This step happens in Meta's interface.

  2. 02

    Connect the Shopify store

    Approve the feed tool's access to your store; it pulls products, variants, metafields, markets and locales, and a profile shows empty barcodes and over-length titles before mapping.

    What we set up: Once you approve Textfinity's access to your store, we pull the catalog and run feed hygiene on it.
  3. 03

    Start a Meta catalog feed

    The Meta template pre-fills the catalog field names. Map each from the table above.

    What we set up: We start the feed from the Meta Ads (Facebook + Instagram catalog) channel template and map it from the table above.
  4. 04

    Add the Meta-specific rules

    Spaces in availability, a 65-character title, plain-text description, currency suffix, static condition, item_group_id.

    What we set up: We map availability as an advanced expression, title as a combine, description with remove from regexp, price with add suffix and condition as a static value.
  5. 05

    Filter the ad set

    Exclude drafts, gift cards, subscriptions and zero stock if you do not want out-of-stock items in retargeting.

    What we set up: We add include filters: product.status is equal to ACTIVE; variant.inventoryQuantity is more than 0.
  6. 06

    Add the feed to the catalog

    Add the feed URL in Commerce Manager as a scheduled data feed with an hourly or daily interval. The scheduled-feed form is in Meta's interface.

    What we set up: We add the feed URL to your catalog as a scheduled data feed, with access to your business portfolio or on a short call.

Customization tips

Make it yours

One source per catalog

If the channel and a feed both write to the same catalog, items collide on id. Let the channel own the Shops catalog and give the ads catalog to the feed, or disconnect the channel's product sync and feed everything. Mixed sources are the usual cause of 'catalog not syncing' threads.

fb_product_category is optional when google_product_category is set

Meta accepts either. If you already maintain Google categories for Shopping, map that column and skip the Facebook taxonomy; add fb_product_category only for Shops features that require it in your country.

Use product sets, not extra feeds, for campaign splits

A custom_label_0 column computed with an advanced expression (margin band, season, bestseller flag) lets you build product sets in Commerce Manager from one feed. Extra feeds double the maintenance.

Mind the hourly floor

Scheduled feeds will not fetch more often than once per hour. Flash-sale stock that sells out in minutes should rely on the channel's sync or Meta's batch API; the feed is for the data, not the second-by-second count.

FAQ

Questions about shopify facebook catalog integration

Does Shopify sync products to Facebook automatically?

Yes, through the Facebook & Instagram by Meta channel, which keeps one product catalog for Facebook Shop, Instagram Shopping and Facebook Marketing. The business portfolio you select must own the Facebook Page, and Meta maintains the channel, so Shopify has limited visibility into onboarding errors.

Can I export Shopify products to a Facebook catalog as a CSV?

Yes. Meta accepts CSV, TSV, RSS XML and ATOM XML data feeds with id, title, description, availability, condition, price, link, image_link and brand, gtin or mpn. Textfinity builds that file from the live Shopify catalog and publishes it on a URL Commerce Manager fetches on a schedule.

What is the difference between a Meta catalog feed and a Google Shopping feed?

The fields overlap but the values differ: Meta writes in stock with a space, recommends 65-character titles, allows 9,999-character descriptions and 100-character ids, and accepts fb_product_category in place of google_product_category. A Google feed needs those four changes to become a Meta feed.

Can I run two catalogs from one Shopify store?

Yes. Keep the channel's catalog for Shops and build a second catalog from a Textfinity feed for ads, or one catalog per country. Each catalog needs its own source and its own feed.

Set up for you

We'll set up your Shopify catalog feed for Meta with the titles your ads need.

Send us your store URL. We set up the feed in Textfinity from the Meta template, add the five Meta-specific rules and add the feed URL to your catalog as a scheduled data feed with you.

Have us set up my Meta feedOr email support@textfinity.io

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