Migrate from Contentful to Sanity
Last updated a month ago by rexxars .
MIT · Repository · Bugs · Original npm · Tarball · package.json
$ cnpm install contentful-to-sanity 
SYNC missed versions from official npm registry.


This package liberates Contentful spaces, creating Sanity projects and schemas as it goes.


npm install -g contentful-to-sanity


Requires node.js version >= 7.6


  1. Install the CLI tool (see Installation above)

  2. Install the Sanity CLI tool (if not already done) and log in

    npm install -g @sanity/cli && sanity login

  3. Open Contentful and navigate to your space:

  4. Find the contentful space ID of your project (under Space settingsGeneral)

  5. Create a content management token (under Space settingsAPI keysContent management tokensGenerate personal token)

  6. Run the migration tool:

    contentful-to-sanity --space <your-space-id> --contentful-token <your contentful token>


    $ contentful-to-sanity

    -s, --space <spaceId> Contentful space to migrate
    -p, --project <projectId> Sanity project ID to import to
    -d, --dataset <dataset> Sanity dataset to import to
    -o, --output <path> Path to create Sanity project in
    -l, --locale <locale> Locale to migrate
    -f, --from-file <file> Import from stored contentful export file
    --sanity-token <token> Sanity token to authenticate with
    --contentful-token <token> Contentful management token to authenticate with
    --replace Replace documents in dataset if same IDs are encountered
    --missing Skip documents that already exist
    --keep-markdown Keeps markdown as-is. Converts to block content format by default.
    --weak-refs Use weak references (allow import to continue on broken references)
    --help Show this help

    # Migrate contentful space "4cfSp4c3" with contentful token "d4t-t0k3n", prompt for info
    $ contentful-to-sanity --space=4cfSp4c3 --contentful-token=d4t-t0k3n

    # Migrate contentful space "4cfSp4c3" to sanity project "s4ni7yp" and dataset "staging"
    $ contentful-to-sanity --space=4cfSp4c3 --project=s4ni7yp --dataset=staging

    # Migrate from an exported file created by contentful-export CLI tool
    $ contentful-to-sanity --from-file contentful.json --project=s4ni7yp --dataset=staging

  Environment variables (fallbacks for missing flags)
    --sanity-token = SANITY_IMPORT_TOKEN
    --contentful-token = CONTENTFUL_MANAGEMENT_TOKEN


  • Only published items will be imported
  • Markdown is converted on a best-effort basis. Certain features (like tables) are not supported. Arbitrary HTML is either skipped or unwrapped to simple text values. Inline images are currently skipped. You can disable markdown conversion by using --keep-markdown.
  • Validations are not ported (currently)
  • Omitted fields are not included
  • Fields that accept both images and files currently only allow images


MIT-licensed. See LICENSE.

Current Tags

  • 1.1.3                                ...           latest (a month ago)

8 Versions

  • 1.1.3                                ...           a month ago
  • 1.1.2                                ...           a year ago
  • 1.1.1                                ...           2 years ago
  • 1.1.0                                ...           2 years ago
  • 1.0.6                                ...           2 years ago
  • 1.0.5                                ...           2 years ago
  • 1.0.4                                ...           2 years ago
  • 1.0.3                                ...           2 years ago
Today 0
This Week 0
This Month 0
Last Day 0
Last Week 0
Last Month 43
Dependencies (18)
Dev Dependencies (3)
Dependents (0)

Copyright 2014 - 2017 © |