Attributes

Manage product attributes and their options through the Store API.

Attributes define reusable product choices such as Color and Size. Each attribute has a standard, swatch, or image sub type and at least one option. A variable product refers to attribute IDs and each variant refers to its selected option IDs.

Reads require read_products; writes require write_products. Binding a new or changed option image by file_id also requires read_files. Attribute and option translations have separate endpoints and require translation scopes in addition to product scopes. The limits response gives the current limits for the store; the response below is an example.

Endpoints#

Attribute limits

GET read_products

Fetch Attribute limits, option limits, and list constraints.

Returns the current store's attribute and option limits, including list and reorder constraints. The sample response illustrates the shape; read this endpoint for the limits that apply to your store. 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 attributes

GET read_products

List product attributes for the store.

Returns paginated product attributes, at most list_max_limit (100) per page. By default each attribute carries options_count and a preview of its first 6 options; send include=options for every option (up to 100 per attribute). A page that would exceed the 512 KiB reply budget returns LIST_RESPONSE_TOO_LARGE; request it again with a lower limit (error.params.fit estimates how many fit). Use sub_type to filter to standard, swatch, or image attributes; use in_use to filter attributes currently used by variants. total counts matching results; store_total counts all attributes in the store. Pass returned cursors unchanged and reset pagination when filters or sorting change. Get attribute always returns every option.

Query parameters

Name Type Description
cursor string

Opaque cursor returned as next_cursor or previous_cursor. Omit for the first page; reset when search, filters, or sorting changes.

limit integer

Page size, 1-100 (list_max_limit from Attribute limits, default 50). Larger values return ATTRIBUTE_LIST_INVALID_LIMIT.

Example: 20
search string

Search attributes by name or slug.

Example: color
include string

options returns every option of each attribute instead of the first 6. Omit for the preview.

Example: options
sub_type string

Filter by sub type: standard, swatch, or image.

Example: swatch
in_use boolean

Filter by whether the attribute is used by variants.

Example: true
sort_by string

Sort field from the Attribute list contract.

Allowed values
namecreated_atupdated_at
Example: name
sort_direction string

Sort direction from the Attribute list contract.

Allowed values
ascdesc
Example: asc

Headers

Name Type Description
Authorization required string

Bearer Store API token.

Errors

  • 400 ATTRIBUTE_LIST_INVALID_LIMIT

    Limit must be within the documented list range.

  • 400 ATTRIBUTE_SEARCH_TOO_LONG

    Search exceeds the configured maximum length.

  • 400 ATTRIBUTE_SUB_TYPE_INVALID

    Sub_type must be standard, swatch, or image.

  • 400 ATTRIBUTE_LIST_INVALID_SORT_BY

    Sort_by is not one of the documented fields.

  • 400 ATTRIBUTE_LIST_INVALID_SORT_DIRECTION

    Sort_direction is not asc or desc.

  • 400 INVALID_INPUT

    Cursor is malformed or does not match the current list state, in_use is not true or false, or include is not options.

  • 400 LIST_RESPONSE_TOO_LARGE

    The page would be larger than the 512 KiB reply budget (long descriptions or many options). Request it again with a lower limit; error.params.fit estimates how many rows fit.

Search attributes

GET read_products

Search attributes for picker-style suggestions.

Returns lightweight attribute suggestions by query. This endpoint is intended for pickers and simple selection UIs.

Query parameters

Name Type Description
q string

Search query.

Example: color
limit integer

Suggestion count.

Example: 10
offset integer

Result offset.

Example: 0

Headers

Name Type Description
Authorization required string

Bearer Store API token.

Errors

  • 400 ATTRIBUTE_LIST_INVALID_LIMIT

    Limit must be within the documented suggestion range.

  • 400 ATTRIBUTE_SEARCH_TOO_LONG

    Q exceeds the configured maximum length.

  • 400 INVALID_INPUT

    Offset is not a non-negative integer.

