Manage search-engine, social-share, and robots metadata for the blog index. This is separate from SEO on individual posts. Reads require read_blog; writes require write_blog. Assigning a non-empty social image also requires read_site_assets.
Updates preserve omitted fields. Empty text clears a field, and social_image_id: null clears the image. Remove a field's translations before clearing its source text. Source edits mark translations as outdated; those translations remain visible until replaced or removed.
Translation calls require the matching blog and translation scopes. A field without a translation shows its base-language source text. The blog-index URL follows the store's permalink settings. See Blog List SEO translations for single-locale reads and writes.
Endpoints#
Get Blog List SEO
Get source SEO for the public blog index.
Returns the fixed blog_list resource and never exposes its database row id.
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.
Update Blog List SEO
Update source SEO for the public blog index.
This is a patch. Empty text clears that field. Remove a source field’s translations before clearing it. A non-empty social_image_id additionally requires read_site_assets and a site-asset image from this store.
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_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 an integration mirrors Blog List SEO. Events identify the fixed blog_list page type and, for translations, the affected locale.
Blog List SEO updated
Fired when source SEO settings change for the public blog index.
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 |
|---|---|---|
blog_list_seo.page_type |
string |
Always present
The stable public blog-index identity, blog_list. |
blog_list_seo.seo_title |
string |
Selectable in the Payload builder
The blog index SEO title in the store's default language. |
blog_list_seo.seo_description |
string |
Selectable in the Payload builder
The blog index SEO description in the store's default language. |
blog_list_seo.social_title |
string |
Selectable in the Payload builder
The default-language social sharing title override. |
blog_list_seo.social_description |
string |
Selectable in the Payload builder
The default-language social sharing description override. |
blog_list_seo.social_image_id |
string |
Selectable in the Payload builder
The assigned site-asset image id, or null when no override is assigned. |
blog_list_seo.robots_index |
boolean |
Selectable in the Payload builder
Whether search engines may index the blog index. |
blog_list_seo.robots_follow |
boolean |
Selectable in the Payload builder
Whether search engines may follow links from the blog index. |
blog_list_seo.updated_at |
string |
Selectable in the Payload builder
When the source blog-index SEO settings last changed. |
changed_fields |
array |
Always present
The source Blog List SEO fields changed by this event. |
Blog List SEO translations updated
Fired when translated SEO fields are added or updated for the public blog index in a locale.
Payload fields
| Field | Type | Description |
|---|---|---|
blog_list_seo.page_type |
string |
Always present
The stable public blog-index identity, blog_list. |
blog_list_seo.seo_title |
string |
Selectable in the Payload builder
The blog index SEO title in the store's default language. |
blog_list_seo.seo_description |
string |
Selectable in the Payload builder
The blog index SEO description in the store's default language. |
blog_list_seo.social_title |
string |
Selectable in the Payload builder
The default-language social sharing title override. |
blog_list_seo.social_description |
string |
Selectable in the Payload builder
The default-language social sharing description override. |
blog_list_seo.social_image_id |
string |
Selectable in the Payload builder
The assigned site-asset image id, or null when no override is assigned. |
blog_list_seo.robots_index |
boolean |
Selectable in the Payload builder
Whether search engines may index the blog index. |
blog_list_seo.robots_follow |
boolean |
Selectable in the Payload builder
Whether search engines may follow links from the blog index. |
blog_list_seo.updated_at |
string |
Selectable in the Payload builder
When the source blog-index SEO settings last changed. |
locale |
string |
Always present
The locale whose Blog List SEO translation changed. |
translation.seo_title |
string |
Selectable in the Payload builder
The translated SEO title; empty on delete means it was removed. |
translation.seo_description |
string |
Selectable in the Payload builder
The translated SEO description; empty on delete means it was removed. |
translation.social_title |
string |
Selectable in the Payload builder
The translated social title; empty on delete means it was removed. |
translation.social_description |
string |
Selectable in the Payload builder
The translated social description; empty on delete means it was removed. |
updated_at |
string |
Selectable in the Payload builder
When this locale's Blog List SEO translation changed. |
Blog List SEO translations deleted
Fired when translated SEO fields are cleared for the public blog index in a locale.
Payload fields
| Field | Type | Description |
|---|---|---|
blog_list_seo.page_type |
string |
Always present
The stable public blog-index identity, blog_list. |
blog_list_seo.seo_title |
string |
Selectable in the Payload builder
The blog index SEO title in the store's default language. |
blog_list_seo.seo_description |
string |
Selectable in the Payload builder
The blog index SEO description in the store's default language. |
blog_list_seo.social_title |
string |
Selectable in the Payload builder
The default-language social sharing title override. |
blog_list_seo.social_description |
string |
Selectable in the Payload builder
The default-language social sharing description override. |
blog_list_seo.social_image_id |
string |
Selectable in the Payload builder
The assigned site-asset image id, or null when no override is assigned. |
blog_list_seo.robots_index |
boolean |
Selectable in the Payload builder
Whether search engines may index the blog index. |
blog_list_seo.robots_follow |
boolean |
Selectable in the Payload builder
Whether search engines may follow links from the blog index. |
blog_list_seo.updated_at |
string |
Selectable in the Payload builder
When the source blog-index SEO settings last changed. |
locale |
string |
Always present
The locale whose Blog List SEO translation changed. |
translation.seo_title |
string |
Selectable in the Payload builder
The translated SEO title; empty on delete means it was removed. |
translation.seo_description |
string |
Selectable in the Payload builder
The translated SEO description; empty on delete means it was removed. |
translation.social_title |
string |
Selectable in the Payload builder
The translated social title; empty on delete means it was removed. |
translation.social_description |
string |
Selectable in the Payload builder
The translated social description; empty on delete means it was removed. |
updated_at |
string |
Selectable in the Payload builder
When this locale's Blog List SEO translation changed. |