CMS Integration
Contentful Integration
Sync your Contentful content with IntlPull for seamless translation management. Pull content from your CMS, translate it in IntlPull, and push translations back automatically.
Pull Content
Import localizable fields from Contentful entries
Push Translations
Export translations back to Contentful
Auto Sync
Webhook-triggered automatic synchronization
Multi-locale
Support for all Contentful locales
Requirements
- Content Delivery API Token - For reading content (free tier)
- Content Management API Token - For writing translations (paid Contentful plans)
- Space ID - Your Contentful space identifier
Note: Push functionality requires a paid Contentful plan ($300+/mo) as the Content Management API is not available on the free tier.
Dashboard Setup
The easiest way to connect Contentful is through the IntlPull dashboard.
Configuration Steps
- 1Go to your project in the IntlPull dashboard
- 2Navigate to Settings → Integrations → Contentful
- 3Enter your Contentful Space ID and Environment
- 4Add your Content Delivery API token (required)
- 5Optionally add Content Management API token for push
- 6Select content types to sync and configure auto-sync
SDK Usage
For programmatic access, use the @intlpullhq/contentful package.
Installation
npm install @intlpullhq/contentful# orpnpm add @intlpullhq/contentful
Quick Start
import { ContentfulSync } from '@intlpullhq/contentful';const sync = new ContentfulSync({// Contentful credentialsspaceId: 'your-space-id',environment: 'master',accessToken: 'your-delivery-api-token',managementToken: 'your-management-api-token', // For push// IntlPull credentialsprojectId: 'your-intlpull-project-id',apiKey: 'your-intlpull-api-key',// ConfigurationsourceLocale: 'en-US',contentTypes: ['blogPost', 'page'], // Optionalnamespace: 'contentful',});// Pull content from Contentful to IntlPullconst pullResult = await sync.pull();console.log(`Pulled ${pullResult.stats.entriesProcessed} entries`);// Push translations from IntlPull to Contentfulconst pushResult = await sync.push(['de-DE', 'fr-FR']);console.log(`Pushed ${pushResult.stats.translationsPushed} translations`);
CLI Commands
Sync Contentful from the command line using the IntlPull CLI.
# Pull content from Contentfulnpx @intlpullhq/cli contentful pull# Push translations to Contentfulnpx @intlpullhq/cli contentful push --locales de-DE,fr-FR# Sync specific content typesnpx @intlpullhq/cli contentful pull --content-types blogPost,page
Key Naming Convention
Keys are automatically named using the pattern:
{contentType}.{entryId}.{fieldId}Example: blogPost.abc123xyz.title