Get an attribute

GET read_products

Fetch one attribute by id.

Returns the attribute and its nested options if it belongs to the token's store.

Path parameters

Name Type Description
id required integer

Attribute id.

Example: 7

Headers

Name Type Description
Authorization required string

Bearer Store API token.

Errors

  • 400 STORE_API_INVALID_ATTRIBUTE_ID

    Attribute id must be an integer.

  • 404 ATTRIBUTE_NOT_FOUND

    Attribute does not exist in this store.

Create an attribute

POST write_products

Create an attribute with options.

Creates a product attribute. name, sub_type, and at least one option are required. slug is optional on create and is generated from the name when omitted. sub_type controls option shape: standard uses labels/values, swatch options require color, and image options require file_id. Non-empty option file_id values must point to upload files in the same store and require read_files in addition to write_products.

Headers

Name Type Description
Authorization required string

Bearer Store API token.

Idempotency-Key string

Optional key, up to 255 characters, that makes this create safe to retry. Repeating the request with the same key and body within 24 hours returns the original response instead of creating again; the same key with a different body returns CATALOG_REQUEST_KEY_CONFLICT.

Body parameters

Name Type Description
name required string

Attribute name.

Example: Color
slug string

Optional slug. Omit to generate from name.

Example: color
description string

Optional plain-text description.

Example: Product color choices.
sub_type required string

One of standard, swatch, or image. Controls which option fields are required.

Example: swatch
sort_order integer

Store-wide display order.

Example: 10
options required array<object>

Attribute options. label is required. value is optional and can be generated. color is required for swatch attributes. file_id is required for image attributes and requires read_files.

Example: [{"label":"Red","value":"red","color":"#ef4444","sort_order":0}]

