Collections require product scopes. Reads use read_products; writes use write_products. Collections support name, slug, description, seo_title, seo_description, image_id, template_handle, match_type, is_active, and rule fields. slug is optional on create and generated from the name when omitted; on update, a supplied slug must be non-empty and valid. Rules can match tag, category, vendor, brand, or product title. Assigning a non-empty image_id also requires read_files for the referenced upload image. On create, omitting template_handle assigns default_collection. Use default_collection for the default Collection template, or pass an alternate Collection template handle configured for the store. Omit template_handle on update to leave the current assignment unchanged; an empty string is invalid. Matching products are added in the background after a create or a change to the rules or match_type: the response returns at once with materializing: true, and until materializing is false, product_count and the collection's products are the last materialized result. materialized_at is when the products were last brought up to date; it is null until the first materialization. AI translation is not exposed through the Store API.
Endpoints#
Collection limits
Fetch Collection limits and per-field constraints.
Returns the per-field maximum lengths, list limits, rule limits, and request caps that apply to Collection endpoints. Fetch this contract instead of hard-coding limits or rule operators. max_per_store is this store's plan cap, count is how many exist now, and usage is the localized label.
Headers
| Name | Type | Description |
|---|---|---|
Authorization
required
|
string |
Bearer Store API token. |
List collections
List collections for the store.
Returns paginated collections. total counts matching results; store_total counts all collections in the store. Pass returned cursors unchanged and reset pagination when filters or sorting change. storefront_url is the canonical absolute URL on the store's primary domain. storefront_path is the domain-independent baseline route; join it to the storefront address you are targeting. Hosted storefront responses apply translated slugs and locale/country prefixes.
Query parameters
| Name | Type | Description |
|---|---|---|
cursor
|
string |
Opaque cursor from a previous |
limit
|
integer |
Page size. |
search
|
string |
Search collections by name or slug. |
status
|
string |
Filter by active or inactive. |
sort_by
|
string |
Sort field from the Collection list contract.
Allowed values
nameproduct_countcreated_atupdated_at |
sort_direction
|
string |
Sort direction from the Collection list contract.
Allowed values
ascdesc |
Headers
| Name | Type | Description |
|---|---|---|
Authorization
required
|
string |
Bearer Store API token. |
Errors
-
400COLLECTION_LIST_INVALID_LIMITLimit is outside the Collection list range.
-
400INVALID_INPUTCursor is malformed or does not match the current search, status, or sorting state.
-
400COLLECTION_SEARCH_TOO_LONGSearch exceeds the contract maximum length.
-
400COLLECTION_LIST_INVALID_STATUSStatus is not active or inactive.
-
400COLLECTION_LIST_INVALID_SORT_BYSort_by is not a sortable Collection field.
-
400COLLECTION_LIST_INVALID_SORT_DIRECTIONSort_direction is not asc or desc.
Search collections
Search collections for picker-style suggestions.
Returns lightweight collection suggestions by query. This endpoint is intended for pickers and simple selection UIs.
Query parameters
| Name | Type | Description |
|---|---|---|
q
|
string |
Search query. |
limit
|
integer |
Suggestion count. |
offset
|
integer |
Number of suggestions to skip. |
Headers
| Name | Type | Description |
|---|---|---|
Authorization
required
|
string |
Bearer Store API token. |
Errors
-
400COLLECTION_LIST_INVALID_LIMITLimit is outside the Collection search range.
-
400COLLECTION_SEARCH_TOO_LONGQ exceeds the contract maximum length.
-
400INVALID_INPUTOffset must be zero or greater.
Get a collection
Fetch one collection by id.
Returns the collection if it belongs to the token's store. storefront_url is the canonical absolute URL on the store's primary domain. storefront_path is the domain-independent baseline route; join it to the storefront address you are targeting. Hosted storefront responses apply translated slugs and locale/country prefixes.
Path parameters
| Name | Type | Description |
|---|---|---|
id
required
|
uuid |
Collection id. |
Headers
| Name | Type | Description |
|---|---|---|
Authorization
required
|
string |
Bearer Store API token. |
Errors
-
400STORE_API_INVALID_COLLECTION_IDCollection id is not a valid UUID.
-
404COLLECTION_NOT_FOUNDCollection does not exist in this store.
List collection metafields
List a collection's custom-data values visible to the calling app.
Returns a paginated list. Definitions are filtered through the calling app's access rules; private app-owned definitions are visible only to their owner. Values are addressed by namespace and key.
Path parameters
| Name | Type | Description |
|---|---|---|
id
required
|
uuid |
Collection id. |
Query parameters
| Name | Type | Description |
|---|---|---|
page
|
integer |
Page number (default 1). |
limit
|
integer |
Page size; capped by the metafield list limit. |
Headers
| Name | Type | Description |
|---|---|---|
Authorization
required
|
string |
Bearer Store API token. |
Errors
-
400STORE_API_INVALID_COLLECTION_IDCollection id is not a valid UUID.
-
404COLLECTION_NOT_FOUNDCollection does not exist in this store.
Set collection metafields
Create, update, or delete collection custom-data values.
Send namespace-and-key entries. A string value creates or replaces a value; null or an empty string deletes it. Definition access, type, constraint, reference, translation-staleness, search-index, audit, and webhook rules are applied in the same transaction.
Path parameters
| Name | Type | Description |
|---|---|---|
id
required
|
uuid |
Collection id. |
Headers
| Name | Type | Description |
|---|---|---|
Authorization
required
|
string |
Bearer Store API token. |
Body parameters
| Name | Type | Description |
|---|---|---|
metafields
required
|
array<object> |
Entries shaped as |
Errors
-
400STORE_API_INVALID_COLLECTION_IDCollection id is not a valid UUID.
-
404COLLECTION_NOT_FOUNDCollection does not exist in this store.
-
404METAFIELD_DEFINITION_NOT_FOUNDThe namespace and key do not identify an accessible Collection definition.
-
400METAFIELD_VALUE_TOO_LONGThe value exceeds its size limit: the definition's max_value_length, or the platform value size limit for the type.
-
400METAFIELD_VALUE_STRING_TOO_LONGA string value exceeds the definition's max_value_length or the platform string limit.
-
400METAFIELD_VALUE_TOO_SHORTA string value is shorter than the definition's min_length rule.
-
400METAFIELD_VALUE_PATTERN_MISMATCHA string value does not match the definition's pattern rule.
-
400METAFIELD_VALUE_INTEGER_INVALIDAn integer value is not a whole number in the 64-bit range.
-
400METAFIELD_VALUE_INTEGER_TOO_LONGAn integer value has more digits than the definition or the platform integer limit allows.
-
400METAFIELD_VALUE_DECIMAL_INVALIDA decimal value is not a finite decimal number.
-
400METAFIELD_VALUE_DECIMAL_TOO_LONGA decimal value, written out in full, is longer than the definition or the platform decimal limit allows.
-
400METAFIELD_VALUE_BELOW_MINAn integer or decimal value is below the definition's min rule.
-
400METAFIELD_VALUE_ABOVE_MAXAn integer or decimal value is above the definition's max rule.
-
400METAFIELD_VALUE_BOOLEAN_INVALIDA boolean value is not true or false.
-
400METAFIELD_VALUE_DATE_INVALIDA date value is not a calendar date in YYYY-MM-DD form.
-
400METAFIELD_VALUE_DATETIME_INVALIDA datetime value is not YYYY-MM-DDTHH:mm, YYYY-MM-DDTHH:mm:ss or an RFC 3339 timestamp.
-
400METAFIELD_VALUE_JSON_INVALIDA json value is not valid JSON.
-
400METAFIELD_VALUE_JSON_UNSAFE_LINKA json value contains a link whose scheme is not http, https, mailto or tel.
-
400METAFIELD_VALUE_URL_INVALIDA url value, or an item of a list.url value, is not an absolute URL with a host.
-
400METAFIELD_VALUE_URL_SCHEMEA url value, or an item of a list.url value, does not use http or https.
-
400METAFIELD_VALUE_URL_TOO_LONGA url value, or an item of a list.url value, exceeds the definition's max_value_length or the platform URL limit.
-
400METAFIELD_VALUE_NOT_IN_CHOICESA single_select value is not one of the definition's choice keys.
-
400METAFIELD_LIST_CHOICE_INVALIDAn item of a list.single_select value is not one of the definition's choice keys; the message names the item.
-
400METAFIELD_LIST_STRINGS_INVALIDA list.string or list.single_select value is not a JSON array of strings.
-
400METAFIELD_LIST_URLS_INVALIDA list.url value is not a JSON array of strings.
-
400METAFIELD_LIST_FILES_INVALIDA list.file_reference value is not a JSON array of strings.
-
400METAFIELD_LIST_IDS_INVALIDA list.product_reference or list.variant_reference value is not a JSON array of integers.
-
400METAFIELD_LIST_EMPTYA list value other than list.string is an empty array. Send null or an empty string to remove the value instead.
-
400METAFIELD_LIST_TOO_MANYA list value has more items than the definition's max_list_items or the platform list limit for the type.
-
400METAFIELD_LIST_ITEM_EMPTYAn item of a list.string value is empty or only whitespace; the message names the item.
-
400METAFIELD_LIST_ITEM_TOO_LONGAn item of a list.string value exceeds the definition's max_value_length or the platform string limit; the message names the item.
-
400METAFIELD_VALUE_FILE_UUID_INVALIDA file_reference value, or an item of a list.file_reference value, is not a file UUID.
-
400METAFIELD_VALUE_ID_INVALIDA product_reference or variant_reference value is not an integer ID.
-
400METAFIELD_VALUE_ID_POSITIVEA product_reference or variant_reference value is not a positive integer.
-
400METAFIELD_VALUE_ID_TOO_LONGA product_reference or variant_reference value exceeds the platform reference ID limit.
-
400METAFIELD_LIST_ITEMS_POSITIVEAn item of a list.product_reference or list.variant_reference value is not a positive integer.
-
400METAFIELD_REFERENCE_PRODUCT_MISSINGA product reference names a product that does not exist in this store.
-
400METAFIELD_REFERENCE_VARIANT_MISSINGA variant reference names a variant that does not exist in this store.
-
404NOT_FOUNDA file reference names a file that does not exist in this store.
-
400INVALID_INPUTA file reference names a file that is not an uploaded file.
Create a collection
Create a collection.
Creates a collection. name is required. Omitted is_active defaults to true; send false explicitly to create an inactive collection. Optional text fields, image assignment, template assignment, match type, and rules follow the Collection resource contract. If image_id is non-empty, it must point to an upload image in the same store and the token must also have read_files. storefront_url is the canonical absolute URL on the store's primary domain. storefront_path is the domain-independent baseline route; join it to the storefront address you are targeting. Hosted storefront responses apply translated slugs and locale/country prefixes.
Headers
| Name | Type | Description |
|---|---|---|
Authorization
required
|
string |
Bearer Store API token. |
Body parameters
| Name | Type | Description |
|---|---|---|
name
required
|
string |
Collection name. |
slug
|
string |
Optional slug. Omit to generate from name. |
description
|
string |
Optional plain-text description. |
seo_title
|
string |
Optional SEO title. |
seo_description
|
string |
Optional SEO description. |
image_id
|
string |
Optional Media-library upload image UUID. Non-empty values require |
template_handle
|
string |
Template assignment. On create, omitting this field or sending an empty string assigns |
match_type
|
string |
|
is_active
|
boolean |
Whether the collection is visible on the storefront. Defaults to true when omitted during creation. |
rules
|
array<object> |
Automatic collection rules. Each rule has field, operator, optional value, and include_subcategories. |
Errors
-
400STORE_API_INVALID_REQUEST_BODYRequest body is invalid or contains an unknown field.
-
400STORE_API_CREATE_REDIRECT_UNSUPPORTEDCreate_redirect is only supported when updating a collection.
-
400COLLECTION_NAME_REQUIREDName is empty after normalization.
-
400COLLECTION_NAME_TOO_LONGName exceeds the Collection contract max length.
-
400COLLECTION_NAME_INVALID_CHARSName contains unsupported control characters.
-
400COLLECTION_DESCRIPTION_TOO_LONGDescription exceeds the Collection contract max length.
-
400COLLECTION_SEO_TITLE_TOO_LONGSEO title exceeds the Collection contract max length.
-
400COLLECTION_SEO_DESCRIPTION_TOO_LONGSEO description exceeds the Collection contract max length.
-
400COLLECTION_SLUG_REQUIREDA provided update slug is empty after normalization.
-
400COLLECTION_SLUG_TOO_LONGSlug exceeds the Collection contract max length.
-
400COLLECTION_SLUG_INVALID_FORMATSlug is not valid for Collection URLs.
-
400COLLECTION_SLUG_GENERATION_FAILEDA slug could not be generated from the supplied name.
-
400COLLECTION_MATCH_TYPE_INVALIDMatch type is not valid.
-
400COLLECTION_RULES_LIMIT_REACHEDRule count exceeds the Collection rule cap.
-
400COLLECTION_LIMIT_REACHEDStore collection cap has been reached.
-
400TEMPLATE_HANDLE_INVALIDTemplate handle is not valid for Collection templates.
-
400TEMPLATE_HANDLE_NOT_FOUNDTemplate handle does not exist on the store's primary active theme for Collection.
-
403STORE_ADMIN_TOKEN_RUNTIME_FORBIDDENA non-empty image_id requires read_files scope in addition to write_products.
-
400INVALID_INPUTImage_id is malformed, is not an image, or is not a Media-library upload.
-
404NOT_FOUNDImage_id does not reference a file in this store.
-
404COLLECTION_NOT_FOUNDCollection does not exist in this store.
-
409COLLECTION_SLUG_DUPLICATESlug already exists in this store.
-
400COLLECTION_PLAN_LIMIT_REACHEDThis store is at its plan collection cap.
Update a collection
Update a collection.
Updates provided Collection fields. Omitted fields are left unchanged. Sending an empty image_id clears the image; sending a non-empty image_id requires read_files and the referenced file must be an upload image in the same store. Sending create_redirect can create a slug redirect when the slug changes. storefront_url is the canonical absolute URL on the store's primary domain. storefront_path is the domain-independent baseline route; join it to the storefront address you are targeting. Hosted storefront responses apply translated slugs and locale/country prefixes.
Path parameters
| Name | Type | Description |
|---|---|---|
id
required
|
uuid |
Collection id. |
Headers
| Name | Type | Description |
|---|---|---|
Authorization
required
|
string |
Bearer Store API token. |
Body parameters
| Name | Type | Description |
|---|---|---|
name
|
string |
Collection name. |
slug
|
string |
New slug. Omit to leave the current slug unchanged; an empty value is invalid. |
description
|
string |
Optional plain-text description. |
seo_title
|
string |
Optional SEO title. |
seo_description
|
string |
Optional SEO description. |
image_id
|
string |
Optional Media-library upload image UUID. Non-empty values require |
template_handle
|
string |
Template assignment. On create, omitting this field or sending an empty string assigns |
match_type
|
string |
|
is_active
|
boolean |
Whether the collection is visible on the storefront. Defaults to true when omitted during creation. |
rules
|
array<object> |
Automatic collection rules. Each rule has field, operator, optional value, and include_subcategories. |
create_redirect
|
boolean |
When slug changes, create a redirect from the previous slug. |
Errors
-
409COLLECTION_CHANGED_DURING_EDITThe collection changed since this edit began. Read it again before saving.
-
400STORE_API_INVALID_COLLECTION_IDCollection id is not a valid UUID.
-
400STORE_API_INVALID_REQUEST_BODYRequest body is invalid or contains an unknown field.
-
400TRANSLATION_SOURCE_FIELD_HAS_TRANSLATIONSClearing a source field is blocked while translated values exist.
-
400COLLECTION_NAME_REQUIREDName is empty after normalization.
-
400COLLECTION_NAME_TOO_LONGName exceeds the Collection contract max length.
-
400COLLECTION_NAME_INVALID_CHARSName contains unsupported control characters.
-
400COLLECTION_DESCRIPTION_TOO_LONGDescription exceeds the Collection contract max length.
-
400COLLECTION_SEO_TITLE_TOO_LONGSEO title exceeds the Collection contract max length.
-
400COLLECTION_SEO_DESCRIPTION_TOO_LONGSEO description exceeds the Collection contract max length.
-
400COLLECTION_SLUG_REQUIREDA provided update slug is empty after normalization.
-
400COLLECTION_SLUG_TOO_LONGSlug exceeds the Collection contract max length.
-
400COLLECTION_SLUG_INVALID_FORMATSlug is not valid for Collection URLs.
-
400COLLECTION_SLUG_GENERATION_FAILEDA slug could not be generated from the supplied name.
-
400COLLECTION_MATCH_TYPE_INVALIDMatch type is not valid.
-
400COLLECTION_RULES_LIMIT_REACHEDRule count exceeds the Collection rule cap.
-
400COLLECTION_LIMIT_REACHEDStore collection cap has been reached.
-
400TEMPLATE_HANDLE_INVALIDTemplate handle is not valid for Collection templates.
-
400TEMPLATE_HANDLE_NOT_FOUNDTemplate handle does not exist on the store's primary active theme for Collection.
-
403STORE_ADMIN_TOKEN_RUNTIME_FORBIDDENA non-empty image_id requires read_files scope in addition to write_products.
-
400INVALID_INPUTImage_id is malformed, is not an image, or is not a Media-library upload.
-
404NOT_FOUNDImage_id does not reference a file in this store.
-
404COLLECTION_NOT_FOUNDCollection does not exist in this store.
-
409COLLECTION_SLUG_DUPLICATESlug already exists in this store.
Delete a collection
Delete a collection.
Deletes a collection. If catalog links, discount targeting, menu items, or other dependent records require confirmation, retry with the returned confirmation token.
Path parameters
| Name | Type | Description |
|---|---|---|
id
required
|
uuid |
Collection id. |
Headers
| Name | Type | Description |
|---|---|---|
Authorization
required
|
string |
Bearer Store API token. |
Body parameters
| Name | Type | Description |
|---|---|---|
confirmed
|
boolean |
On a confirmation retry, set this to true and send the returned confirmation_token. Omit it on the first request. |
confirmation_token
|
string |
Token from the CONFIRMATION_REQUIRED response. Omit it on the first request and resend the exact same id selection when using it. |
Errors
-
400STORE_API_INVALID_COLLECTION_IDCollection id is not a valid UUID.
-
400STORE_API_INVALID_REQUEST_BODYRequest body is not valid JSON.
-
400COLLECTION_CONFIRMATION_INVALIDConfirmation token is missing, expired, or mismatched.
-
404COLLECTION_NOT_FOUNDCollection does not exist in this store.
-
409CONFIRMATION_REQUIREDDelete requires confirmation because dependent records will be changed.
Bulk delete collections
Delete multiple collections.
Send collection UUIDs in collection_ids. If discount targeting or menu items will be changed, the API returns CONFIRMATION_REQUIRED; retry the exact same ids with confirmed: true and its confirmation_token. A dependency-free selection deletes immediately. This operation is all-or-nothing: every requested collection must still exist and pass validation at commit time. A successful response returns the number deleted.
Headers
| Name | Type | Description |
|---|---|---|
Authorization
required
|
string |
Bearer Store API token. |
Body parameters
| Name | Type | Description |
|---|---|---|
collection_ids
required
|
array<string> |
Collection UUIDs to delete. |
confirmed
|
boolean |
On a confirmation retry, set this to true and send the returned confirmation_token. Omit it on the first request. |
confirmation_token
|
string |
Token from the CONFIRMATION_REQUIRED response. Omit it on the first request and resend the exact same id selection when using it. |
Errors
-
400STORE_API_INVALID_REQUEST_BODYRequest body is not valid JSON.
-
409COLLECTION_BULK_RACEDDelete impact changed during the transaction; retry with fresh data.
-
400STORE_API_INVALID_COLLECTION_IDCollection id is not a valid UUID.
-
400STORE_API_INVALID_REQUEST_BODYRequest body is not valid JSON.
-
400COLLECTION_CONFIRMATION_INVALIDConfirmation token is missing, expired, or mismatched.
-
404COLLECTION_NOT_FOUNDCollection does not exist in this store.
-
409CONFIRMATION_REQUIREDDelete requires confirmation because dependent records will be changed.
Bulk activate collections
Activate or deactivate multiple collections.
Updates storefront visibility for multiple collections.
Headers
| Name | Type | Description |
|---|---|---|
Authorization
required
|
string |
Bearer Store API token. |
Body parameters
| Name | Type | Description |
|---|---|---|
collection_ids
required
|
array<string> |
Collection UUIDs to update. |
is_active
required
|
boolean |
Target storefront visibility. |
Errors
-
400STORE_API_INVALID_REQUEST_BODYRequest body is not valid JSON.
-
400COLLECTION_BULK_UPDATE_TOO_MANYBatch exceeds the Collection bulk update cap.
-
404COLLECTION_NOT_FOUNDCollection does not exist in this store.
List collection products
List product ids matched by a collection.
Returns cursor-paginated ids of products currently in this collection. Pass returned cursors unchanged and reset pagination when search or page size changes.
Path parameters
| Name | Type | Description |
|---|---|---|
id
required
|
uuid |
Collection id. |
Query parameters
| Name | Type | Description |
|---|---|---|
cursor
|
string |
Opaque cursor from this collection's previous response. Omit for the first page; reset when search or page size changes. |
limit
|
integer |
Page size. |
Headers
| Name | Type | Description |
|---|---|---|
Authorization
required
|
string |
Bearer Store API token. |
Errors
-
400STORE_API_INVALID_COLLECTION_IDCollection id is not a valid UUID.
-
404COLLECTION_NOT_FOUNDCollection does not exist in this store.
List collection product details
List display-ready products matched by a collection.
Returns cursor-paginated product rows from the materialized collection, including title, slug, SKU, type, and image URL. Pass returned cursors unchanged; reset when search or page size changes. Use search to filter by product title or SKU.
Path parameters
| Name | Type | Description |
|---|---|---|
id
required
|
uuid |
Collection id. |
Query parameters
| Name | Type | Description |
|---|---|---|
cursor
|
string |
Opaque cursor from this collection's previous response. Omit for the first page; reset when search or page size changes. |
limit
|
integer |
Page size. |
search
|
string |
Filter products by title or SKU. |
Headers
| Name | Type | Description |
|---|---|---|
Authorization
required
|
string |
Bearer Store API token. |
Errors
-
400STORE_API_INVALID_COLLECTION_IDCollection id is not a valid UUID.
-
404COLLECTION_NOT_FOUNDCollection does not exist in this store.
List collection rules
List rules for a collection.
Returns automatic matching rules for this collection.
Path parameters
| Name | Type | Description |
|---|---|---|
id
required
|
uuid |
Collection id. |
Headers
| Name | Type | Description |
|---|---|---|
Authorization
required
|
string |
Bearer Store API token. |
Errors
-
400STORE_API_INVALID_COLLECTION_IDCollection id is not a valid UUID.
-
404COLLECTION_NOT_FOUNDCollection does not exist in this store.
Add collection rule
Add a rule to a collection.
Adds one automatic matching rule, then updates which products the collection includes.
Path parameters
| Name | Type | Description |
|---|---|---|
id
required
|
uuid |
Collection id. |
Headers
| Name | Type | Description |
|---|---|---|
Authorization
required
|
string |
Bearer Store API token. |
Body parameters
| Name | Type | Description |
|---|---|---|
field
required
|
string |
Rule field: tag, category, vendor, brand, or title. |
operator
required
|
string |
Rule operator allowed for the field. |
value
|
string |
Rule value. Required for value-bearing operators. |
include_subcategories
|
boolean |
Only valid for category rules. |
Errors
-
400STORE_API_INVALID_COLLECTION_IDCollection id is not a valid UUID.
-
400STORE_API_INVALID_REQUEST_BODYRequest body is not valid JSON.
-
400COLLECTION_RULES_LIMIT_REACHEDRule count exceeds the Collection rule cap.
-
400COLLECTION_RULE_FIELD_INVALIDRule field is not valid.
-
400COLLECTION_RULE_OPERATOR_INVALIDRule operator is not valid for the selected field.
-
400COLLECTION_RULE_VALUE_REQUIREDThis rule operator requires a value.
-
400COLLECTION_RULE_SUBCATEGORIES_NOT_ALLOWEDInclude_subcategories is only valid for category rules.
-
400COLLECTION_RULE_TAG_ID_INVALIDTag value is not a valid integer id.
-
400COLLECTION_RULE_CATEGORY_ID_INVALIDCategory value is not a valid integer id.
-
400COLLECTION_RULE_VENDOR_ID_INVALIDVendor value is not a valid integer id.
-
400COLLECTION_RULE_BRAND_ID_INVALIDBrand value is not a valid integer id.
-
400COLLECTION_RULE_TITLE_TOO_LONGTitle rule value exceeds the contract max length.
-
400COLLECTION_RULE_TAG_NOT_FOUNDReferenced tag does not exist in this store.
-
400COLLECTION_RULE_CATEGORY_NOT_FOUNDReferenced category does not exist in this store.
-
400COLLECTION_RULE_VENDOR_NOT_FOUNDReferenced vendor does not exist in this store.
-
400COLLECTION_RULE_BRAND_NOT_FOUNDReferenced brand does not exist in this store.
-
404COLLECTION_NOT_FOUNDCollection does not exist in this store.
-
409COLLECTION_RULE_DUPLICATEThe rule already exists on this collection.
Update collection rule
Update a rule on a collection.
Updates one automatic matching rule, then updates which products the collection includes.
Path parameters
| Name | Type | Description |
|---|---|---|
id
required
|
uuid |
Collection id. |
rule_id
required
|
uuid |
Rule id. |
Headers
| Name | Type | Description |
|---|---|---|
Authorization
required
|
string |
Bearer Store API token. |
Body parameters
| Name | Type | Description |
|---|---|---|
field
required
|
string |
Rule field: tag, category, vendor, brand, or title. |
operator
required
|
string |
Rule operator allowed for the field. |
value
|
string |
Rule value. Required for value-bearing operators. |
include_subcategories
|
boolean |
Only valid for category rules. |
Errors
-
400STORE_API_INVALID_COLLECTION_IDCollection id is not a valid UUID.
-
400STORE_API_INVALID_REQUEST_BODYRequest body is not valid JSON.
-
400COLLECTION_RULES_LIMIT_REACHEDRule count exceeds the Collection rule cap.
-
400COLLECTION_RULE_FIELD_INVALIDRule field is not valid.
-
400COLLECTION_RULE_OPERATOR_INVALIDRule operator is not valid for the selected field.
-
400COLLECTION_RULE_VALUE_REQUIREDThis rule operator requires a value.
-
400COLLECTION_RULE_SUBCATEGORIES_NOT_ALLOWEDInclude_subcategories is only valid for category rules.
-
400COLLECTION_RULE_TAG_ID_INVALIDTag value is not a valid integer id.
-
400COLLECTION_RULE_CATEGORY_ID_INVALIDCategory value is not a valid integer id.
-
400COLLECTION_RULE_VENDOR_ID_INVALIDVendor value is not a valid integer id.
-
400COLLECTION_RULE_BRAND_ID_INVALIDBrand value is not a valid integer id.
-
400COLLECTION_RULE_TITLE_TOO_LONGTitle rule value exceeds the contract max length.
-
400COLLECTION_RULE_TAG_NOT_FOUNDReferenced tag does not exist in this store.
-
400COLLECTION_RULE_CATEGORY_NOT_FOUNDReferenced category does not exist in this store.
-
400COLLECTION_RULE_VENDOR_NOT_FOUNDReferenced vendor does not exist in this store.
-
400COLLECTION_RULE_BRAND_NOT_FOUNDReferenced brand does not exist in this store.
-
404COLLECTION_NOT_FOUNDCollection does not exist in this store.
-
409COLLECTION_RULE_DUPLICATEThe rule already exists on this collection.
-
400STORE_API_INVALID_COLLECTION_RULE_IDRule id is not a valid UUID.
Delete collection rule
Delete a rule from a collection.
Deletes one automatic matching rule, then updates which products the collection includes.
Path parameters
| Name | Type | Description |
|---|---|---|
id
required
|
uuid |
Collection id. |
rule_id
required
|
uuid |
Rule id. |
Headers
| Name | Type | Description |
|---|---|---|
Authorization
required
|
string |
Bearer Store API token. |
Errors
-
400STORE_API_INVALID_COLLECTION_IDCollection id is not a valid UUID.
-
400STORE_API_INVALID_COLLECTION_RULE_IDRule id is not a valid UUID.
-
404COLLECTION_NOT_FOUNDCollection or rule does not exist in this store.
Fields#
Field |
Type |
Create |
Update |
Required |
Translatable |
|---|---|---|---|---|---|
|
text |
Yes |
Yes |
create |
Yes |
|
slug |
Yes |
Yes |
Yes |
|
|
textarea |
Yes |
Yes |
Yes |
|
|
text |
Yes |
Yes |
Yes |
|
|
textarea |
Yes |
Yes |
Yes |
|
|
image |
Yes |
Yes |
No |
|
|
template |
Yes |
Yes |
No |
|
|
select |
Yes |
Yes |
No |
|
|
boolean |
Yes |
Yes |
No |
|
|
boolean |
No |
Yes |
No |
|
|
integer |
No |
No |
No |
|
|
boolean |
No |
No |
No |
|
|
datetime |
No |
No |
No |
|
|
datetime |
No |
No |
No |
|
|
datetime |
No |
No |
No |
|
|
url |
No |
No |
No |
No |
|
string |
No |
No |
No |
No |
Webhook events#
Subscribe to these events to keep your integration in sync with collections. Each event shows the required Store API scope and store permission, the available payload fields, and an example payload. Subscription setup is validated against those permissions; delivery is always restricted to the subscription's store.
Metafield events are filtered for every subscriber. An app receives events for definitions it owns. With the event's required scope, it also receives merchant-owned definitions and definitions shared by another app through app_access: shared; another app's private definitions are not delivered. A store-level webhook endpoint receives merchant-owned definitions and app-owned definitions unless merchant_access is hidden. If an event cannot identify the definition owner or its access settings, Tringify does not deliver it.
Collection created
Fired when a collection is created.
Payload fields
| Field | Type | Description |
|---|---|---|
collection.id |
string |
Always present |
collection.name |
string |
Selectable in the Payload builder |
collection.slug |
string |
Selectable in the Payload builder |
collection.description |
string |
Selectable in the Payload builder |
collection.image_id |
string |
Selectable in the Payload builder |
collection.image_url |
string |
Selectable in the Payload builder |
collection.image_cdn_url |
string |
Selectable in the Payload builder |
collection.seo_title |
string |
Selectable in the Payload builder |
collection.seo_description |
string |
Selectable in the Payload builder |
collection.template_handle |
string |
Selectable in the Payload builder |
collection.match_type |
string |
Selectable in the Payload builder |
collection.is_active |
boolean |
Selectable in the Payload builder |
collection.product_count |
integer |
Selectable in the Payload builder |
collection.materialized_at |
string |
Selectable in the Payload builder |
collection.created_at |
string |
Selectable in the Payload builder |
collection.updated_at |
string |
Selectable in the Payload builder |
collection.rules[*].id |
string |
Selectable in the Payload builder |
collection.rules[*].collection_id |
string |
Selectable in the Payload builder |
collection.rules[*].field |
string |
Selectable in the Payload builder |
collection.rules[*].operator |
string |
Selectable in the Payload builder |
collection.rules[*].value |
string |
Selectable in the Payload builder |
collection.rules[*].value_label |
string |
Selectable in the Payload builder |
collection.rules[*].include_subcategories |
boolean |
Selectable in the Payload builder |
Collection updated
Fired when a collection is updated — including rule changes and image changes.
Possible changed_fields values
The changed_fields array names exactly which of these changed in this event — use it to skip processing updates your integration doesn't care about.
description image_id is_active match_type memberships name rules seo_description seo_title slug template_handle
Payload fields
| Field | Type | Description |
|---|---|---|
collection.id |
string |
Always present |
collection.name |
string |
Selectable in the Payload builder |
collection.slug |
string |
Selectable in the Payload builder |
collection.description |
string |
Selectable in the Payload builder |
collection.image_id |
string |
Selectable in the Payload builder |
collection.image_url |
string |
Selectable in the Payload builder |
collection.image_cdn_url |
string |
Selectable in the Payload builder |
collection.seo_title |
string |
Selectable in the Payload builder |
collection.seo_description |
string |
Selectable in the Payload builder |
collection.template_handle |
string |
Selectable in the Payload builder |
collection.match_type |
string |
Selectable in the Payload builder |
collection.is_active |
boolean |
Selectable in the Payload builder |
collection.product_count |
integer |
Selectable in the Payload builder |
collection.materialized_at |
string |
Selectable in the Payload builder |
collection.created_at |
string |
Selectable in the Payload builder |
collection.updated_at |
string |
Selectable in the Payload builder |
collection.rules[*].id |
string |
Selectable in the Payload builder |
collection.rules[*].collection_id |
string |
Selectable in the Payload builder |
collection.rules[*].field |
string |
Selectable in the Payload builder |
collection.rules[*].operator |
string |
Selectable in the Payload builder |
collection.rules[*].value |
string |
Selectable in the Payload builder |
collection.rules[*].value_label |
string |
Selectable in the Payload builder |
collection.rules[*].include_subcategories |
boolean |
Selectable in the Payload builder |
changed_fields |
array |
Always present |
Collection deleted
Fired when a collection is deleted.
Payload fields
| Field | Type | Description |
|---|---|---|
collection.id |
string |
Always present |
collection.name |
string |
Selectable in the Payload builder |
collection.slug |
string |
Selectable in the Payload builder |
Collection metafield value created
Fired when a collection metafield value is created.
Payload fields
| Field | Type | Description |
|---|---|---|
collection.id |
string |
Always present |
collection.name |
string |
Selectable in the Payload builder |
collection.slug |
string |
Selectable in the Payload builder |
metafield.definition.id |
string |
Selectable in the Payload builder |
metafield.definition.owner_type |
string |
Selectable in the Payload builder |
metafield.definition.namespace |
string |
Selectable in the Payload builder |
metafield.definition.key |
string |
Selectable in the Payload builder |
metafield.definition.name |
string |
Selectable in the Payload builder |
metafield.definition.description |
string |
Selectable in the Payload builder |
metafield.definition.type |
string |
Selectable in the Payload builder |
metafield.definition.is_translatable |
boolean |
Selectable in the Payload builder |
metafield.definition.max_value_length |
integer |
Selectable in the Payload builder |
metafield.definition.max_list_items |
integer |
Selectable in the Payload builder |
metafield.definition.sort_order |
integer |
Selectable in the Payload builder |
metafield.definition.app_id |
string |
Selectable in the Payload builder |
metafield.definition.app_access |
string |
Selectable in the Payload builder |
metafield.definition.merchant_access |
string |
Selectable in the Payload builder |
metafield.definition.created_at |
string |
Selectable in the Payload builder |
metafield.definition.updated_at |
string |
Selectable in the Payload builder |
metafield.definition.usage_count |
integer |
Selectable in the Payload builder |
metafield.value |
string |
Selectable in the Payload builder |
metafield.display_value |
string |
Selectable in the Payload builder |
metafield.display_value_map |
object |
Selectable in the Payload builder |
metafield.created_at |
string |
Selectable in the Payload builder |
metafield.updated_at |
string |
Selectable in the Payload builder |
Collection metafield value updated
Fired when a collection metafield value changes.
Possible changed_fields values
The changed_fields array names exactly which of these changed in this event — use it to skip processing updates your integration doesn't care about.
value
Payload fields
| Field | Type | Description |
|---|---|---|
collection.id |
string |
Always present |
collection.name |
string |
Selectable in the Payload builder |
collection.slug |
string |
Selectable in the Payload builder |
previous.definition.id |
string |
Selectable in the Payload builder |
previous.definition.owner_type |
string |
Selectable in the Payload builder |
previous.definition.namespace |
string |
Selectable in the Payload builder |
previous.definition.key |
string |
Selectable in the Payload builder |
previous.definition.name |
string |
Selectable in the Payload builder |
previous.definition.description |
string |
Selectable in the Payload builder |
previous.definition.type |
string |
Selectable in the Payload builder |
previous.definition.is_translatable |
boolean |
Selectable in the Payload builder |
previous.definition.max_value_length |
integer |
Selectable in the Payload builder |
previous.definition.max_list_items |
integer |
Selectable in the Payload builder |
previous.definition.sort_order |
integer |
Selectable in the Payload builder |
previous.definition.app_id |
string |
Selectable in the Payload builder |
previous.definition.app_access |
string |
Selectable in the Payload builder |
previous.definition.merchant_access |
string |
Selectable in the Payload builder |
previous.definition.created_at |
string |
Selectable in the Payload builder |
previous.definition.updated_at |
string |
Selectable in the Payload builder |
previous.definition.usage_count |
integer |
Selectable in the Payload builder |
previous.value |
string |
Selectable in the Payload builder |
previous.display_value |
string |
Selectable in the Payload builder |
previous.display_value_map |
object |
Selectable in the Payload builder |
previous.created_at |
string |
Selectable in the Payload builder |
previous.updated_at |
string |
Selectable in the Payload builder |
current.definition.id |
string |
Selectable in the Payload builder |
current.definition.owner_type |
string |
Selectable in the Payload builder |
current.definition.namespace |
string |
Selectable in the Payload builder |
current.definition.key |
string |
Selectable in the Payload builder |
current.definition.name |
string |
Selectable in the Payload builder |
current.definition.description |
string |
Selectable in the Payload builder |
current.definition.type |
string |
Selectable in the Payload builder |
current.definition.is_translatable |
boolean |
Selectable in the Payload builder |
current.definition.max_value_length |
integer |
Selectable in the Payload builder |
current.definition.max_list_items |
integer |
Selectable in the Payload builder |
current.definition.sort_order |
integer |
Selectable in the Payload builder |
current.definition.app_id |
string |
Selectable in the Payload builder |
current.definition.app_access |
string |
Selectable in the Payload builder |
current.definition.merchant_access |
string |
Selectable in the Payload builder |
current.definition.created_at |
string |
Selectable in the Payload builder |
current.definition.updated_at |
string |
Selectable in the Payload builder |
current.definition.usage_count |
integer |
Selectable in the Payload builder |
current.value |
string |
Selectable in the Payload builder |
current.display_value |
string |
Selectable in the Payload builder |
current.display_value_map |
object |
Selectable in the Payload builder |
current.created_at |
string |
Selectable in the Payload builder |
current.updated_at |
string |
Selectable in the Payload builder |
changed_fields |
array |
Selectable in the Payload builder |
Collection metafield value deleted
Fired when a collection metafield value is deleted, including when its collection is deleted.
Payload fields
| Field | Type | Description |
|---|---|---|
collection.id |
string |
Always present |
collection.name |
string |
Selectable in the Payload builder |
collection.slug |
string |
Selectable in the Payload builder |
metafield.definition.id |
string |
Selectable in the Payload builder |
metafield.definition.owner_type |
string |
Selectable in the Payload builder |
metafield.definition.namespace |
string |
Selectable in the Payload builder |
metafield.definition.key |
string |
Selectable in the Payload builder |
metafield.definition.name |
string |
Selectable in the Payload builder |
metafield.definition.description |
string |
Selectable in the Payload builder |
metafield.definition.type |
string |
Selectable in the Payload builder |
metafield.definition.is_translatable |
boolean |
Selectable in the Payload builder |
metafield.definition.max_value_length |
integer |
Selectable in the Payload builder |
metafield.definition.max_list_items |
integer |
Selectable in the Payload builder |
metafield.definition.sort_order |
integer |
Selectable in the Payload builder |
metafield.definition.app_id |
string |
Selectable in the Payload builder |
metafield.definition.app_access |
string |
Selectable in the Payload builder |
metafield.definition.merchant_access |
string |
Selectable in the Payload builder |
metafield.definition.created_at |
string |
Selectable in the Payload builder |
metafield.definition.updated_at |
string |
Selectable in the Payload builder |
metafield.definition.usage_count |
integer |
Selectable in the Payload builder |
metafield.value |
string |
Selectable in the Payload builder |
metafield.display_value |
string |
Selectable in the Payload builder |
metafield.display_value_map |
object |
Selectable in the Payload builder |
metafield.created_at |
string |
Selectable in the Payload builder |
metafield.updated_at |
string |
Selectable in the Payload builder |