Collection translations

Read and write localized collection fields through the Store API.

Get collection translation

GET read_products + read_translations

Fetch one collection translation.

Returns stored translated Collection fields for one locale, including whether the translation is out of date. Fields without a translation in this locale are omitted from the response. An omitted field is not empty: shoppers see the store's base-language value, which the resource's own GET endpoint returns.

Path parameters

Name Type Description
id required uuid

Collection id.

Example: 5ff7d4ea-3250-4a4d-9d26-07f64d917d31
locale required string

Enabled non-default store locale.

Example: fr

Headers

Name Type Description
Authorization required string

Bearer Store API token.

Errors

  • 400 STORE_API_INVALID_COLLECTION_ID

    Collection id is not a valid UUID.

  • 400 TRANSLATION_LOCALE_REQUIRED

    Locale is required.

  • 400 TRANSLATION_LOCALE_NOT_ENABLED

    Locale is not enabled for this store.

  • 400 TRANSLATION_DEFAULT_LOCALE_FORBIDDEN

    Translations cannot target the store's default locale.

  • 400 TRANSLATION_FIELD_NOT_TRANSLATABLE

    Field is not translatable for collections.

  • 400 TRANSLATION_FIELDS_REQUIRED

    At least one translated field is required.

  • 400 TRANSLATION_FIELD_VALUE_TOO_LONG

    A translated value exceeds its field limit.

  • 400 TRANSLATION_INVALID_RESOURCE_ID

    A Collection id is invalid.

  • 400 TRANSLATION_TOO_MANY_RESOURCES

    The request exceeds the translation batch resource cap.

  • 404 TRANSLATION_RESOURCE_NOT_FOUND

    Collection does not exist in this store.

  • 409 TRANSLATION_DUPLICATE_NAME_OR_SLUG

    Translated name or slug conflicts with another collection.

Set collection translation

PUT write_products + write_translations

Set one collection translation.

Writes translated Collection fields for one locale. Empty values clear the matching field translation.

Path parameters

Name Type Description
id required uuid

Collection id.

Example: 5ff7d4ea-3250-4a4d-9d26-07f64d917d31
locale required string

Enabled non-default store locale.

Example: fr

Headers

Name Type Description
Authorization required string

Bearer Store API token.

Idempotency-Key string

Optional key for this translation write. Reuse it only with the same payload when repeating the request.

Body parameters

Name Type Description
translations required object

Field-keyed translation values. Allowed fields come from contract.translation.fields.

Example: {"name": "Vente d'été", "description": "Produits saisonniers pour l'été."}

Errors

  • 400 STORE_API_INVALID_COLLECTION_ID

    Collection id is not a valid UUID.

  • 400 STORE_API_INVALID_REQUEST_BODY

    Request body is not valid JSON.

  • 400 TRANSLATION_LOCALE_REQUIRED

    Locale is required.

  • 400 TRANSLATION_LOCALE_NOT_ENABLED

    Locale is not enabled for this store.

  • 400 TRANSLATION_DEFAULT_LOCALE_FORBIDDEN

    Translations cannot target the store's default locale.

  • 400 TRANSLATION_FIELD_NOT_TRANSLATABLE

    Field is not translatable for collections.

  • 400 TRANSLATION_FIELDS_REQUIRED

    At least one translated field is required.

  • 400 TRANSLATION_FIELD_VALUE_TOO_LONG

    A translated value exceeds its field limit.

  • 400 TRANSLATION_INVALID_RESOURCE_ID

    A Collection id is invalid.

  • 400 TRANSLATION_TOO_MANY_RESOURCES

    The request exceeds the translation batch resource cap.

  • 404 TRANSLATION_RESOURCE_NOT_FOUND

    Collection does not exist in this store.

  • 409 TRANSLATION_DUPLICATE_NAME_OR_SLUG

    Translated name or slug conflicts with another collection.

Batch get collection translations

GET read_products + read_translations

Fetch collection translations in batch.

Returns translated Collection fields for multiple collection ids in one locale. Fields without a translation in this locale are omitted from the response. An omitted field is not empty: shoppers see the store's base-language value, which the resource's own GET endpoint returns.

Path parameters

Name Type Description
locale required string

Enabled non-default store locale.

Example: fr

Query parameters

Name Type Description
ids required string

Comma-separated collection ids.

Example: 5ff7d4ea-3250-4a4d-9d26-07f64d917d31

Headers

Name Type Description
Authorization required string

Bearer Store API token.