Errors

  • 400 STORE_API_INVALID_REQUEST_BODY

    Request body is not valid JSON or does not match the expected shape.

  • 400 ATTRIBUTE_NAME_REQUIRED

    Name is empty after normalization.

  • 400 ATTRIBUTE_NAME_INVALID_CHARS

    Name contains unsupported control characters.

  • 400 ATTRIBUTE_NAME_TOO_LONG

    Name exceeds the Attribute contract max length.

  • 400 ATTRIBUTE_SLUG_INVALID_FORMAT

    Slug is not valid for Attribute URLs.

  • 400 ATTRIBUTE_SLUG_TOO_LONG

    Slug exceeds the Attribute contract max length.

  • 400 ATTRIBUTE_SLUG_RESERVED

    Slug is reserved for storefront query parameters.

  • 400 ATTRIBUTE_SLUG_GENERATION_FAILED

    A slug could not be generated from the supplied name.

  • 400 ATTRIBUTE_UNIQUE_SLUG_GENERATION_FAILED

    A unique generated slug could not be allocated.

  • 400 ATTRIBUTE_DESCRIPTION_INVALID_CHARS

    Description contains unsupported control characters.

  • 400 ATTRIBUTE_DESCRIPTION_TOO_LONG

    Description exceeds the Attribute contract max length.

  • 400 ATTRIBUTE_SUB_TYPE_INVALID

    Sub type is not standard, swatch, or image.

  • 400 ATTRIBUTE_SORT_ORDER_NEGATIVE

    Sort order must be zero or greater.

  • 400 ATTRIBUTE_SORT_ORDER_TOO_LARGE

    Sort order exceeds the contract maximum.

  • 400 ATTRIBUTE_OPTIONS_REQUIRED

    At least one option is required.

  • 400 ATTRIBUTE_OPTIONS_TOO_MANY

    Option count exceeds the contract max per attribute.

  • 400 ATTRIBUTE_OPTION_LABEL_INVALID_CHARS

    An option label contains unsupported control characters.

  • 400 ATTRIBUTE_OPTION_LABEL_TOO_LONG

    Option label exceeds the contract max length.

  • 400 ATTRIBUTE_OPTION_LABEL_DUPLICATE

    Option labels must be unique within the attribute.

  • 400 ATTRIBUTE_OPTION_VALUE_TOO_LONG

    Option value exceeds the contract max length.

  • 400 ATTRIBUTE_OPTION_VALUE_INVALID_FORMAT

    Option value is not a valid filter identifier.

  • 400 ATTRIBUTE_OPTION_VALUE_GENERATION_FAILED

    An option value could not be generated from its label.

  • 400 ATTRIBUTE_OPTION_VALUE_DUPLICATE

    Option values must be unique within the attribute.

  • 400 ATTRIBUTE_OPTION_SORT_ORDER_NEGATIVE

    Option sort order must be zero or greater.

  • 400 ATTRIBUTE_OPTION_SORT_ORDER_TOO_LARGE

    Option sort order exceeds the contract maximum.

  • 400 ATTRIBUTE_OPTION_COLOR_REQUIRED

    Swatch options require a color.

  • 400 ATTRIBUTE_OPTION_COLOR_INVALID_FORMAT

    Option color must be #RRGGBB.

  • 400 ATTRIBUTE_OPTION_IMAGE_REQUIRED

    Image options require a file_id.

  • 400 INVALID_INPUT

    An option file_id is malformed, is not an upload image, or an existing option id is invalid.

  • 403 STORE_API_SCOPE_REQUIRED

    Binding a new or changed option file_id requires read_files scope in addition to write_products.

  • 404 NOT_FOUND

    An option file_id does not reference an upload image in this store.

  • 409 ATTRIBUTE_DUPLICATE

    Name or slug already exists in this store.

  • 400 ATTRIBUTE_PLAN_LIMIT_REACHED

    The store has as many attributes as its plan allows; the message states the maximum. Fetch /attributes/limits for the store's current cap and usage.

  • 400 CATALOG_REQUEST_KEY_TOO_LONG

    Idempotency-Key is longer than 255 characters.

  • 403 PLAN_UNKNOWN

    The store has no active plan, so nothing can be created until one is chosen.

  • 409 CATALOG_REQUEST_KEY_CONFLICT

    Idempotency-Key was already used with a different request body.

Update an attribute

PUT write_products

Update an attribute and replace its option set.

Updates provided parent fields and replaces the complete option set. Omitted parent fields are left unchanged. options is required, must contain at least one option, and is always a full-array replacement: existing options keep their id and id: 0 creates a new option. expected_revision is required: copy revision from Get attribute so a stale replacement returns ATTRIBUTE_VERSION_STALE. sub_type is immutable after create and must match the existing value. A slug change is blocked while a product or storefront filter uses the attribute; replace it in those products and remove its filter first. Removing an option used by variants is blocked. An option-label change that would make an automatically generated variant title exceed its limit is rejected. Binding a new or changed option file_id requires read_files in addition to write_products; sending the unchanged file id on the same option does not.

Path parameters

Name Type Description
id required integer

Attribute id.

Example: 7

Headers

Name Type Description
Authorization required string

Bearer Store API token.

Body parameters

Name Type Description
name string

Attribute name.

Example: Color
slug string

Optional slug. Omit to keep the current slug; send an empty string to regenerate it from the effective name. Changes are blocked while products or storefront filters use this attribute.

Example: color
description string

Optional plain-text description.

Example: Product color choices.
sub_type required string

Send the existing sub_type; it is required and cannot be changed after create.

Example: swatch
sort_order integer

Store-wide display order.

Example: 10
options required array<object>

Required full replacement option array with at least one option. Existing options include their id; new options use id: 0. Removing an option in use by variants is blocked.

Example: [{"id":41,"label":"Red","value":"red","color":"#ef4444","sort_order":0},{"id":0,"label":"Blue","value":"blue","color":"#3b82f6","sort_order":1}]
expected_revision required string

