> 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 URL

[*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 URLs for a store or a locale within a storefront channel.

Perform the following:

* [Set product URLs](#set-product-url-at-the-global-level) for the store. Channels inherit these by default.
* [Create overrides for a channel's locale](#set-product-url-for-a-locale) using the `overridesForLocale` mutation. The product URL for the locale overrides the global value.
* [Remove overrides for a channel's locale](#remove-product-url-for-a-locale). The product URL then defaults to its global store value.
* [Query product URL](#query-product-url), 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 URL at the global level

The following example sets a product's URL for a store, from which channels inherit by default.

#### Request

**`Example mutation: Set product URL at the global level`**

```graphql title="Example mutation: Set product URL at the global level"
POST https://api.bigcommerce.com/stores/{{STORE_HASH}}/graphql
X-Auth-Token: {{ACCESS_TOKEN}}
Content-Type: application/json
Accept: application/json

mutation ($input: SetProductUrlPathInput!) {
  product {
    setProductUrlPath (input: $input) {
      product {
        id
        urlPath {
          path
        }
      }
    }
  }
}
```

**`GraphQL variables`**

```json title="GraphQL variables"
{
  "input": {
    "productId": "bc/store/product/111",
    "data": {
      "path": "/global-product-111"
    }
  }
}
```

#### Response

**`Example mutation: Set product URL at the global level`**

```json title="Example mutation: Set product URL at the global level"
{
  "data": {
    "product": {
      "setProductUrlPath": {
        "product": {
          "id": "bc/store/product/111",
          "urlPath": {
            "path": "/overrides-product-111"
          }
        }
      }
    }
  }
}    
```

## Set product URL for a locale

The following example sets a product's URL for the locale within a storefront channel. These settings override global store information.

#### Request

**`Example mutation: Set product URL for a locale`**

```graphql title="Example mutation: Set product URL 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: SetProductUrlPathInput!) {
  product {
    setProductUrlPath (input: $input) {
      product {
        id
        overridesForLocale (localeContext: { channelId: "bc/store/channel/2", locale: "uk" }) {
          urlPath {
            path
          }
        }
      }
    }
  }
}
```

**`GraphQL variables`**

```json title="GraphQL variables"
{
  "input": {
    "productId": "bc/store/product/111",
    "localeContext": {
      "channelId": "bc/store/channel/2",
      "locale": "uk"
    },
    "data": {
      "path": "/overrides-product-111"
    }
  }
}
```

#### Response

**`Example mutation: Set product URL for a locale`**

```json title="Example mutation: Set product URL for a locale"
{
  "data": {
    "product": {
      "setProductUrlPath": {
        "product": {
          "id": "bc/store/product/111",
          "overridesForLocale": {
            "urlPath": {
              "path": "/overrides-product-111"
            }
          }
        }
      }
    }
  }
}
```

## Remove product URL for a locale

The following example removes the overrides for a product's URL. This mutation removes the overrides for the locale within the storefront channel, and the product URL defaults to its global store value.

#### Request

**`Example mutation: Remove product URL for a locale`**

```graphql title="Example mutation: Remove product URL 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: RemoveProductUrlPathOverrideInput!) {
  product {
    removeProductUrlPathOverride (input: $input) {
      product {
        id
        urlPath {
          path
        }
      }
    }
  }
}
```

**`GraphQL variables`**

```json title="GraphQL variables"
{
  "input": {
    "productId": "b/store/product/111",
    "localeContext": {
      "channelId": "bc/store/channel/2",
      "locale": "uk"
    }
  }
}
```

#### Response

**`Example mutation: Remove product URL for a locale`**

```json title="Example mutation: Remove product URL for a locale"
{
  "data": {
    "product": {
      "removeProductUrlPathOverride": {
        "product": {
          "id": "bc/store/product/111",
          "urlPath": {
            "path": "/overrides-product-111"
          }
        }
      }
    }
  }
}
```

## Query product URL

The following example retrieves a product's URL. You can retrieve global information for the store and overrides for a locale within a storefront channel.

#### Request

**`Example query: Get product URL for a product`**

```graphql title="Example query: Get product URL for a product"
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
      urlPath {
        path
      }
      overridesForLocale (localeContext: { channelId: "bc/store/channel/2", locale: "uk" }) {
        urlPath {
          path
        }
      }
    }
  }
}
```

#### Response

**`Example mutation: Get product URL for a product`**

```json title="Example mutation: Get product URL for a product"
{
  "data": {
    "store": {
      "product": {
        "id": "bc/store/product/111",
        "urlPath": {
          "path": "/global-product-111",
        },
        "overridesForLocale": {
          "urlPath": {
            "path": "/overrides-product-111"
          }
        }
      }
    }
  }
}
```