Connect your catalog

CSV/JSON merchant feeds in Files — id, title, image, optional price and custom labels — then POST /campaigns/engage.

Last updated August 12, 2026

Platform Catalog Video starts from a file already in Files (feedFileId), not from a live Shopify or Merchant Center connection.

What to upload

A CSV (header row) or JSON array of products. Headers are mapped with Merchant-Center aliases (sku → id, image_link → image, product name → title, …).

Required per row:

  • id — unique SKU within the feed
  • title
  • an imageimage_link (https URL fetched at engage) or image_file_id (library file; wins when both are set)

Optional: description, price (verbatim string, never arithmetic), custom_label_0custom_label_4.

What happens at engage

POST /campaigns/engage (or MCP engage_campaign):

  1. Loads the file from your org library.
  2. Canonicalizes + validates rows (duplicate ids, missing title/image → 422 rowErrors, no credit movement).
  3. Optionally filters to rowIds.
  4. Projects variant count (rows × formatIds). Over 24campaign_variant_cap_exceeded before image ingest.
  5. Fetches/ingests row images into Files, then stamps the FanOut graph.

There is no visual shop-URL picker, no remembered column-mapping UI, and no scheduled re-scrape on this path. Re-upload a feed and engage again when products change. See Sync.

POST /research/site can scrape a shop into a brand brief + stills. That is site acquisition, not a catalog feed. To run DCO you still produce a CSV/JSON and pass feedFileId.