Destinations
Where Fabric can send a catalog, who approves each publish, 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 content that is already published on the web, so you publish to a destination they can read.
Available destinations
GET /v1/publishing/destinations returns this list, and it is the same for every organization.
| Destination | Kind | Output | Default delivery | Supports delta mode |
|---|---|---|---|---|
fabric_canonical | file | CSV | Download | No |
source_roundtrip | file | CSV | Download | No |
schema_org | file | JSON | Download | No |
google_feed | feed | CSV | Hosted file | Yes |
ucp_google | feed | CSV | Hosted file | Yes |
acp_stripe | feed | CSV | Stripe API | Yes |
shopify_api | storefront | JSONL | Shopify Admin API | Yes |
sfcc_xml | storefront | XML | SFTP | Yes |
fabric_canonical is your catalog in Fabric's own format. source_roundtrip returns it in the
format 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.
Approval and status by kind
| Kind | Needs an approver | Moves products to Published |
|---|---|---|
file | No | No |
feed | Yes | No |
storefront | Yes | Yes |
A file destination needs no approval, because it only returns a file to the caller and changes
nothing anywhere else. Approval is required where content reaches somewhere a shopper can see it.
A feed needs approval but does not move products to Published. The destination may not have
fetched the feed yet, and only a storefront confirms that the content arrived.
Who may approve
| Role | Can | Cannot |
|---|---|---|
member | Create and test connections, preview a mapping, start a dry run, download a file export | Approve a publish to a feed or storefront, activate a mapping version, cancel a running publish |
owner | Everything |
Only an owner can cancel, for the same reason: stopping an approved storefront write halfway leaves the store partly updated.
A dry run needs no approval. You run it to see the changes before you approve them.
An owner's approval covers every product in the run's scope, including products still in review. Ready to publish helps you choose the scope, but the run does not check it.
Connections
A connection links one destination to one brand and holds the credential Fabric uses to deliver.
- 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 can have two connections to one destination, such as two stores, or a staging bucket and a live one. If both are enabled, a run cannot tell which to use, so Fabric refuses the run instead of publishing to the one created last. Disable all but one, or archive the ones the run should not use.
- An archived connection can still be looked up, so past runs still show where they published.
Only an organization owner can create, test or archive a Google Merchant Center connection. The connection reserves the Merchant Center account so no other brand can use it, and a publish rewrites that account's data source rules.
Downloading rather than publishing
POST /v1/publishing/export builds a file destination's output and returns it in the same
request. The default cap is 5,000 products, and your organization or brand may have a different
cap. Above the cap the request returns too_large with both numbers.
Start a run instead: a run streams its output, can resume, and leaves a record. A direct download
does none of these.
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.
Related
- Publishing over the API: create a connection and run a publish.
- Connect Shopify: set up the Shopify storefront destination.