Copy revision from Get attribute. A concurrent change returns ATTRIBUTE_VERSION_STALE instead of replacing a newer option set.

Example: 2026-06-09T12:00:00Z

Errors

  • 400 STORE_API_INVALID_ATTRIBUTE_ID

    Attribute id must be an integer.

  • 400 STORE_API_INVALID_REQUEST_BODY

    Request body is not valid JSON or does not match the expected shape.

  • 400 ATTRIBUTE_NAME_REQUIRED

    Name is empty after normalization.

  • 400 ATTRIBUTE_NAME_INVALID_CHARS

    Name contains unsupported control characters.

  • 400 ATTRIBUTE_NAME_TOO_LONG

    Name exceeds the Attribute contract max length.

  • 400 ATTRIBUTE_SLUG_INVALID_FORMAT

    Slug is not valid for Attribute URLs.

  • 400 ATTRIBUTE_SLUG_TOO_LONG

    Slug exceeds the Attribute contract max length.

  • 400 ATTRIBUTE_SLUG_RESERVED

    Slug is reserved for storefront query parameters.

  • 400 ATTRIBUTE_SLUG_GENERATION_FAILED

    A slug could not be generated from the supplied name.

  • 400 ATTRIBUTE_UNIQUE_SLUG_GENERATION_FAILED

    A unique generated slug could not be allocated.

  • 400 ATTRIBUTE_DESCRIPTION_INVALID_CHARS

    Description contains unsupported control characters.

  • 400 ATTRIBUTE_DESCRIPTION_TOO_LONG

    Description exceeds the Attribute contract max length.

  • 400 ATTRIBUTE_SUB_TYPE_INVALID

    Sub type is not standard, swatch, or image.

  • 400 ATTRIBUTE_SORT_ORDER_NEGATIVE

    Sort order must be zero or greater.

  • 400 ATTRIBUTE_SORT_ORDER_TOO_LARGE

    Sort order exceeds the contract maximum.

  • 400 ATTRIBUTE_OPTIONS_REQUIRED

    At least one option is required.

  • 400 ATTRIBUTE_OPTIONS_TOO_MANY

    Option count exceeds the contract max per attribute.

  • 400 ATTRIBUTE_OPTION_LABEL_INVALID_CHARS

    An option label contains unsupported control characters.

  • 400 ATTRIBUTE_OPTION_LABEL_TOO_LONG

    Option label exceeds the contract max length.

  • 400 ATTRIBUTE_OPTION_LABEL_DUPLICATE

    Option labels must be unique within the attribute.

  • 400 ATTRIBUTE_OPTION_VALUE_TOO_LONG

    Option value exceeds the contract max length.

  • 400 ATTRIBUTE_OPTION_VALUE_INVALID_FORMAT

    Option value is not a valid filter identifier.

  • 400 ATTRIBUTE_OPTION_VALUE_GENERATION_FAILED

    An option value could not be generated from its label.

  • 400 ATTRIBUTE_OPTION_VALUE_DUPLICATE

    Option values must be unique within the attribute.

  • 400 ATTRIBUTE_OPTION_SORT_ORDER_NEGATIVE

    Option sort order must be zero or greater.

  • 400 ATTRIBUTE_OPTION_SORT_ORDER_TOO_LARGE

    Option sort order exceeds the contract maximum.

  • 400 ATTRIBUTE_OPTION_COLOR_REQUIRED

    Swatch options require a color.

  • 400 ATTRIBUTE_OPTION_COLOR_INVALID_FORMAT

    Option color must be #RRGGBB.

  • 400 ATTRIBUTE_OPTION_IMAGE_REQUIRED

    Image options require a file_id.

  • 400 INVALID_INPUT

    An option file_id is malformed, is not an upload image, or an existing option id is invalid.

  • 403 STORE_API_SCOPE_REQUIRED

    Binding a new or changed option file_id requires read_files scope in addition to write_products.

  • 404 NOT_FOUND

    An option file_id does not reference an upload image in this store.

  • 409 ATTRIBUTE_DUPLICATE

    Name or slug already exists in this store.

  • 400 ATTRIBUTE_REVISION_REQUIRED

    expected_revision is missing.

  • 409 ATTRIBUTE_VERSION_STALE

    The attribute changed after the supplied revision was read.

  • 409 ATTRIBUTE_SLUG_IN_USE

    Products or a storefront filter still use this attribute.

  • 400 PRODUCT_VARIANT_TITLE_TOO_LONG_PLAIN

    An option-label change would make an automatically generated variant title too long.

  • 400 ATTRIBUTE_SUB_TYPE_IMMUTABLE

    Sub type cannot be changed after creation.

  • 400 ATTRIBUTE_OPTION_ID_INVALID

    An update option id is negative.

  • 400 ATTRIBUTE_OPTION_REORDER_DUPLICATE_ID

    The replacement contains the same existing option id more than once.

  • 400 ATTRIBUTE_OPTION_REORDER_UNKNOWN_IDS

    An existing option id does not belong to this attribute.

  • 404 ATTRIBUTE_NOT_FOUND

    Attribute does not exist in this store.

  • 409 ATTRIBUTE_OPTIONS_IN_USE

    An option removed by the update is still used by variants.

  • 409 TRANSLATION_SOURCE_FIELD_HAS_TRANSLATIONS

    Description cannot be cleared while translated values exist.

