Manage SEO metadata for the pages listing brands, vendors, categories, or collections. These settings are separate from an individual resource's SEO. Address each list by page_type: brand_list, vendor_list, category_list, or collection_list.
Reads require read_products; writes require write_products. Translation calls also require the matching translation scope. Assigning a non-empty social image requires read_site_assets.
Updates preserve omitted fields. Empty text clears a field; social_image_id: null clears the image. Remove a field's translations before clearing its source text. Source edits mark translations as outdated but keep serving them until replaced or removed. Missing translations use the source value. List URLs follow the store's permalink settings. See List-page SEO translations for single-page and batch operations.
Endpoints#
Get list-page SEO
Get source SEO for a catalog list page.
pageType is the stable public identity. Tringify resolves the store-scoped row and never exposes its numeric database id.
Path parameters
| Name | Type | Description |
|---|---|---|
pageType
required
|
string |
Catalog list page. |
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.
-
400PAGE_SEO_PAGE_TYPE_INVALIDpageTypemust bebrand_list,vendor_list,category_list, orcollection_list. -
400PAGE_SEO_META_TITLE_INVALID_CHARSA title contains unsupported control characters.
-
400PAGE_SEO_META_TITLE_TOO_LONGA title exceeds the configured maximum.
-
400PAGE_SEO_META_DESCRIPTION_INVALID_CHARSA description contains unsupported control characters.
-
400PAGE_SEO_META_DESCRIPTION_TOO_LONGA description exceeds the configured maximum.
-
409TRANSLATION_SOURCE_FIELD_HAS_TRANSLATIONSRemove the field's translations before clearing its source value.
-
400INVALID_INPUTThe social image id is malformed, not an image, outside this store, or not a site asset.
Update list-page SEO
Update source SEO for a catalog list page.
This is a patch: omitted fields remain unchanged and an empty string clears a text field. To return a field to its generated default, send null for it or set its *_is_default flag to true; the flag wins over a value sent with it. The GET response carries the same flags, so sending it back unchanged keeps generated defaults generated instead of saving their current text. A source field with stored translations cannot be cleared until those translations are removed. Changing source text marks that field's translations outdated. Setting a non-empty social_image_id additionally requires read_site_assets and an image from this store's site-asset namespace.
Path parameters
| Name | Type | Description |
|---|---|---|
pageType
required
|
string |
Catalog list page. |
Headers
| Name | Type | Description |
|---|---|---|
Authorization
required
|
string |
Bearer Store API token. |
Body parameters
| Name | Type | Description |
|---|---|---|
seo_title
|
string|null |
Search-result title. Empty or null returns it to the generated default. |
seo_title_is_default
|
boolean |
|
seo_description
|
string|null |
Search-result description. Empty or null returns it to the generated default. |
seo_description_is_default
|
boolean |
|
social_title
|
string|null |
Social-share title. Empty or null returns it to the generated default. |
social_title_is_default
|
boolean |
|
social_description
|
string|null |
Social-share description. Empty or null returns it to the generated default. |
social_description_is_default
|
boolean |
|
social_image_id
|
string|null |
Site-asset image UUID. Empty string or null returns it to the default share image. |
social_image_is_default
|
boolean |
|
robots_index
|
boolean|null |
Whether search engines may index the page. Null returns it to the default, which is |
robots_index_is_default
|
boolean |
|
robots_follow
|
boolean|null |
Whether search engines may follow links on the page. Null returns it to the default. |
robots_follow_is_default
|
boolean |
|
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.
-
400PAGE_SEO_PAGE_TYPE_INVALIDpageTypemust bebrand_list,vendor_list,category_list, orcollection_list. -
400PAGE_SEO_META_TITLE_INVALID_CHARSA title contains unsupported control characters.
-
400PAGE_SEO_META_TITLE_TOO_LONGA title exceeds the configured maximum.
-
400PAGE_SEO_META_DESCRIPTION_INVALID_CHARSA description contains unsupported control characters.
-
400PAGE_SEO_META_DESCRIPTION_TOO_LONGA description exceeds the configured maximum.
-
409TRANSLATION_SOURCE_FIELD_HAS_TRANSLATIONSRemove the field's translations before clearing its source value.
-
400INVALID_INPUTThe social image id is malformed, not an image, outside this store, or not a site asset.
Webhook events#
Subscribe to source and translation events when your app mirrors list-page SEO. Source writes and their event commit in one transaction. Translation update and delete events identify the stable page_type and locale.
List-page SEO updated
Fired when SEO settings change for the public brand, vendor, or category list page. The payload identifies the list with page_type and carries its current source snapshot.
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.
robots_follow robots_index seo_description seo_title social_description social_image_id social_title
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. |
changed_fields |
array |
Always present
The source list-page SEO fields changed by this event. |
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. |