Translate seo_title, seo_description, social_title, and social_description for an enabled language other than the store's source language. Images and robots settings are shared across languages. Supply strings; an empty string clears a translation. Omitted fields remain unchanged.
Save source text before adding its translation. Source edits mark translations outdated but keep serving them until replaced or removed. A missing translation falls back to the source field. Reads and writes require the corresponding resource and translation scopes shown on each endpoint.
Get list-page SEO translation
Get translated SEO for one list page and locale.
The locale must be enabled and cannot be the store's default language.
Path parameters
| Name | Type | Description |
|---|---|---|
pageType
required
|
string |
Catalog list page. |
locale
required
|
string |
Enabled non-default store locale. |
Headers
| Name | Type | Description |
|---|---|---|
Authorization
required
|
string |
Bearer Store API token. |
Errors
-
401UNAUTHORIZEDAuthorization header missing, malformed, or token invalid/expired.
-
402SUBSCRIPTION_REQUIREDThe store does not have an active or trialing subscription.
-
403STORE_API_SCOPE_REQUIREDToken is valid but lacks the required scope for this call.
-
429RATE_LIMITEDThe token's request allowance is exhausted. Retry after the Retry-After header.
-
400STORE_API_INVALID_REQUEST_BODYThe body has an invalid shape. Translation values must be strings.
-
400PAGE_SEO_PAGE_TYPE_INVALIDThe requested list page type is not supported.
-
400TRANSLATION_LOCALE_REQUIREDA locale is required.
-
400TRANSLATION_LOCALE_NOT_ENABLEDThe locale is not enabled for this store.
-
400TRANSLATION_DEFAULT_LOCALE_FORBIDDENThe source language cannot be a translation target.
-
400TRANSLATION_FIELD_NOT_TRANSLATABLEOnly the four SEO and social text fields can be translated.
-
400TRANSLATION_FIELDS_REQUIREDProvide at least one field.
-
400TRANSLATION_NO_SOURCE_TEXTSave source text before adding its translation.
-
404TRANSLATION_RESOURCE_NOT_FOUNDSave source SEO before writing translations for this page.
-
409TRANSLATION_MUTATION_CONFLICTThe idempotency key was already used for another translation change.
-
400PAGE_SEO_META_TITLE_INVALID_CHARSA translated title contains unsupported characters.
-
400PAGE_SEO_META_TITLE_TOO_LONGA translated title exceeds its limit.
-
400PAGE_SEO_META_DESCRIPTION_INVALID_CHARSA translated description contains unsupported characters.
-
400PAGE_SEO_META_DESCRIPTION_TOO_LONGA translated description exceeds its limit.
Set list-page SEO translation
Set or clear translated SEO fields for one list page.
Empty field values clear only that locale's translation. Writes are atomic.
Path parameters
| Name | Type | Description |
|---|---|---|
pageType
required
|
string |
Catalog list page. |
locale
required
|
string |
Enabled non-default store locale. |
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 translations. |
Errors
-
401UNAUTHORIZEDAuthorization header missing, malformed, or token invalid/expired.
-
402SUBSCRIPTION_REQUIREDThe store does not have an active or trialing subscription.
-
403STORE_API_SCOPE_REQUIREDToken is valid but lacks the required scope for this call.
-
429RATE_LIMITEDThe token's request allowance is exhausted. Retry after the Retry-After header.
-
400STORE_API_INVALID_REQUEST_BODYThe body has an invalid shape. Translation values must be strings.
-
400PAGE_SEO_PAGE_TYPE_INVALIDThe requested list page type is not supported.
-
400TRANSLATION_LOCALE_REQUIREDA locale is required.
-
400TRANSLATION_LOCALE_NOT_ENABLEDThe locale is not enabled for this store.
-
400TRANSLATION_DEFAULT_LOCALE_FORBIDDENThe source language cannot be a translation target.
-
400TRANSLATION_FIELD_NOT_TRANSLATABLEOnly the four SEO and social text fields can be translated.
-
400TRANSLATION_FIELDS_REQUIREDProvide at least one field.
-
400TRANSLATION_NO_SOURCE_TEXTSave source text before adding its translation.
-
404TRANSLATION_RESOURCE_NOT_FOUNDSave source SEO before writing translations for this page.
-
409TRANSLATION_MUTATION_CONFLICTThe idempotency key was already used for another translation change.
-
400PAGE_SEO_META_TITLE_INVALID_CHARSA translated title contains unsupported characters.
-
400PAGE_SEO_META_TITLE_TOO_LONGA translated title exceeds its limit.
-
400PAGE_SEO_META_DESCRIPTION_INVALID_CHARSA translated description contains unsupported characters.
-
400PAGE_SEO_META_DESCRIPTION_TOO_LONGA translated description exceeds its limit.
Batch get list-page SEO translations
Get translations for several catalog list pages.
Omit page_types to return brand_list, vendor_list, category_list, and collection_list. Otherwise pass a comma-separated subset; duplicates and unknown values are rejected.
Path parameters
| Name | Type | Description |
|---|---|---|
locale
required
|
string |
Enabled non-default store locale. |
Query parameters
| Name | Type | Description |
|---|---|---|
page_types
|
string |
Comma-separated list-page types. |
Headers
| Name | Type | Description |
|---|---|---|
Authorization
required
|
string |
Bearer Store API token. |
Errors
-
401UNAUTHORIZEDAuthorization header missing, malformed, or token invalid/expired.
-
402SUBSCRIPTION_REQUIREDThe store does not have an active or trialing subscription.
-
403STORE_API_SCOPE_REQUIREDToken is valid but lacks the required scope for this call.
-
429RATE_LIMITEDThe token's request allowance is exhausted. Retry after the Retry-After header.
-
400STORE_API_INVALID_REQUEST_BODYThe body has an invalid shape. Translation values must be strings.
-
400PAGE_SEO_PAGE_TYPE_INVALIDThe requested list page type is not supported.
-
400TRANSLATION_LOCALE_REQUIREDA locale is required.
-
400TRANSLATION_LOCALE_NOT_ENABLEDThe locale is not enabled for this store.
-
400TRANSLATION_DEFAULT_LOCALE_FORBIDDENThe source language cannot be a translation target.
-
400TRANSLATION_FIELD_NOT_TRANSLATABLEOnly the four SEO and social text fields can be translated.
-
400TRANSLATION_FIELDS_REQUIREDProvide at least one field.
-
400TRANSLATION_NO_SOURCE_TEXTSave source text before adding its translation.
-
404TRANSLATION_RESOURCE_NOT_FOUNDSave source SEO before writing translations for this page.
-
409TRANSLATION_MUTATION_CONFLICTThe idempotency key was already used for another translation change.
-
400PAGE_SEO_META_TITLE_INVALID_CHARSA translated title contains unsupported characters.
-
400PAGE_SEO_META_TITLE_TOO_LONGA translated title exceeds its limit.
-
400PAGE_SEO_META_DESCRIPTION_INVALID_CHARSA translated description contains unsupported characters.
-
400PAGE_SEO_META_DESCRIPTION_TOO_LONGA translated description exceeds its limit.
Batch set list-page SEO translations
Set translations for several catalog list pages atomically.
The request accepts at most one row for each supported page type. If any row is invalid, none are written.
Path parameters
| Name | Type | Description |
|---|---|---|
locale
required
|
string |
Enabled non-default store locale. |
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 shaped as {page_type, fields}. |
Errors
-
401UNAUTHORIZEDAuthorization header missing, malformed, or token invalid/expired.
-
402SUBSCRIPTION_REQUIREDThe store does not have an active or trialing subscription.
-
403STORE_API_SCOPE_REQUIREDToken is valid but lacks the required scope for this call.
-
429RATE_LIMITEDThe token's request allowance is exhausted. Retry after the Retry-After header.
-
400STORE_API_INVALID_REQUEST_BODYThe body has an invalid shape. Translation values must be strings.
-
400PAGE_SEO_PAGE_TYPE_INVALIDThe requested list page type is not supported.
-
400TRANSLATION_LOCALE_REQUIREDA locale is required.
-
400TRANSLATION_LOCALE_NOT_ENABLEDThe locale is not enabled for this store.
-
400TRANSLATION_DEFAULT_LOCALE_FORBIDDENThe source language cannot be a translation target.
-
400TRANSLATION_FIELD_NOT_TRANSLATABLEOnly the four SEO and social text fields can be translated.
-
400TRANSLATION_FIELDS_REQUIREDProvide at least one field.
-
400TRANSLATION_NO_SOURCE_TEXTSave source text before adding its translation.
-
404TRANSLATION_RESOURCE_NOT_FOUNDSave source SEO before writing translations for this page.
-
409TRANSLATION_MUTATION_CONFLICTThe idempotency key was already used for another translation change.
-
400PAGE_SEO_META_TITLE_INVALID_CHARSA translated title contains unsupported characters.
-
400PAGE_SEO_META_TITLE_TOO_LONGA translated title exceeds its limit.
-
400PAGE_SEO_META_DESCRIPTION_INVALID_CHARSA translated description contains unsupported characters.
-
400PAGE_SEO_META_DESCRIPTION_TOO_LONGA translated description exceeds its limit.
Webhook events#
Subscribe to these events when your integration mirrors localized list-page seo. Update and clear events identify the locale and changed fields. One write can emit both events when it sets some fields and clears others.
List-page SEO translations updated
Fired when translated SEO fields are added or updated for the public brand, vendor, or category list page in a locale. The payload identifies the list with page_type and carries only the translated fields that changed.
Payload fields
| Field | Type | Description |
|---|---|---|
list_page_seo.id |
integer |
Always present
The stable storage id for this list-page SEO record. |
list_page_seo.page_type |
string |
Always present
The public catalog list being described: brand_list, vendor_list, category_list, or collection_list. |
list_page_seo.seo_title |
string |
Selectable in the Payload builder
The list page's SEO title in the store's default language. |
list_page_seo.seo_description |
string |
Selectable in the Payload builder
The list page's SEO description in the store's default language. |
list_page_seo.social_title |
string |
Selectable in the Payload builder
The default-language social sharing title override. |
list_page_seo.social_description |
string |
Selectable in the Payload builder
The default-language social sharing description override. |
list_page_seo.social_image_id |
string |
Selectable in the Payload builder
The assigned site-asset image id, or null when no override is assigned. |
list_page_seo.robots_index |
boolean |
Selectable in the Payload builder
Whether search engines may index this list page. |
list_page_seo.robots_follow |
boolean |
Selectable in the Payload builder
Whether search engines may follow links from this list page. |
list_page_seo.updated_at |
string |
Selectable in the Payload builder
When the source list-page SEO settings last changed, in the store's timezone. |
locale |
string |
Selectable in the Payload builder
The locale whose list-page SEO translation changed. |
translation.seo_title |
string |
Selectable in the Payload builder
The translated SEO title; an empty string on the delete event means it was removed. |
translation.seo_description |
string |
Selectable in the Payload builder
The translated SEO description; an empty string on the delete event means it was removed. |
translation.social_title |
string |
Selectable in the Payload builder
The translated social title; an empty string on the delete event means it was removed. |
translation.social_description |
string |
Selectable in the Payload builder
The translated social description; an empty string on the delete event means it was removed. |
updated_at |
string |
Selectable in the Payload builder
When this locale's list-page SEO translation changed, in the store's timezone. |
List-page SEO translations deleted
Fired when translated SEO fields are cleared for the public brand, vendor, or category list page in a locale. The payload identifies the list with page_type and carries the cleared fields as empty strings.
Payload fields
| Field | Type | Description |
|---|---|---|
list_page_seo.id |
integer |
Always present
The stable storage id for this list-page SEO record. |
list_page_seo.page_type |
string |
Always present
The public catalog list being described: brand_list, vendor_list, category_list, or collection_list. |
list_page_seo.seo_title |
string |
Selectable in the Payload builder
The list page's SEO title in the store's default language. |
list_page_seo.seo_description |
string |
Selectable in the Payload builder
The list page's SEO description in the store's default language. |
list_page_seo.social_title |
string |
Selectable in the Payload builder
The default-language social sharing title override. |
list_page_seo.social_description |
string |
Selectable in the Payload builder
The default-language social sharing description override. |
list_page_seo.social_image_id |
string |
Selectable in the Payload builder
The assigned site-asset image id, or null when no override is assigned. |
list_page_seo.robots_index |
boolean |
Selectable in the Payload builder
Whether search engines may index this list page. |
list_page_seo.robots_follow |
boolean |
Selectable in the Payload builder
Whether search engines may follow links from this list page. |
list_page_seo.updated_at |
string |
Selectable in the Payload builder
When the source list-page SEO settings last changed, in the store's timezone. |
locale |
string |
Selectable in the Payload builder
The locale whose list-page SEO translation changed. |
translation.seo_title |
string |
Selectable in the Payload builder
The translated SEO title; an empty string on the delete event means it was removed. |
translation.seo_description |
string |
Selectable in the Payload builder
The translated SEO description; an empty string on the delete event means it was removed. |
translation.social_title |
string |
Selectable in the Payload builder
The translated social title; an empty string on the delete event means it was removed. |
translation.social_description |
string |
Selectable in the Payload builder
The translated social description; an empty string on the delete event means it was removed. |
updated_at |
string |
Selectable in the Payload builder
When this locale's list-page SEO translation changed, in the store's timezone. |