Tag translations

Translate tag names and slugs through the Store API.

A translated tag name labels storefront filters. Its translated slug adds localized search terms for products with that tag. Filters still use the original tag slug as their value, and tags have no landing pages.

Get tag translation

GET read_products + read_translations

Fetch one tag translation.

Returns the stored name translation for one tag in the selected locale, with is_outdated. Tag slugs are not translatable: tags have no pages and filters match the source slug. 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 integer

Tag ID.

Example: 7
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_TAG_ID

    Tag ID is invalid.

  • 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_RESOURCE_ID_NOT_IN_STORE

    Tag does not exist in this store.

Set tag translation

PUT write_products + write_translations

Set one tag translation.

Only name is translatable; a tag's slug stays the same in every language. Set name to an empty string to remove its translation.

Path parameters

Name Type Description
id required integer

Tag ID.

Example: 7
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. The only allowed field is name.

Example: {"name": "Soldes d’été"}

Errors

  • 400 STORE_API_INVALID_TAG_ID

    Tag ID is invalid.

  • 400 STORE_API_INVALID_REQUEST_BODY

    Request body must be a JSON object containing only documented fields; error.details.field identifies an unknown field.

  • 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_FIELDS_REQUIRED

    Each tag row must contain a translated name.

  • 400 TRANSLATION_FIELD_NOT_TRANSLATABLE

    A field is not translatable for tags; only name is, so sending slug returns this error.

  • 400 TRANSLATION_TOO_MANY_FIELDS

    The request exceeds the translation field limit.

  • 400 TRANSLATION_STAGING_INVALID_CONTROL_CHARS

    A translated value contains unsupported control characters.

  • 400 TRANSLATION_FIELD_VALUE_TOO_LONG

    A translated value exceeds the overall translation value limit.

  • 400 TRANSLATION_FIELD_EXCEEDS_BYTE_LIMIT

    A translated value exceeds the field's length limit.

  • 400 TRANSLATION_RESOURCE_ID_NOT_IN_STORE

    Tag does not exist in this store.

  • 409 TAG_DUPLICATE

    Translated name conflicts with another tag in this locale.

  • 409 TRANSLATION_DUPLICATE_NAME_OR_SLUG

    Translated name conflicted with another tag during the write.

Batch get tag translations

GET read_products + read_translations

Fetch tag translations in batch.

Returns a resources entry keyed by tag:{id} for each requested tag. A tag without stored translations has an empty object. 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 tag IDs.

Example: 7,11

Headers

Name Type Description
Authorization required string

Bearer Store API token.

Errors

  • 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_RESOURCE_ID_REQUIRED

    At least one tag ID is required.

  • 400 TRANSLATION_INVALID_RESOURCE_ID

    A tag ID is invalid.

  • 400 TRANSLATION_RESOURCE_ID_NOT_IN_STORE

    A tag does not exist in this store.

  • 400 TRANSLATION_TOO_MANY_RESOURCES

    The request exceeds the translation batch resource limit.

Batch set tag translations

PUT write_products + write_translations

Set tag translations in batch.

Writes translations for multiple tags in one locale. The whole request succeeds or fails together; if any row is invalid, none are saved.

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. The only allowed field key is name.

Example: [{"id": 7, "fields": {"name": "Soldes d’été"}}]

Errors

  • 400 STORE_API_INVALID_REQUEST_BODY

    Request body must be a JSON object containing only documented fields; error.details.field identifies an unknown field.

  • 400 TRANSLATION_NO_WRITES_PROVIDED

    At least one tag translation row is required.

  • 400 TRANSLATION_INVALID_RESOURCE_ID

    A tag ID is invalid.

  • 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_FIELDS_REQUIRED

    Each tag row must contain a translated name.

  • 400 TRANSLATION_FIELD_NOT_TRANSLATABLE

    A field is not translatable for tags; only name is, so sending slug returns this error.

  • 400 TRANSLATION_TOO_MANY_FIELDS

    The request exceeds the translation field limit.

  • 400 TRANSLATION_STAGING_INVALID_CONTROL_CHARS

    A translated value contains unsupported control characters.

  • 400 TRANSLATION_FIELD_VALUE_TOO_LONG

    A translated value exceeds the overall translation value limit.

  • 400 TRANSLATION_FIELD_EXCEEDS_BYTE_LIMIT

    A translated value exceeds the field's length limit.

  • 400 TRANSLATION_RESOURCE_ID_NOT_IN_STORE

    Tag does not exist in this store.

  • 409 TAG_DUPLICATE

    Translated name conflicts with another tag in this locale.

  • 409 TRANSLATION_DUPLICATE_NAME_OR_SLUG

    Translated name conflicted with another tag during the write.

Webhook events#

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

Tag translations updated

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

Fired when a tag's translations are added or updated for a locale. The payload contains only the fields that changed. A mixed write that updates some translated fields and clears others fires both translation events. Translation writes do not fire tags/update.

Payload fields

Field Type Description
tag.id integer Always present

The stable product tag ID.

tag.name string Selectable in the Payload builder

The merchant-facing tag name.

tag.slug string Selectable in the Payload builder

The tag's URL-safe identifier.

tag.product_count integer Selectable in the Payload builder

The number of products currently assigned to the tag.

tag.created_at string Selectable in the Payload builder

When the tag was created.

tag.updated_at string Selectable in the Payload builder

When the tag's name or slug last changed.

tag.translations_updated_at string Selectable in the Payload builder

When any translation for the tag last changed, or null when none exist.

locale string Selectable in the Payload builder

The locale whose tag translation changed.

translation.name string Selectable in the Payload builder

The updated translated tag name, when present.

updated_at string Selectable in the Payload builder

When this locale's tag translation changed.

Tag translations deleted

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

Fired when a tag's translations are cleared for one or more fields in a locale, including when the tag itself is deleted. A mixed write that updates some translated fields and clears others fires both translation events. Translation writes do not fire tags/update.

Payload fields

Field Type Description
tag.id integer Always present

The stable product tag ID.

tag.name string Selectable in the Payload builder

The merchant-facing tag name.

tag.slug string Selectable in the Payload builder

The tag's URL-safe identifier.

tag.product_count integer Selectable in the Payload builder

The number of products currently assigned to the tag.

tag.created_at string Selectable in the Payload builder

When the tag was created.

tag.updated_at string Selectable in the Payload builder

When the tag's name or slug last changed.

tag.translations_updated_at string Selectable in the Payload builder

When any translation for the tag last changed, or null when none exist.

locale string Selectable in the Payload builder

The locale whose tag translation changed.

translation.name string Selectable in the Payload builder

An empty string marks a cleared name translation.

updated_at string Selectable in the Payload builder

When this locale's tag translation changed.