Products enter and leave a sales channel only through the publication controls on the product form or product-list bulk actions. Apps do not maintain a second inclusion list. An installed channel app uses this API to reconcile the complete current publication set and to report whether each exact publication version synced successfully or needs merchant action.
Each product/channel relation has a stable publication id and monotonic version. Publication webhook deliveries are app-scoped and carry the same identity and version, making retries and out-of-order delivery deterministic. The paginated list is the authoritative recovery path after downtime or a missed delivery.
Feedback never changes product publication. synced confirms processing; action_required and rejected require a stable uppercase code and merchant-facing message. Feedback for an unpublished product, another app's channel, or an outdated version is rejected.
Endpoints#
List channel publications
Reconcile products currently published to this app's sales channel.
Publication is controlled only from Tringify product publishing. This app-scoped list is the authoritative full reconciliation set. Each row has a stable publication id and monotonic version for retry and ordering safety.
Query parameters
| Name | Type | Description |
|---|---|---|
after
|
integer |
Products after this product id, in product id order. Send the last product_id of a page to get the next page; it stays fast however deep you page. Do not combine with before or page. |
before
|
integer |
Products before this product id, still returned in product id order. Send the first product_id of a page to get the previous page. |
page
|
integer |
Page number when neither after nor before is sent; default 1. Prefer after to walk the whole list. |
limit
|
integer |
Page size from 1 to 200; default 50. |
search
|
string |
Only products whose title, SKU or a variant's SKU contains this text, ignoring case. |
product_ids
|
string |
Only these products: up to 200 comma-separated product ids, for showing a known set with their images and statuses. |
category_id
|
integer |
Only products in this category. |
collection_id
|
string |
Only products in this collection (its id). |
tag_id
|
integer |
Only products with this product tag. |
vendor_id
|
integer |
Only products from this vendor. |
brand_id
|
integer |
Only products of this brand. Filters combine with each other, with search and with status; status_counts counts within them. |
status
|
string |
Only products in this status: synced, action_required, rejected, or pending (no feedback reported yet). total then counts that status; status_counts always counts every status for the search, so you can show each choice's number. |
Headers
| Name | Type | Description |
|---|---|---|
Authorization
required
|
string |
Bearer Store API token. |
Errors
-
401UNAUTHORIZEDMissing or invalid token.
-
403CHANNEL_PUBLICATION_APP_TOKEN_REQUIREDThe caller is not an installed app token.
-
404CHANNEL_PUBLICATION_INSTALLATION_MISSINGThe app has no ready sales-channel installation in this store.
Set publication feedback
Report processing state for an exact publication version.
Feedback is accepted only while the product remains published to the calling app's channel and the publication id and version still match. Use synced for success, or action_required/rejected with an uppercase code and merchant-facing message.
Path parameters
| Name | Type | Description |
|---|---|---|
productId
required
|
integer |
Published Tringify product id. |
Headers
| Name | Type | Description |
|---|---|---|
Authorization
required
|
string |
Bearer Store API token. |
Body parameters
| Name | Type | Description |
|---|---|---|
publication_id
required
|
uuid |
Stable publication id from the reconciliation list or event. |
version
required
|
integer |
Exact publication version being processed. |
status
required
|
string |
synced, action_required, or rejected. |
code
|
string |
Required for action_required and rejected; uppercase machine code. |
message
|
string |
Required merchant-facing explanation for action_required and rejected. |
details
|
object |
Optional structured app-owned diagnostics. |
Errors
-
401UNAUTHORIZEDMissing or invalid token.
-
403CHANNEL_PUBLICATION_APP_TOKEN_REQUIREDThe caller is not an installed app token.
-
404CHANNEL_PUBLICATION_INSTALLATION_MISSINGThe app has no ready sales-channel installation in this store.
-
404CHANNEL_PUBLICATION_MISSINGThe product is not currently published to this app's channel.
-
409CHANNEL_PUBLICATION_VERSION_STALEThe feedback targets an outdated publication version.
Set publication feedback in bulk
Report processing state for up to 500 products in one request.
Each item follows the same rules as Set publication feedback and carries its product_id. The request counts as one call against the rate limit, so report many products this way rather than one call each. Items are checked independently: one that is invalid, not published to this app's channel, or for an outdated version is refused with its code and message while the others are recorded. Check each result's updated flag even when the HTTP status is 200. A product may appear only once per request.
Headers
| Name | Type | Description |
|---|---|---|
Authorization
required
|
string |
Bearer Store API token. |
Body parameters
| Name | Type | Description |
|---|---|---|
items
required
|
array<object> |
1 to 500 reports: product_id, publication_id, version, status, and code and message for action_required or rejected, optional details. |
Errors
-
401UNAUTHORIZEDMissing or invalid token.
-
403CHANNEL_PUBLICATION_APP_TOKEN_REQUIREDThe caller is not an installed app token.
-
404CHANNEL_PUBLICATION_INSTALLATION_MISSINGThe app has no ready sales-channel installation in this store.
-
400CHANNEL_PUBLICATION_FEEDBACK_TOO_MANYMore than 500 items were sent.