Delete an attribute

DELETE write_products

Delete an attribute.

Deletes an attribute only when no product variants or storefront filter use it. Replace it in affected products and remove its filter before deleting. When deletion is allowed, its options and the translations for both the attribute and those options are deleted in the same transaction. The attribute delete webhook includes the removed option summaries.

Path parameters

Name Type Description
id required integer

Attribute id.

Example: 7

Headers

Name Type Description
Authorization required string

Bearer Store API token.

Errors

  • 400 STORE_API_INVALID_ATTRIBUTE_ID

    Attribute id must be an integer.

  • 404 ATTRIBUTE_NOT_FOUND

    Attribute does not exist in this store.

  • 409 ATTRIBUTE_IN_USE

    Attribute is used by variants and cannot be deleted.

  • 409 ATTRIBUTE_FILTER_IN_USE

    A storefront filter uses this attribute.

Bulk delete attributes

POST write_products

Delete multiple attributes.

Send store-scoped integer attribute ids in attribute_ids. Attributes that are missing, concurrently changed, used by variants, or used by a storefront filter appear in failed; the others appear in deleted. Deleting an attribute also deletes its options and both levels of translations in the same transaction. The envelope succeeds when the batch itself is valid, even when individual ids fail; inspect both result arrays.

Headers

Name Type Description
Authorization required string

Bearer Store API token.

Body parameters

Name Type Description
attribute_ids required array<integer>

Store-scoped integer attribute ids to delete.

Example: [7, 8, 9]

Errors

  • 400 STORE_API_INVALID_REQUEST_BODY

    Request body is not valid JSON or does not match the expected shape.

  • 400 ATTRIBUTE_BULK_NO_IDS

    No attribute ids were provided.

  • 400 ATTRIBUTE_BULK_DELETE_TOO_MANY

    Batch exceeds the Attribute bulk delete cap.

Reorder attributes

POST write_products

Set the order of selected attributes.

Reorders the supplied attribute ids within their existing positions. Omitted attributes stay in place; all positions are normalized to a unique consecutive order. Every supplied id must belong to the store and the list cannot contain duplicates.

Headers

Name Type Description
Authorization required string

Bearer Store API token.

Body parameters

Name Type Description
attribute_ids required array<integer>

Attribute ids in display order.

Example: [7,8,9]

