Webflow localization provides an end-to-end solution for adapting your site for a global audience. The API gives you programmatic control over localizing both dynamic CMS Content and Static Page Content.
This guide covers the core concepts of CMS localization.
Understanding a few key concepts is essential for working with localization via the API. At its core, a single CMS item becomes a group of item variants when you add locales.
When you create an item in multiple locales, all variants are linked by a shared itemId, which represents the entire item group.
The cmsLocaleId is a unique locale identifier when working with CMS resources. Always include it when creating, updating, and retrieving localized CMS items.
To get the localeId and cmsLocaleId for your site’s configured locales, use the Get Site endpoint. The response will include a locales object containing the primary locale and any secondary locales. Before using these endpoints, you must first enable localization in the Site settings within the Designer.
You can create and update localized CMS items via the API, as well as independently publish items in each locale.
Creating a new localized item is a two-step process:
Create items across all locales
Call the Create Items endpoint with an array of cmsLocaleIds for every locale you want to target. Provide a single fieldData object containing the content for the primary locale. The API creates a unique item variant for each specified locale, all linked by a shared itemId and populated with the initial content.
Update each variant with translated content
After creating the locale-specific variants, make a request to the Update Item endpoint. In the request, pass the shared itemId, the specific cmsLocaleId for the variants you are updating, and its unique, translated fieldData.
For any Collection items that already exist, you must add the desired secondary locales in the CMS panel within the Designer. You can’t add a new locale to an existing item via the API.
To get localized items, use the List Items endpoint and pass the desired cmsLocaleId as a query parameter. If you omit the cmsLocaleId, the API will return items from the primary locale.
Each locale maintains its own independent publishing state. This means you can have a version of an item live in your primary locale while the version for a secondary locale is still in a draft state. Publishing changes in one locale doesn’t affect the status of that item in any other locale. See the publishing guide for more details →.
To ensure your site is completely localized, follow the guides for localizing pages and components.