Skip to main content

Why migrate from Contentful?

Common reasons for migration

Feature comparison

Migration planning

Step 1: Audit your Contentful content

Before migrating, create an inventory of your Contentful content: Content Types to identify:
  • Entry types (equivalent to ButterCMS Page Types)
  • Assets (equivalent to ButterCMS Media)
  • Content entries (equivalent to Pages or Collection Items)
  • Locales configured
  • Webhooks set up
  • API integrations

Contentful to ButterCMS mapping

Step 2: Map content types to ButterCMS

Contentful Content Types become ButterCMS Page Types or Collections:
  • Content that represents a webpage
  • Content with SEO requirements
  • Content that needs scheduling
  • Content with complex field structures
  • Examples: Landing pages, product pages, case studies
  • Reference data used across pages
  • Lists of items without individual URLs
  • Reusable structured data
  • Examples: Categories, authors, testimonials, FAQs
  • Standard blog posts with author, categories, tags
  • Content that follows a blog publishing workflow
  • SEO-optimized article content

Step 3: Map field types

Migration process

Step 1: Export content from Contentful

Use the Contentful Export tool to export your content:
This creates JSON files containing:
  • Content types
  • Entries
  • Assets
  • Locales

Step 2: Create ButterCMS content structure

Before importing content, set up your ButterCMS content types:
  1. Create Page Types matching your Contentful content types
  2. Create Collections for reference data
  3. Create Components for reusable content blocks
  4. Configure Locales matching your Contentful setup

Step 3: Transform and import content

Use the ButterCMS Write API to import transformed content:

Step 4: Handle assets/media

Contentful assets need to be uploaded to ButterCMS:
ButterCMS supports external image URLs in content fields. For optimal performance and CDN delivery, upload assets to the ButterCMS Media Library.

Step 5: Handle references and relationships

Contentful references need special handling:

Step 6: Handle rich text content

Contentful rich text needs transformation to HTML for ButterCMS WYSIWYG:

Handling specific Contentful features

Embedded entries (Components)

Contentful embedded entries map to ButterCMS Components:
  1. Create a Component in ButterCMS matching the embedded entry structure
  2. When migrating, extract embedded entries from rich text
  3. Use Component Picker fields to allow dynamic component addition

Localization

ButterCMS provides field-level localization. Set up locales in Settings, then provide locale-specific content in API requests using locale keys in the fields object:
  1. Set up matching locales in ButterCMS Settings
  2. During migration, iterate through each locale
  3. Use locale keys in the fields object when creating content via Write API

Webhooks

Re-create your webhook integrations in ButterCMS:
  1. Go to Settings → Webhooks
  2. Add webhook endpoints
  3. Select events to trigger webhooks
  4. Update any receiving applications with new payload format

Migration script template

Post-migration checklist

  • All content types created in ButterCMS
  • All entries migrated successfully
  • Media assets uploaded and references updated
  • Localized content available in all locales
  • Reference relationships working correctly
  • Webhooks reconfigured
  • Frontend application updated with new API calls
  • Preview functionality tested
  • Publishing workflow tested
  • Team members trained on new interface

Differences to note