Migrate from Decap CMS

Netlify Identity is deprecated and Decap (ex-Netlify CMS) logins with it. Moving to PullPress takes minutes: connect the repo, import your existing config.yml, invite your editors by email.

The most important thing first: your content files don't change at all. Decap and PullPress read and write the same Markdown files with the same frontmatter — YAML, TOML and JSON frontmatter all round-trip — in the same folders of the same Git repository. The migration only replaces the login and the editing interface — every post, page and image stays exactly where it is, with its full Git history.

  1. 1

    Create a PullPress account

    Sign up with your email address. Editors won't need Netlify Identity, Git Gateway or a GitHub account — they log in with a magic link, just like they used to with Identity emails.

  2. 2

    Install the GitHub App on the repo

    From the dashboard, choose “Connect a repository” and install the PullPress GitHub App on the repository Decap has been writing to. You can scope it to that single repository — see GitHub App setup.

  3. 3

    Import your Decap config

    When PullPress opens the freshly connected site, it looks for your Decap config at static/admin/config.yml, admin/config.yml or public/admin/config.yml and offers to import it: collections, widgets, media folder and multilingual settings are converted to a pullpress.config.ymlautomatically. Pick “Import Decap CMS configuration” and PullPress commits the converted config to your repo — nothing else is touched.

    The importer also samples your actual content and cross-checks it against the config. Where they disagree — say the config promises flat files but your entries live one-per-folder — reality wins, and each difference is listed in the import notes and kept as a comment in the generated config. Widgets PullPress can't map become plain text fields and are listed too, never silently dropped.

    Decap widgetPullPress fieldNote
    string / text / markdownstring / text / markdown
    number / boolean / color / code / hiddensame names
    datetimedatetime (or date without a time part)
    imageimage
    fileimageexisting links keep working
    selectselect — or multiselect with multiple: true
    relationrelation
    objectobject
    list (plain / field / fields)list
    list with typesblocksthe type key carries over (typeKey) — entries keep working unchanged
    mapmapGeoJSON values may need conversion
    anything elsetextlisted in the import notes
  4. 4

    Review the converted configuration

    Open the visual config editor (site → Configuration) and skim the result: labels, field types, the media folder. Anything the importer flagged is a one-line fix here. The full format is in the configuration reference.

  5. 5

    Invite your editors by email

    Add every person who used to log in through Netlify Identity, from the site's member settings. They get a magic-link invitation and land straight in the editor — no account migration, no passwords to reset, no GitHub accounts. Choose per person whether they draft, publish or only review.

  6. 6

    Retire the Decap admin (when you're ready)

    Decap and PullPress can coexist while you test — they edit the same files, so just avoid editing the same entry in both at once. Once your editors have switched, remove the widget from the repo:

    # the Decap admin panel
    git rm -r static/admin        # or admin/ or public/admin/
    
    # the Netlify Identity script, if your layout includes it
    # <script src="https://identity.netlify.com/v1/netlify-identity-widget.js"></script>

    You can also disable Identity and Git Gateway in the Netlify site settings. Your hosting doesn't change — PullPress commits to GitHub and your existing build and deploy pipeline picks it up like any other push.

Common questions

Do my URLs or slugs change? No. Existing filenames are never renamed. The importer even checks whether your entries use date-prefixed filenames and keeps new entries consistent with them.

We used Decap's editorial workflow — is there a review step? Yes, built in. Every change is a real branch and pull request; reviewers approve with a diff inside PullPress instead of the beta GitHub-only workflow.

What about multilingual (i18n) content? Decap's multiple_files structure (sibling files like post.de.md) maps directly. The folder-per-locale and single-file structures aren't supported; the importer tells you when it hits one.

See how the two products compare feature by feature on PullPress vs Decap CMS.