> This page is for Developer.

> For clean Markdown of any page, append .md to the page URL.
> For a complete documentation index, see https://docs.bigcommerce.com/llms.txt.
> For AI client integration (Claude Code, Cursor, etc.), connect to the MCP server at https://docs.bigcommerce.com/_mcp/server.

# Product SEO Information

[*International Enhancements for Multi-Storefront*](/developer/docs/admin/multi-storefront/msf-international-enhancements/overview)

> **Note**
>
> This feature is currently available for Performance plan stores and Partner Sandboxes. If the feature is not working as expected, please contact technical support, as the feature likely needs to be enabled for the individual store.
> If you are interested in upgrading to the Performance plan, [contact our sales team](https://bigcommerce.com/contact-sales/).

Using the Catalog features of the Admin API, you can set and query product SEO information, for example, page title and meta description.

You can perform the following:

* [Set global product SEO information](#set-product-seo-information-at-the-global-level) for the catalog. Channels inherit these by default.
* [Create overrides for a channel and channel locale](#set-product-seo-information-for-a-locale) using the `overridesForLocale` mutation.
* [Remove overrides for a channel and channel locale](#remove-product-seo-information-for-a-locale). A channel then inherits global values.
* [Query product SEO information](#query-product-seo-information), those set at the global level and the overrides.

For a full schema, see the [GraphQL Admin API reference](/developer/api-reference/graphql/account/overview).

## Input fields

Setting or removing information requires that you specify ID fields in the input. For more information on how to specify ID fields, see [Input fields](/developer/docs/admin/multi-storefront/msf-international-enhancements/overview#input-fields).

## Set product SEO information at the global level

The following example sets global product SEO information for the store, from which channels inherit by default. You can set the title and meta description for the product page.

#### Request

**`Example mutation: Set product SEO information globally`**

```graphql title="Example mutation: Set product SEO information globally"
POST https://api.bigcommerce.com/stores/{{STORE_HASH}}/graphql
X-Auth-Token: {{ACCESS_TOKEN}}
Content-Type: application/json
Accept: application/json

mutation (
  $input: SetProductSeoInformationInput!
) {
  product {
    setProductSeoInformation(input: $input) {
      product {
        id
        seoInformation {
          pageTitle
          metaDescription
        }
      }
    }
  }
}
```

**`GraphQL variables`**

```json title="GraphQL variables"
{
  "input": {
    "productId": "bc/store/product/111",
    "data": {
      "pageTitle": "Global page title",
      "metaDescription": "Global meta description"
    }
  }
}
```

#### Response

**`Example mutation: Set product SEO information at the global level`**

```json title="Example mutation: Set product SEO information at the global level"
{
  "data": {
    "product": {
      "setProductSeoInformation": {
        "product": {
          "id": "bc/store/product/111",
          "seoInformation": {
            "pageTitle": "Journal",
            "metaDescription": "journal book"
          }
        }
      }
    }
  }
}
```

## Set product SEO information for a locale

The following example sets product SEO information for the specified storefront channel and locale within the channel. These will override global store information. You can set the title and meta description for the product page.

#### Request

**`Example mutation: Set product SEO information for a locale`**

```graphql title="Example mutation: Set product SEO information for a locale"
POST https://api.bigcommerce.com/stores/{{STORE_HASH}}/graphql
X-Auth-Token: {{ACCESS_TOKEN}}
Content-Type: application/json
Accept: application/json

mutation (
  $input: SetProductSeoInformationInput!
) {
  product {
    setProductSeoInformation(input: $input) {
      product {
        id
        overridesForLocale (localeContext: { channelId: "bc/store/channel/2", locale: "fr" }) {
          seoInformation {
            pageTitle
            metaDescription
          }
        }
      }
    }
  }
}
```

**`GraphQL variables`**

```json title="GraphQL variables"
{                                           
  "input": {                                
    "productId": "bc/store/product/111",    
    "localeContext": {
      "channelId": "bc/store/channel/2",      
      "locale": "fr"
    },                       
    "data": {                               
      "pageTitle": "Page title override FR",
      "metaDescription": "Meta description override FR"
    }                                                       
  }
}
```

#### Response

**`Example mutation: Set product SEO information for a locale`**

```json title="Example mutation: Set product SEO information for a locale"
{
  "data": {
    "product": {
      "setProductSeoInformation": {
        "product": {
          "id": "bc/store/product/111",
          "overridesForLocale": {
            "seoInformation": {
              "pageTitle": "Page title override FR",
              "metaDescription": "Meta description override FR"
            }
          }
        }
      }
    }
  }
}
```

## Remove product SEO information for a locale

The following example removes product SEO information for the specified channel and locale.

Omitting the `overridesToRemove` field from the input removes *all* overrides for product SEO information from the locale.

#### Request

**`Example mutation: Remove product SEO information for a locale`**

```graphql title="Example mutation: Remove product SEO information for a locale"
POST https://api.bigcommerce.com/stores/{{STORE_HASH}}/graphql
X-Auth-Token: {{ACCESS_TOKEN}}
Content-Type: application/json
Accept: application/json

mutation (
  $input: RemoveProductSeoInformationOverridesInput!
) {
  product {
    removeProductSeoInformationOverrides(input: $input) {
      product {
        id
        overridesForLocale (localeContext: { channelId: "bc/store/channel/2", locale: "fr" }) {
          seoInformation {
            pageTitle
            metaDescription
          }
        }
      }
    }
  }
}
```

**`GraphQL variables`**

```json title="GraphQL variables"
{
  "input": {
    "productId": "bc/store/product/111",
    "localeContext": {
      "channelId": "bc/store/channel/2",      
      "locale": "fr"
    },  
    "overridesToRemove": ["PRODUCT_PAGE_TITLE_FIELD"]
  }
}
```

#### Response

**`Example mutation: Remove product SEO information for a locale`**

```json title="Example mutation: Remove product SEO information for a locale"
{
  "data": {
    "product": {
      "removeProductSeoInformationOverrides": {
        "product": {
          "id": "bc/store/product/111",
          "overridesForLocale": {
            "seoInformation": {
              "pageTitle": "Page title override FR",
              "metaDescription": "Meta description override FR"
            }
          }
        }
      }
    }
  }
}
```

## Query product SEO information

The following example retrieves product SEO information. You can retrieve global information for the store and overrides for the specified channel and locale.

#### Request

**`Example query: Get product SEO information`**

```graphql title="Example query: Get product SEO information"
POST https://api.bigcommerce.com/stores/{{STORE_HASH}}/graphql
X-Auth-Token: {{ACCESS_TOKEN}}
Content-Type: application/json
Accept: application/json

query {
  store {
    product (id: "bc/store/product/111") {
      id
      seoInformation {
        pageTitle
        metaDescription
      }
      overridesForLocale(localeContext: { channelId: "bc/store/channel/2", locale: "fr" }) {
        seoInformation {
          pageTitle
          metaDescription
        }
      }
    }
  }
}
```

#### Response

**`Example query: Get product SEO information`**

```json title="Example query: Get product SEO information"
{
  "data": {
    "store": {
      "product": {
        "id": "bc/store/product/111",
        "seoInformation": {
          "pageTitle": "Example global page title",
          "metaDescription": "Example global meta description"
        },
        "overridesForLocale": {
          "seoInformation": {
            "pageTitle": "Page title override FR",
            "metaDescription": "Meta description override FR"
          }
        }
      }
    }
  }
}
```

> **Note**
>
> * The `id` field contains the product's global ID that you can retrieve from the [Get all products](/developer/api-reference/rest/admin/catalog/products/get-products) endpoint. For example, a product with a global ID of 111 will have an `id` of `"bc/store/product/111"`.
> * The `channelId` field contains the channel's global ID that you can retrieve from the [Get all channels](/developer/api-reference/rest/admin/management/channels/get-channels) endpoint. For example, a channel with a global ID of 2 will have a `channelId` of `"bc/store/channel/2"`.