Order Tags require order scopes: reads use read_orders and writes use write_orders. Tags label orders for workflows such as Wholesale or Rush. They are separate from Product Tags and Customer Tags. Names are unique in the store, ignoring capitalisation and extra spaces, and the slug is always generated from the name, also when a tag is renamed. Each order carries at most max_per_order tags (see the limits endpoint); tagging several orders at once changes nothing when any of them would go over it. Order reads include each order's tags, and GET /orders?tag= filters by tag name. Renaming or deleting a tag also sends orders/update for every order that carries it, in the background.
Endpoints#
Order Tag limits
Get Order Tag limits.
Returns the field and request limits enforced by Order Tag endpoints. max_per_order is the most tags one order can have; assign_orders_max_count is the most order ids one tag or untag request can name.
Headers
| Name | Type | Description |
|---|---|---|
Authorization
required
|
string |
Bearer Store API token. |
List Order Tags
List Order Tags for the store.
Returns a paginated, searchable, and sortable list. search matches anywhere in the name, ignoring capitalization, or in the slug. order_count counts the orders that have the tag; it is updated shortly after assignments change.
Query parameters
| Name | Type | Description |
|---|---|---|
page
|
integer |
Page number. |
limit
|
integer |
Page size, 1 to 500; defaults to 25. |
search
|
string |
Matches anywhere in the name or slug. |
sort_by
|
string |
Sort by
Allowed values
nameorder_countcreated_at |
sort_direction
|
string |
Sort direction:
Allowed values
ascdesc |
Headers
| Name | Type | Description |
|---|---|---|
Authorization
required
|
string |
Bearer Store API token. |
Errors
-
400ORDER_TAG_LIST_INVALID_PAGEPage must be a positive integer.
-
400ORDER_TAG_LIST_INVALID_LIMITLimit is not an integer in the Order Tag range.
-
400ORDER_TAG_LIST_INVALID_SORT_BYSort_by is not supported.
-
400ORDER_TAG_LIST_INVALID_SORT_DIRECTIONSort_direction is not supported.
-
400ORDER_TAG_SEARCH_TOO_LONGSearch exceeds the maximum length.
Get an Order Tag
Get one Order Tag.
Returns the Order Tag when it belongs to the token's store.
Path parameters
| Name | Type | Description |
|---|---|---|
id
required
|
string |
Order Tag UUID. |
Headers
| Name | Type | Description |
|---|---|---|
Authorization
required
|
string |
Bearer Store API token. |
Errors
-
400ORDER_TAG_REQUEST_INVALIDId is not a valid UUID (
details.fieldisid). -
404ORDER_TAG_NOT_FOUNDOrder Tag does not exist in this store.
Create an Order Tag
Create an Order Tag.
Creates an Order Tag. The slug is generated from the name. Sends order_tags/create.
Headers
| Name | Type | Description |
|---|---|---|
Authorization
required
|
string |
Bearer Store API token. |
Body parameters
| Name | Type | Description |
|---|---|---|
name
required
|
string |
Order Tag name. |
Errors
-
400STORE_API_INVALID_REQUEST_BODYRequest body is not valid JSON.
-
400ORDER_TAG_NAME_REQUIREDName is required.
-
400ORDER_TAG_NAME_TOO_LONGName exceeds the configured limit.
-
400ORDER_TAG_NAME_INVALID_CHARSName contains characters a name cannot have, such as control characters.
-
400ORDER_TAG_SLUG_GENERATION_FAILEDNo slug could be generated from the name.
-
409ORDER_TAG_NAME_DUPLICATEAn Order Tag with this name already exists, ignoring capitalization;
details.existing_idnames it. -
400ORDER_TAGS_STORE_LIMITThe store has reached its Order Tag limit.
-
400STORE_API_BODY_PROPERTY_UNKNOWNThe body has a property this request does not accept. The message and
error.details.propertieslist the allowed and required properties (nestedfor each object or list of objects). -
400STORE_API_BODY_PROPERTY_INVALIDA body property has the wrong type (
error.details.expected_type). The message anderror.details.propertieslist the allowed and required properties.
Bulk create Order Tags
Create multiple Order Tags.
Creates tags from names. Blank names are ignored. Names that already exist, ignoring capitalization, are skipped; invalid names and names over the store limit are returned in row_errors with the same codes as Create an Order Tag, and the other names are still created. Sends order_tags/create for each tag created.
Headers
| Name | Type | Description |
|---|---|---|
Authorization
required
|
string |
Bearer Store API token. |
Body parameters
| Name | Type | Description |
|---|---|---|
names
required
|
array<string> |
Order Tag names to create, at most 50. |
Errors
-
400STORE_API_INVALID_REQUEST_BODYRequest body is not valid JSON.
-
400ORDER_TAGS_BULK_EMPTYNames must contain at least one item.
-
400ORDER_TAGS_BULK_CREATE_MAXThe request exceeds the bulk-create cap.
-
400STORE_API_BODY_PROPERTY_UNKNOWNThe body has a property this request does not accept. The message and
error.details.propertieslist the allowed and required properties (nestedfor each object or list of objects). -
400STORE_API_BODY_PROPERTY_INVALIDA body property has the wrong type (
error.details.expected_type). The message anderror.details.propertieslist the allowed and required properties.
Rename an Order Tag
Rename an Order Tag.
Renames the tag; its slug is generated again from the new name. Sends order_tags/update, then orders/update with changed_fields tags for each order with the tag. Renaming to the current name changes nothing.
Path parameters
| Name | Type | Description |
|---|---|---|
id
required
|
string |
Order Tag UUID. |
Headers
| Name | Type | Description |
|---|---|---|
Authorization
required
|
string |
Bearer Store API token. |
Body parameters
| Name | Type | Description |
|---|---|---|
name
required
|
string |
Order Tag name. |
Errors
-
400ORDER_TAG_REQUEST_INVALIDId is not a valid UUID (
details.fieldisid). -
404ORDER_TAG_NOT_FOUNDOrder Tag does not exist in this store.
-
400STORE_API_INVALID_REQUEST_BODYRequest body is not valid JSON.
-
400ORDER_TAG_NAME_REQUIREDName is required.
-
400ORDER_TAG_NAME_TOO_LONGName exceeds the configured limit.
-
400ORDER_TAG_NAME_INVALID_CHARSName contains characters a name cannot have, such as control characters.
-
400ORDER_TAG_SLUG_GENERATION_FAILEDNo slug could be generated from the name.
-
409ORDER_TAG_NAME_DUPLICATEAn Order Tag with this name already exists, ignoring capitalization;
details.existing_idnames it. -
409TAG_MUTATION_RETRYThe tag changed or its new slug was taken while renaming; nothing changed. Retry the request.
-
400STORE_API_BODY_PROPERTY_UNKNOWNThe body has a property this request does not accept. The message and
error.details.propertieslist the allowed and required properties (nestedfor each object or list of objects). -
400STORE_API_BODY_PROPERTY_INVALIDA body property has the wrong type (
error.details.expected_type). The message anderror.details.propertieslist the allowed and required properties.
Tag orders
Add the Order Tag to orders.
Adds the tag to every listed order of the token's store that does not have it. added is the number of orders tagged; already_tagged lists ids that already had the tag and not_found lists ids that are not orders of this store, so one bad id does not fail the batch. If any order would go over the tags an order can have (max_per_order from Order Tag limits), no order is changed and ORDER_TAGS_PER_ORDER_LIMIT is returned. Each order tagged sends orders/update with changed_fields tags. The message is ORDERS_BULK_TAGGED when every id was tagged, otherwise ORDERS_BULK_TAGGED_PARTIAL with the three counts. Duplicate ids count once.
Path parameters
| Name | Type | Description |
|---|---|---|
id
required
|
string |
Order Tag UUID. |
Headers
| Name | Type | Description |
|---|---|---|
Authorization
required
|
string |
Bearer Store API token. |
Body parameters
| Name | Type | Description |
|---|---|---|
order_ids
required
|
array<string> |
Order UUIDs to tag, at most 250. |
Errors
-
400ORDER_TAG_REQUEST_INVALIDId is not a valid UUID (
details.fieldisid). -
404ORDER_TAG_NOT_FOUNDOrder Tag does not exist in this store.
-
400STORE_API_INVALID_REQUEST_BODYRequest body is not valid JSON.
-
400ORDER_TAG_NO_ORDER_IDSorder_idsis empty. -
400ORDER_TAG_REQUEST_INVALIDAn order id is not a valid UUID (
details.fieldisorder_ids). -
400ORDER_TAG_ORDERS_MAXMore order ids than
assign_orders_max_countfrom Order Tag limits. -
400ORDER_TAGS_PER_ORDER_LIMITA listed order already has the most tags an order can have; no order was changed.
-
400STORE_API_BODY_PROPERTY_UNKNOWNThe body has a property this request does not accept. The message and
error.details.propertieslist the allowed and required properties (nestedfor each object or list of objects). -
400STORE_API_BODY_PROPERTY_INVALIDA body property has the wrong type (
error.details.expected_type). The message anderror.details.propertieslist the allowed and required properties.
Untag orders
Remove the Order Tag from orders.
Removes the tag from every listed order of the token's store that has it. removed is the number of orders untagged; not_tagged lists ids that did not have the tag and not_found lists ids that are not orders of this store. Each order untagged sends orders/update with changed_fields tags. The message is ORDERS_BULK_UNTAGGED when every id was untagged, otherwise ORDERS_BULK_UNTAGGED_PARTIAL. Duplicate ids count once.
Path parameters
| Name | Type | Description |
|---|---|---|
id
required
|
string |
Order Tag UUID. |
Headers
| Name | Type | Description |
|---|---|---|
Authorization
required
|
string |
Bearer Store API token. |
Body parameters
| Name | Type | Description |
|---|---|---|
order_ids
required
|
array<string> |
Order UUIDs to untag, at most 250. |
Errors
-
400ORDER_TAG_REQUEST_INVALIDId is not a valid UUID (
details.fieldisid). -
404ORDER_TAG_NOT_FOUNDOrder Tag does not exist in this store.
-
400STORE_API_INVALID_REQUEST_BODYRequest body is not valid JSON.
-
400ORDER_TAG_NO_ORDER_IDSorder_idsis empty. -
400ORDER_TAG_REQUEST_INVALIDAn order id is not a valid UUID (
details.fieldisorder_ids). -
400ORDER_TAG_ORDERS_MAXMore order ids than
assign_orders_max_countfrom Order Tag limits. -
400STORE_API_BODY_PROPERTY_UNKNOWNThe body has a property this request does not accept. The message and
error.details.propertieslist the allowed and required properties (nestedfor each object or list of objects). -
400STORE_API_BODY_PROPERTY_INVALIDA body property has the wrong type (
error.details.expected_type). The message anderror.details.propertieslist the allowed and required properties.
Delete an Order Tag
Delete an Order Tag.
If orders have the tag, retry with the returned confirmation token. Sends order_tags/delete; the tag is then removed from its orders in the background, each sending orders/update with changed_fields tags.
Path parameters
| Name | Type | Description |
|---|---|---|
id
required
|
string |
Order Tag UUID. |
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
-
400ORDER_TAG_REQUEST_INVALIDId is not a valid UUID (
details.fieldisid). -
404ORDER_TAG_NOT_FOUNDOrder Tag does not exist in this store.
-
400STORE_API_INVALID_REQUEST_BODYRequest body is not valid JSON.
-
409CONFIRMATION_REQUIREDOrders have the tag; deletion requires confirmation.
details.affected_order_countis the number of orders. -
400ORDER_TAG_CONFIRMATION_INVALIDThe confirmation token is invalid or expired, or a tag changed since it was issued; obtain a fresh confirmation.
-
409TAG_MUTATION_RETRYA tag is being changed by another request; nothing was deleted. Retry the request.
-
400STORE_API_BODY_PROPERTY_UNKNOWNThe body has a property this request does not accept. The message and
error.details.propertieslist the allowed and required properties (nestedfor each object or list of objects). -
400STORE_API_BODY_PROPERTY_INVALIDA body property has the wrong type (
error.details.expected_type). The message anderror.details.propertieslist the allowed and required properties.
Bulk delete Order Tags
Delete multiple Order Tags.
Deletes the selected store-scoped UUIDs transactionally; ids that are not UUIDs or not tags of this store are listed in failed. If orders have any of the tags, retry with the returned confirmation token and the same ids. Sends order_tags/delete for each tag deleted; the tags are then removed from their orders in the background, each sending orders/update with changed_fields tags.
Headers
| Name | Type | Description |
|---|---|---|
Authorization
required
|
string |
Bearer Store API token. |
Body parameters
| Name | Type | Description |
|---|---|---|
tag_ids
required
|
array<string> |
Store-scoped Order Tag UUIDs, at most 500. |
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.
-
400ORDER_TAGS_NONE_SPECIFIEDTag_ids must contain at least one id.
-
400ORDER_TAGS_BULK_DELETE_MAXThe request exceeds the bulk-delete cap.
-
409CONFIRMATION_REQUIREDOrders have the tag; deletion requires confirmation.
details.affected_order_countis the number of orders. -
400ORDER_TAG_CONFIRMATION_INVALIDThe confirmation token is invalid or expired, or a tag changed since it was issued; obtain a fresh confirmation.
-
409TAG_MUTATION_RETRYA tag is being changed by another request; nothing was deleted. Retry the request.
-
400STORE_API_BODY_PROPERTY_UNKNOWNThe body has a property this request does not accept. The message and
error.details.propertieslist the allowed and required properties (nestedfor each object or list of objects). -
400STORE_API_BODY_PROPERTY_INVALIDA body property has the wrong type (
error.details.expected_type). The message anderror.details.propertieslist the allowed and required properties.
Fields#
Field |
Type |
Create |
Update |
Required |
Translatable |
|---|---|---|---|---|---|
|
text |
Yes |
Yes |
create, update |
No |
|
slug |
No |
No |
No |
|
|
integer |
No |
No |
No |
|
|
datetime |
No |
No |
No |
|
|
datetime |
No |
No |
No |
Webhook events#
Subscribe to these events to keep your integration in sync with order tags. 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.
Order tag created
Fired when an order tag is created, including a tag created by adding a new name to an order. Adding the tag to or removing it from an order sends orders/update (tags).
Payload fields
| Field | Type | Description |
|---|---|---|
tag.id |
string |
Always present |
tag.name |
string |
Selectable in the Payload builder |
tag.slug |
string |
Selectable in the Payload builder |
tag.order_count |
integer |
Selectable in the Payload builder |
tag.created_at |
string |
Selectable in the Payload builder |
tag.updated_at |
string |
Selectable in the Payload builder |
Order tag updated
Fired when an order tag is renamed. Each order with the tag then sends orders/update (tags).
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.
name slug
Payload fields
| Field | Type | Description |
|---|---|---|
previous.id |
string |
Always present |
previous.name |
string |
Selectable in the Payload builder |
previous.slug |
string |
Selectable in the Payload builder |
previous.order_count |
integer |
Selectable in the Payload builder |
previous.created_at |
string |
Selectable in the Payload builder |
previous.updated_at |
string |
Selectable in the Payload builder |
current.id |
string |
Always present |
current.name |
string |
Selectable in the Payload builder |
current.slug |
string |
Selectable in the Payload builder |
current.order_count |
integer |
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 |
Order tag deleted
Fired when an order tag is deleted. Each order that had the tag then sends orders/update (tags) as the tag is removed from it.
Payload fields
| Field | Type | Description |
|---|---|---|
tag.id |
string |
Always present |
tag.name |
string |
Selectable in the Payload builder |
tag.slug |
string |
Selectable in the Payload builder |
tag.order_count |
integer |
Selectable in the Payload builder |
tag.created_at |
string |
Selectable in the Payload builder |
tag.updated_at |
string |
Selectable in the Payload builder |