Skip to main content
com.trychannel3.catalog.global adds Channel3-specific fields on top of standard UCP catalog: store filters, seller details, URL lookup, and our id formats. It’s listed in the profile and works with search, lookup, and get_product. New here? Start with the overview or quickstart.

Request extensions

catalog.urls[] (lookup only)

lookup_catalog accepts store product page URLs in catalog.urls[], as well as product ids in catalog.ids[]:
Same behavior as POST /v1/lookup. If we can’t find the URL, you get messages[] with code: "not_found". Put page links in urls[], not ids[]. If a URL ends up in ids, we return use_catalog_urls.

catalog.filters

Extra filters on top of UCP categories and price. Filters combine with AND; multiple values in one field combine with OR. price.min and price.max are in cents (minor units). Example: 9995 means $99.95 USD.

catalog.context

The base spec defines context as buyer signals. We honor:

catalog.placements (opt-in)

Set catalog.placements: ["affiliate"] to have variants carry a placement object with the commission earned on a converted sale. Requires a Token-tier API key — anonymous callers (no key or invalid key) never receive commission data. Omit the field (or pass []) and responses are unchanged.

Response extensions

products[]

Standard UCP product fields, plus Channel3 metadata. Buy and store links live on variants[] only (same as Shopify — products[].url is omitted).

options and selected (get_product)

Standard UCP fields for variant selection (color, size, etc.). Returned on get_product only — not on search or lookup. See Get product for catalog.selected and catalog.preferences.

products[]

A UCP products[] entry is a Channel3 product (one product across all stores). Per-store listings are in variants[] — when several stores sell the same product, each store’s offer is its own entry in variants[], so multiple offers for one product are multiple variants, not a nested list:

variants[] (per-store listings)

Each variant is one store’s listing of the product:

Commissions / placements

Placements are in preview and mirror Shopify’s catalog placement shape, so agents that already read commissions from a Shopify catalog read Channel3’s identically. Fields may change.
When you opt in with catalog.placements: ["affiliate"] on a Token-tier key, monetizable variants carry a placement:
  • Absent ≠ zero. A variant without placement has no disclosed commission (offer not monetizable, or you didn’t opt in) — don’t treat a missing placement as 0%.
  • Commission is the vendor’s net share after Channel3’s cut. Actual payout depends on the merchant program and locale; treat the value as an estimate.

Product ids

We use two id formats:
  • Product id (e.g. HvGOfxD) - one product across all stores
  • Variant id (e.g. HvGOfxD:lGBj:01KJ38CXYZ9CJ8K2Y9HDYQ8DXT) - one store’s listing: product:store:sku
Both work in catalog.ids[] and get_product. https://buy.trychannel3.com/... links also work in ids.

Messages

messages[] entries we emit:

Versioning

Current version: 2026-04-08 (see the profile).