Fabric documentation

Destinations

Everywhere Fabric can send a catalog, what each kind decides, and the download cap.

A destination is somewhere Fabric sends enriched catalog content: a storefront, a product feed, or a file. Every destination has a kind, and the kind decides who has to approve a publish and whether it changes the state of your products.

Note

Fabric does not publish to ChatGPT, Perplexity or Gemini. Those AI channels read what is already published on the web, so a destination is how your content gets somewhere they can reach it.

The catalog

GET /v1/publishing/destinations returns this list, and it is the same for every organization.

DestinationKindOutputDefault deliverySupports delta mode
fabric_canonicalfileCSVDownloadNo
source_roundtripfileCSVDownloadNo
schema_orgfileJSONDownloadNo
google_feedfeedCSVHosted fileYes
ucp_googlefeedCSVHosted fileYes
acp_stripefeedCSVStripe APIYes
shopify_apistorefrontJSONLShopify Admin APIYes
sfcc_xmlstorefrontXMLSFTPYes

fabric_canonical is your catalog in Fabric's own shape; source_roundtrip hands back the shape of the file you imported. schema_org is the structured data as JSON-LD documents.

google_feed and ucp_google add Fabric's content to products already in your Google Merchant Center account — Fabric never creates products there, so an offer with no match is skipped. ucp_google is the same feed plus the attributes a shopping agent reads under the Universal Commerce Protocol.

What a kind decides

KindNeeds an approverMoves products to Published
fileNoNo
feedYesNo
storefrontYesYes

A file destination needs no approver because it hands bytes back to whoever asked and changes nothing anywhere — there is nothing yet to approve. The gate belongs where content reaches somewhere a shopper can see it.

A feed does not move products to Published even though it needs approval: the destination may not have fetched the document yet, so only a storefront's own confirmation is proof the content landed.

Who may approve

RoleCanCannot
memberCreate and test connections, preview a mapping, start a dry run, download a file exportApprove a publish to a feed or storefront, activate a mapping version, cancel a running publish
ownerEverything—

Cancelling is an owner's decision for the same reason approving is. Stopping an approved storefront write half-way leaves the store partly updated.

A dry run is exempt from approval. Seeing what would change is what happens before you approve, so requiring approval to look would make the preview useless.

An owner's approval covers every product in the run's scope, including products still in review. The approval is the decision; Ready to publish is how you choose a scope, not a gate the run enforces.

Connections

A connection is one destination for one brand, holding the credential Fabric delivers through.

  • The credential is encrypted before storage and is never returned. Only its last four characters are readable afterwards, which is enough to tell two keys apart.
  • A connection is disabled until a test succeeds, so a destination Fabric has never reached cannot be selected for a publish.
  • A brand may hold two connections to one destination — two stores, or a staging bucket and a live one. Two of them enabled leaves a run no way to say which, so Fabric refuses rather than publishing to whichever was created last. Disable all but one, or archive the ones the run should not use.
  • Archiving a connection keeps it resolvable, so past runs still name what they published to.

Only an organization owner may create, test or archive a Google Merchant Center connection: a connection there reserves the account against every other brand, and a publish rewrites that account's data source rules.

Downloading rather than publishing

POST /v1/publishing/export builds a file destination and returns the bytes in the same request. It is capped at 5,000 products by default, and the cap set for your organization or brand may differ. Above it the request answers too_large with both numbers, and you start a run instead — a run streams, resumes and leaves a record, which a direct download does none of.

A feed or storefront destination is refused here at any size. Those need an approver and an audit trail, and a synchronous download can record neither.