Errors

  • 400 TRANSLATION_LOCALE_REQUIRED

    Locale is required.

  • 400 TRANSLATION_LOCALE_NOT_ENABLED

    Locale is not enabled for this store.

  • 400 TRANSLATION_DEFAULT_LOCALE_FORBIDDEN

    Translations cannot target the store's default locale.

  • 400 TRANSLATION_FIELD_NOT_TRANSLATABLE

    Field is not translatable for collections.

  • 400 TRANSLATION_FIELDS_REQUIRED

    At least one translated field is required.

  • 400 TRANSLATION_FIELD_VALUE_TOO_LONG

    A translated value exceeds its field limit.

  • 400 TRANSLATION_INVALID_RESOURCE_ID

    A Collection id is invalid.

  • 400 TRANSLATION_TOO_MANY_RESOURCES

    The request exceeds the translation batch resource cap.

  • 404 TRANSLATION_RESOURCE_NOT_FOUND

    Collection does not exist in this store.

  • 409 TRANSLATION_DUPLICATE_NAME_OR_SLUG

    Translated name or slug conflicts with another collection.

Batch set collection translations

PUT write_products + write_translations

Set collection translations in batch.

Writes translated Collection fields for multiple collection ids in one locale. Either every row is written or, if any row is invalid, none are.

Path parameters

Name Type Description
locale required string

Enabled non-default store locale.

Example: fr

Headers

Name Type Description
Authorization required string

Bearer Store API token.

Idempotency-Key string

Optional key for this translation write. Reuse it only with the same payload when repeating the request.

Body parameters

Name Type Description
translations required array<object>

Rows with id and fields. Allowed field keys come from contract.translation.fields.

Example: [{"id": "5ff7d4ea-3250-4a4d-9d26-07f64d917d31", "fields": {"name": "Vente d'été"}}]

Errors

  • 400 STORE_API_INVALID_REQUEST_BODY

    Request body is not valid JSON.

  • 400 STORE_API_INVALID_COLLECTION_ID

    One collection id is not a valid UUID.

  • 400 TRANSLATION_LOCALE_REQUIRED

    Locale is required.

  • 400 TRANSLATION_LOCALE_NOT_ENABLED

    Locale is not enabled for this store.

  • 400 TRANSLATION_DEFAULT_LOCALE_FORBIDDEN

    Translations cannot target the store's default locale.

  • 400 TRANSLATION_FIELD_NOT_TRANSLATABLE

    Field is not translatable for collections.

  • 400 TRANSLATION_FIELDS_REQUIRED

    At least one translated field is required.

  • 400 TRANSLATION_FIELD_VALUE_TOO_LONG

    A translated value exceeds its field limit.

  • 400 TRANSLATION_INVALID_RESOURCE_ID

    A Collection id is invalid.

  • 400 TRANSLATION_TOO_MANY_RESOURCES

    The request exceeds the translation batch resource cap.

  • 404 TRANSLATION_RESOURCE_NOT_FOUND

    Collection does not exist in this store.

  • 409 TRANSLATION_DUPLICATE_NAME_OR_SLUG

    Translated name or slug conflicts with another collection.

Get a collection metafield translation

GET read_products + read_translations

Fetch one translated collection custom-data value.

Resolves the definition by namespace and key, verifies that it is translatable and visible to the calling app, then returns the stored value for the requested enabled non-default language. Fields without a translation in this locale are omitted from the response. An omitted field is not empty: shoppers see the store's base-language value, which the resource's own GET endpoint returns.

Path parameters

Name Type Description
id required uuid

Collection id.

Example: 5ff7d4ea-3250-4a4d-9d26-07f64d917d31
namespace required string

Metafield definition namespace. URL-encode reserved path characters; for example app:<app-id> is sent as app%3A<app-id>.

Example: details
key required string

Metafield definition key.

Example: season
locale required string

Enabled non-default store locale.

Example: fr

Headers

Name Type Description
Authorization required string

Bearer Store API token.

Errors

  • 400 STORE_API_INVALID_COLLECTION_ID

    Collection id is not a valid UUID.

  • 404 COLLECTION_NOT_FOUND

    Collection does not exist in this store.

  • 404 METAFIELD_DEFINITION_NOT_FOUND

    The namespace and key do not identify an accessible Collection definition.

  • 400 TRANSLATION_FIELD_NOT_TRANSLATABLE

    The definition is not translatable or its value type cannot be translated.

  • 400 TRANSLATION_LOCALE_REQUIRED

    Locale is missing.

  • 400 TRANSLATION_LOCALE_NOT_ENABLED

    Locale is not enabled for this store.

  • 400 TRANSLATION_DEFAULT_LOCALE_FORBIDDEN

    The default language stores source values and cannot be used as a translation locale.

Set a collection metafield translation

PUT write_products + write_translations

Set or clear one translated collection custom-data value.

