Connect a content platform
Pull content out of the CMS, store, help center or marketing tool it already lives in, translate it in transglot, and send reviewed translations back where the platform allows it.
A content platform connection reads text out of a system such as Contentful, Shopify or Zendesk Guide, turns each translatable field into a key in your project, and (for two-way platforms) writes the reviewed translations back into that system's own per-language slots.
Each project holds one connection. You set it up on the project's CMS settings page.
Who can do this
Owners and admins of the project. Content platform connections are included on the Starter plan and above; see Plan requirements and pricing.
Two-way and import only
Every connector is one of two kinds, and the CMS page tells you which before you connect.
- Two-way. transglot imports your source content, and publishes reviewed translations back into the platform. It writes only the target-language slots and never touches your source content.
- Import only. transglot imports your source content and you translate it, but nothing is written back, because the platform has no per-language place to write to. In place of the publish controls, the CMS page shows a card such as Notion is import only.
For an import-only platform, you take the translations out another way: pull any locale as a localization file over the REST API or the transglot CLI, or publish it as a CDN bundle your app reads at runtime.
Every connector
| Platform | Direction | Translations are written to |
|---|---|---|
| Contentful | Two-way | Each entry's localized field slots |
| Sanity | Two-way | The target-language keys of field-level locale objects |
| Storyblok | Two-way | Each story's field-level translation keys |
| Webflow | Two-way | Each CMS item's secondary-locale variants |
| Strapi | Two-way | Each document's target-locale localization |
| DatoCMS | Two-way | Each record's target-locale field slots |
| Hygraph | Two-way | Each entry's target-locale localization |
| Contentstack | Two-way | Each entry's target-locale version |
| Kontent.ai | Two-way | Each item's target-language variant |
| Prismic | Import only | Not written back |
| WordPress | Two-way | One translation bundle per post, page or term |
| Drupal | Two-way | Each node's existing target-language translation |
| Ghost | Import only | Not written back |
| Notion | Import only | Not written back |
| Confluence | Import only | Not written back |
| Shopify | Two-way | Shopify translations in each secondary locale |
| WooCommerce | Two-way | One translation bundle per product |
| Magento | Two-way | Each target store view |
| BigCommerce | Import only | Not written back |
| PrestaShop | Two-way | Each target language's field value |
| Zendesk Guide | Two-way | Per-locale article translations |
| Intercom | Two-way | Each article's per-locale translated content |
| Freshdesk | Two-way | Per-language translated articles |
| Help Scout | Import only | Not written back |
| HubSpot | Import only | Not written back |
| Mailchimp | Import only | Not written back |
| Klaviyo | Import only | Not written back |
App Store Connect and Google Play listings connect from the same CMS page. They have their own pages under App stores.
Connect a platform
Prepare the platform
Each connector page lists what to set up first: usually the target languages enabled on the platform side, and a token or key with read access (and write access, for a two-way platform).
Open the CMS page
Open your project's settings and choose CMS. In the CMS list, pick the platform. The page shows a short explanation of how that connector works and what it needs.
Fill in the connection
Enter the address fields and the credential the form asks for, then choose the Content types and Translatable fields to import. For a two-way platform, tick the locales under Publish these locales.
Select Connect. The credential is stored encrypted and never shown again; on later edits, leave it blank to keep the stored one.
Test the connection
Select Test connection. On success the page reports Connection verified., usually followed by the name of the site, space or store it reached.
Run the first sync
Under Sync, select Sync from CMS. The import runs in the background; Last sync updates when it finishes.
The platform is fixed for the life of a connection. To switch platforms, disconnect and connect again.
How imported content becomes keys
Each sync reads the source-language value of every mapped field, for every entry of every selected content type. Each field becomes one key, named after the platform, the content type, the entry and the field (for example wp:posts:42:title). Because the name is stable, a later sync updates the same key instead of creating a duplicate.
- Empty fields are skipped, so they never create a key.
- The platform is the source of truth for source text. Edit source text in the platform: the next sync replaces the source text in transglot with what the platform holds.
- One sync reads up to 5,000 entries in total. Some platforms read fewer per content type; their pages give the limit.
Imported keys are ordinary keys. They go through translation memory, the glossary and quality checks like everything else. If Auto-translate is on in AI translation settings, new and changed source text is translated by Glossa as it arrives. A translation you have edited or reviewed is never overwritten by AI.
Review, then publish back
Only translations in the Reviewed state are published. Review them in the editor or with Approve or flag a translation.
For a two-way platform, publishing sends:
- only keys this connection imported,
- only the fields in Translatable fields and the types in Content types,
- only the locales ticked under Publish these locales. Your source locale is never published.
There are two ways to publish:
- Publish to CMS under Sync queues a publish straight away.
- Publish automatically whenever a translation is reviewed queues a publish each time a translation in the project is reviewed.
A publish is idempotent: running it again with nothing new reviewed writes the same values. One publish run writes up to 5,000 entries. If a single entry fails (for example because it was deleted on the platform), the rest of the run continues.
Keep content in sync
transglot does not poll your platform. New and changed content arrives when:
- you select Sync from CMS, or
- the platform notifies transglot of a change. Today that covers the WordPress plugin, which sends a change notification when you save, and Contentful, whose CMS page shows an Inbound URL for a signed webhook.
On the first save of a connection, the page shows Your inbound signing secret: shown once. A change notification must be signed with this secret, using the same scheme as transglot's outbound webhooks (Verify signatures). An unsigned or stale request is refused with Invalid signature. If you lose the secret, select Rotate signing secret; the old secret stops working at once.
Disconnect
At the bottom of the CMS page, select the disconnect button (it names your platform, for example Disconnect Contentful), then Yes, disconnect. This removes the stored credential and stops all syncing. Keys already imported stay in the project.
If something goes wrong
Your workspace is on the Free plan. Content platform connections start at Starter. An attempt to connect on Free is refused with This integration is not enabled for your workspace.
The message ends in the credentials were rejected. The platform answered 401 or 403. Check the token is current and has the access the connector page lists, then paste it again and save.
Could not reach the CMS. Check the site URL. means the request never got an answer. For a self-hosted platform, the URL must use https and resolve to a public address. A URL that does not is refused with a message such as The webhook URL must use https. or The webhook URL resolves to a private or reserved address.
Check that the content types and field IDs you entered match the platform exactly, that the fields hold text in your project's source language, and that your credential can read those types. Fields with no source-language value are skipped.
If the page says Syncing and publishing cover every language on this connection, and your access is limited to a subset of them. An administrator can run these., your role is limited to some languages. Ask an admin whose access covers every language on the connection.
The platform is import only. Take the translations out through the API, the CLI or the CDN instead.