Errors

  • 400 STORE_API_INVALID_REQUEST_BODY

    Request body is not valid JSON or does not match the expected shape.

  • 400 ATTRIBUTE_REORDER_IDS_REQUIRED

    At least one attribute id is required.

  • 400 ATTRIBUTE_REORDER_DUPLICATE_ID

    The reorder list contains duplicate attribute ids.

  • 400 ATTRIBUTE_REORDER_UNKNOWN_IDS

    One or more attribute ids do not belong to this store.

Reorder attribute options

POST write_products

Set the order of selected options within one attribute.

Reorders the supplied option ids within their existing positions. Omitted options stay in place; all positions are normalized to a unique consecutive order. Every supplied id must belong to the attribute and the list cannot contain duplicates.

Path parameters

Name Type Description
id required integer

Attribute id.

Example: 7

Headers

Name Type Description
Authorization required string

Bearer Store API token.

Body parameters

Name Type Description
option_ids required array<integer>

Option ids in display order.

Example: [41,42,43]

Errors

  • 400 STORE_API_INVALID_ATTRIBUTE_ID

    Attribute id must be an integer.

  • 400 STORE_API_INVALID_REQUEST_BODY

    Request body is not valid JSON or does not match the expected shape.

  • 400 ATTRIBUTE_OPTION_REORDER_IDS_REQUIRED

    At least one option id is required.

  • 400 ATTRIBUTE_OPTION_REORDER_DUPLICATE_ID

    The reorder list contains duplicate option ids.

  • 400 ATTRIBUTE_OPTION_REORDER_UNKNOWN_IDS

    One or more option ids do not belong to this attribute.

  • 404 ATTRIBUTE_NOT_FOUND

    Attribute does not exist in this store.

Fields#

Field

Type

Create

Update

Required

Translatable

name

text

Yes

Yes

create

Yes

slug

slug

Yes

Yes

No

description

textarea

Yes

Yes

Yes

sub_type

select

Yes

Yes

create, update

No

sort_order

integer

Yes

Yes

No

options

attribute_options

Yes

Yes

create, update

No

variant_usage_count

integer

No

No

No

in_use

boolean

No

No

No

created_at

datetime

No

No

No

updated_at

datetime

No

No

No

Webhook events#

Subscribe to these events to keep your integration in sync with attributes. 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.

Attribute created

EVENT attributes/create App scope: read_products Staff permission: products:write

Fired when a product attribute is created.

Payload fields

Field Type Description
attribute.id integer Always present
attribute.store_seq_id integer Selectable in the Payload builder
attribute.name string Selectable in the Payload builder
attribute.slug string Selectable in the Payload builder
attribute.description string Selectable in the Payload builder
attribute.sub_type string Selectable in the Payload builder
attribute.sort_order integer Selectable in the Payload builder
attribute.in_use boolean Selectable in the Payload builder
attribute.variant_usage_count integer Selectable in the Payload builder
attribute.created_at string Selectable in the Payload builder
attribute.updated_at string Selectable in the Payload builder
attribute.options[*].id integer Always present
attribute.options[*].store_seq_id integer Selectable in the Payload builder
attribute.options[*].attribute_id integer Selectable in the Payload builder
attribute.options[*].label string Selectable in the Payload builder
attribute.options[*].value string Selectable in the Payload builder
attribute.options[*].color string Selectable in the Payload builder
attribute.options[*].file_id string Selectable in the Payload builder
attribute.options[*].file_url string Selectable in the Payload builder
attribute.options[*].file_cdn_url string Selectable in the Payload builder
attribute.options[*].sort_order integer Selectable in the Payload builder
attribute.options[*].created_at string Selectable in the Payload builder

Attribute updated

EVENT attributes/update App scope: read_products Staff permission: products:write

Fired when a product attribute is updated.

Payload fields