Writes the translated value using the same definition ownership, type, length, locale, audit, search-index, and webhook rules as the admin translation workflow. Send an empty value to clear this locale's translation. Send an explicit string in value; omit neither the field nor its value, and do not send null. An empty string clears the translation. For list.string, send a JSON-encoded string array with one translated item for each source item, in the same order.

Path parameters

Name Type Description
id required uuid

Collection id.

Example: 5ff7d4ea-3250-4a4d-9d26-07f64d917d31
namespace required string

Metafield definition namespace. URL-encode reserved path characters; for example app:<app-id> is sent as app%3A<app-id>.

Example: details
key required string

Metafield definition key.

Example: season
locale required string

Enabled non-default store locale.

Example: fr

Headers

Name Type Description
Authorization required string

Bearer Store API token.

Idempotency-Key string

Optional key for this translation write. Reuse it only with the same payload when repeating the request.

Body parameters

Name Type Description
value required string

Translated value. Send an empty string to delete the stored translation for this locale.

Example: Été

Errors

  • 400 STORE_API_INVALID_COLLECTION_ID

    Collection id is not a valid UUID.

  • 404 COLLECTION_NOT_FOUND

    Collection does not exist in this store.

  • 404 METAFIELD_DEFINITION_NOT_FOUND

    The namespace and key do not identify an accessible Collection definition.

  • 400 TRANSLATION_FIELD_NOT_TRANSLATABLE

    The definition is not translatable or its value type cannot be translated.

  • 400 TRANSLATION_LOCALE_REQUIRED

    Locale is missing.

  • 400 TRANSLATION_LOCALE_NOT_ENABLED

    Locale is not enabled for this store.

  • 400 TRANSLATION_DEFAULT_LOCALE_FORBIDDEN

    The default language stores source values and cannot be used as a translation locale.

  • 400 TRANSLATION_LIST_LENGTH_MISMATCH

    The translated list must have the same number of items as the source list.

Webhook events#

Subscribe to these events when your integration mirrors localized collections. Update and clear events identify the locale and changed fields. One write can emit both events when it sets some fields and clears others.

Collection translations updated

EVENT collections/translations/update App scope: read_products Staff permission: products:write

Fired when a collection's translations are added or updated for a locale.

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
locale string Selectable in the Payload builder
translation.name string Selectable in the Payload builder
translation.slug string Selectable in the Payload builder
translation.description string Selectable in the Payload builder
translation.seo_title string Selectable in the Payload builder
translation.seo_description string Selectable in the Payload builder
updated_at string Selectable in the Payload builder

Collection translations deleted

EVENT collections/translations/delete App scope: read_products Staff permission: products:write

Fired when a collection's translations are cleared for one or more fields in a locale.

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
locale string Selectable in the Payload builder
translation.name string Selectable in the Payload builder
translation.slug string Selectable in the Payload builder
translation.description string Selectable in the Payload builder
translation.seo_title string Selectable in the Payload builder
translation.seo_description string Selectable in the Payload builder
updated_at string Selectable in the Payload builder

Collection metafield translations updated

EVENT collection_metafields/translations/update App scope: read_products Staff permission: products:write

Fired when a collection metafield's translation is added or updated for a locale.

Payload fields

Field Type Description
metafield.collection_id string Always present
metafield.collection_name string Selectable in the Payload builder
metafield.collection_slug string Selectable in the Payload builder
metafield.definition_id string Always present
metafield.namespace string Selectable in the Payload builder
metafield.key string Selectable in the Payload builder
metafield.name string Selectable in the Payload builder
metafield.type string Selectable in the Payload builder
metafield.app_id string Selectable in the Payload builder
metafield.app_access string Selectable in the Payload builder
metafield.merchant_access string Selectable in the Payload builder
locale string Always present
translation.value string Selectable in the Payload builder
updated_at string Selectable in the Payload builder

Collection metafield translations deleted

EVENT collection_metafields/translations/delete App scope: read_products Staff permission: products:write

Fired when a collection metafield's translation is cleared for a locale, including when its collection is deleted.

Payload fields

Field Type Description
metafield.collection_id string Always present
metafield.collection_name string Selectable in the Payload builder
metafield.collection_slug string Selectable in the Payload builder
metafield.definition_id string Always present
metafield.namespace string Selectable in the Payload builder
metafield.key string Selectable in the Payload builder
metafield.name string Selectable in the Payload builder
metafield.type string Selectable in the Payload builder
metafield.app_id string Selectable in the Payload builder
metafield.app_access string Selectable in the Payload builder
metafield.merchant_access string Selectable in the Payload builder
locale string Selectable in the Payload builder
translation.value string Selectable in the Payload builder
updated_at string Selectable in the Payload builder