Blog List SEO

Read, update, translate, and subscribe to SEO metadata for the public blog index.

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 read_blog

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

  • 401 UNAUTHORIZED

    Authorization header missing, malformed, or token invalid/expired.

  • 402 SUBSCRIPTION_REQUIRED

    The store does not have an active or trialing subscription.

  • 403 STORE_API_SCOPE_REQUIRED

    Token is valid but lacks the required scope for this call.

  • 429 RATE_LIMITED

    The token's request allowance is exhausted. Retry after the Retry-After header.

Update Blog List SEO

PUT write_blog; read_site_assets only when assigning social_image_id

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.

Example: Stories from our store
seo_title_is_default boolean

true returns the search-result title to the generated default.

Example: false
seo_description string|null

Search-result description. Empty or null returns it to the generated default.

Example: News, guides, and updates.
seo_description_is_default boolean

true returns the search-result description to the generated default.

Example: false
social_title string|null

Social-share title. Empty or null returns it to the generated default.

Example: Our blog
social_title_is_default boolean

true returns the social-share title to the generated default.

Example: false
social_description string|null

Social-share description. Empty or null returns it to the generated default.

Example: Read our latest stories.
social_description_is_default boolean

true returns the social-share description to the generated default.

Example: false
social_image_id string|null

Site-asset image UUID. Empty string or null returns it to the default share image.

Example: 8f2a1c2b-9d4e-4a56-b789-0123456789ab
social_image_is_default boolean

true returns the social image to the default share image.

Example: false
robots_index boolean|null

Whether search engines may index the page. Null returns it to the default, which is false while the page lists nothing.

Example: true
robots_index_is_default boolean

true returns indexing to the default.

Example: false
robots_follow boolean|null

Whether search engines may follow links on the page. Null returns it to the default.

Example: true
robots_follow_is_default boolean

true returns link following to the default.

Example: false

Errors

  • 401 UNAUTHORIZED

    Authorization header missing, malformed, or token invalid/expired.

  • 402 SUBSCRIPTION_REQUIRED

    The store does not have an active or trialing subscription.

  • 403 STORE_API_SCOPE_REQUIRED

    Token is valid but lacks the required scope for this call.

  • 429 RATE_LIMITED

    The token's request allowance is exhausted. Retry after the Retry-After header.

  • 400 PAGE_SEO_META_TITLE_INVALID_CHARS

    A title contains unsupported control characters.

  • 400 PAGE_SEO_META_TITLE_TOO_LONG

    A title exceeds the configured maximum.

  • 400 PAGE_SEO_META_DESCRIPTION_INVALID_CHARS

    A description contains unsupported control characters.

  • 400 PAGE_SEO_META_DESCRIPTION_TOO_LONG

    A description exceeds the configured maximum.

  • 409 TRANSLATION_SOURCE_FIELD_HAS_TRANSLATIONS

    Remove the field's translations before clearing its source value.

  • 400 INVALID_INPUT

    The 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

EVENT blog_list_seo/update App scope: read_blog Staff permission: blog:write

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

EVENT blog_list_seo/translations/update App scope: read_blog Staff permission: blog:write

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

EVENT blog_list_seo/translations/delete App scope: read_blog Staff permission: blog:write

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.