Field Type Description
attribute.id integer Always present
attribute.store_seq_id integer Selectable in the Payload builder
attribute.name string Selectable in the Payload builder
attribute.slug string Selectable in the Payload builder
attribute.description string Selectable in the Payload builder
attribute.sub_type string Selectable in the Payload builder
attribute.sort_order integer Selectable in the Payload builder
attribute.in_use boolean Selectable in the Payload builder
attribute.variant_usage_count integer Selectable in the Payload builder
attribute.created_at string Selectable in the Payload builder
attribute.updated_at string Selectable in the Payload builder
attribute.options[*].id integer Always present
attribute.options[*].store_seq_id integer Selectable in the Payload builder
attribute.options[*].attribute_id integer Selectable in the Payload builder
attribute.options[*].label string Selectable in the Payload builder
attribute.options[*].value string Selectable in the Payload builder
attribute.options[*].color string Selectable in the Payload builder
attribute.options[*].file_id string Selectable in the Payload builder
attribute.options[*].file_url string Selectable in the Payload builder
attribute.options[*].file_cdn_url string Selectable in the Payload builder
attribute.options[*].sort_order integer Selectable in the Payload builder
attribute.options[*].created_at string Selectable in the Payload builder

Attribute deleted

EVENT attributes/delete App scope: read_products Staff permission: products:write

Fired when a product attribute is deleted. Payload carries the attribute plus the options that cascaded with it.

Payload fields

Field Type Description
attribute.id integer Always present
attribute.store_seq_id integer Selectable in the Payload builder
attribute.name string Selectable in the Payload builder
attribute.slug string Selectable in the Payload builder
attribute.sub_type string Selectable in the Payload builder
attribute.options[*].id integer Always present
attribute.options[*].store_seq_id integer Selectable in the Payload builder
attribute.options[*].label string Selectable in the Payload builder
attribute.options[*].value string Selectable in the Payload builder

Attributes reordered

EVENT attributes/reorder App scope: read_products Staff permission: products:write

Fired when the sort order of attributes is changed. Payload carries the ordered id list.

Payload fields

Field Type Description
attribute_ids array Always present

Attribute option created

EVENT attribute_options/create App scope: read_products Staff permission: products:write

Fired when a new option is added to an attribute.

Payload fields

Field Type Description
option.id integer Always present
option.store_seq_id integer Selectable in the Payload builder
option.attribute_id integer Selectable in the Payload builder
option.label string Selectable in the Payload builder
option.value string Selectable in the Payload builder
option.color string Selectable in the Payload builder
option.file_id string Selectable in the Payload builder
option.file_url string Selectable in the Payload builder
option.file_cdn_url string Selectable in the Payload builder
option.sort_order integer Selectable in the Payload builder
option.created_at string Selectable in the Payload builder

Attribute option updated

EVENT attribute_options/update App scope: read_products Staff permission: products:write

Fired when an existing attribute option is updated.

Payload fields

Field Type Description
option.id integer Always present
option.store_seq_id integer Selectable in the Payload builder
option.attribute_id integer Selectable in the Payload builder
option.label string Selectable in the Payload builder
option.value string Selectable in the Payload builder
option.color string Selectable in the Payload builder
option.file_id string Selectable in the Payload builder
option.file_url string Selectable in the Payload builder
option.file_cdn_url string Selectable in the Payload builder
option.sort_order integer Selectable in the Payload builder
option.created_at string Selectable in the Payload builder

Attribute option deleted

EVENT attribute_options/delete App scope: read_products Staff permission: products:write

Fired when an attribute option is removed.

Payload fields

Field Type Description
option.id integer Always present
option.store_seq_id integer Selectable in the Payload builder
option.label string Selectable in the Payload builder
option.value string Selectable in the Payload builder

Attribute options reordered

EVENT attribute_options/reorder App scope: read_products Staff permission: products:write

Fired when the sort order of options within an attribute changes. Payload carries the attribute_id plus the ordered option_id list.

Payload fields

Field Type Description
attribute_id integer Always present
option_ids array Always present