Webflow Localization is end-to-end solution for customizing your website for visitors around the world – from design to translation to publishing. With these APIs, your Apps can make dynamic content updates and enable custom localization workflows, providing scalability for growing businesses that are looking to enhance global user engagement and optimize performance for international audiences.
Let’s look at an example. AstralFund is an imaginary bank that serves two locales – the United States and France. To properly address each market’s needs, the bank needs to localize content throughout the site. In the images below, we’ve localized some content. In this tutorial, we’ll walk through how to localize the entire site.
The site’s primary locale is set to the United States with content in English.


In this tutorial, we’ll walk through the process of localizing content for a French audience on a website. By the end of this tutorial, you’ll have a fully localized “Contact Us” page and a new testimonial that resonates with your French audience. You’ll learn how to:
Localization Example with code samples and localized data
Webflow site plan that supports CMS
Webflow App or a Site Token with the following scopes: sites:read, cms:read, and cms:write
Some knowledge of HTTP requests and JavaScript
Clone the Example Repository
Clone the example repository and install dependencies.
Authenticate with your Bearer Key
Make sure you have a valid Bearer Key that is authenticated for your new site. You can do this by authenticating through our API reference docs. Once you have your Bearer Key, store it in your .env file as WEBFLOW_API_TOKEN.

Create localization.js
There’s a full example of all the steps below in index.js. However, if you’d like to follow along with this guide, create a new file called localization.js, and include the following imports of the translated content, as well as the Webflow Javascript SDK.
Initialize the API
Create an asynchronous function, and initialize the API using the Webflow JavaScript SDK:
After each step, you can run the file by typing the command node localization to see your progress.
In this step we’ll retrieve the site and locale identifiers, so that we can make locale-specific requests to our site.
Call the List Sites endpoint to find your siteId and locale information.
Replace the siteName variable with the name of your cloned site.
Extract the localeId for both English and French from the Site object:
locales parameter, which returns a primary locale, and an array of secondary locales.localeId, each locale also has a cmsLocaleId.In this step, we’re getting the content from a static, primary page, and uploading a translated version to our locale-specific page.
Get the page_id of the Contact Us page using the List Pages endpoint.
Get the content of the Primary Locale using the Read DOM endpoint.
This will return all content that can be localized from a static page, which we can then translate for our locale-specific page.
📘 As of Sep 22, 2023, we only support writing to Text and Rich Text to the DOM. We do not support updating images via this API.
Modify the content to include localized versions of the nav bar, contact content, form, and footer.
We’ve provided a localized DOM for you with ./helpers/Contact Us - French.json. From this example, create a DOM write object, with an array of DOM Nodes and the cmsLocaleId.
Update the content of the French locale by making a POST request to the Update DOM endpoint.
Be sure to include the localeId in the locale query parameter.
In this step, we’ll update the SEO metadata for the French version of the page.
Retrieve the primary page’s SEO data via a GET request to the Get Page Metadata endpoint.
Translate the data so that it’s relevant for the French audience.
We’ve provided localized information for you with ./helpers/seoData.json.
Update the SEO Data for the French locale via a POST request to the Update Page Metadata endpoint.
Be sure to enter the localeId in the locale query parameter.
To demonstrate AstralFund’s commitment to the French market, we’ll translate the existing testimonials, and create a French-specific testimonial from a French regulatory authority.
Get existing testimonials and translate them using our provided translation.
For each translated testimonial, update the CMS item via the Update Collection Item endpoint. Be sure to include cmsLocaleId in the Item.
Create a French-only testimonial using our provided translation.
Congratulations! You’ve localized your AstralFund site! Take a look around the site and see what other opportunities you have to localize content.
The site’s primary locale is set to the United States with content in English.

