How do you import content into Framer CMS?
You import content into Framer CMS by creating a collection with the right fields, then filling it from a CSV file, a sync plugin or the Server API. The method matters less than the preparation: Framer will happily import messy content, and messy content is slow to fix one item at a time.
Most imports are part of a bigger move, usually off Webflow, WordPress or HubSpot. If that's you, start with the wider process in our guide to CMS content migration, which covers export, cleanup and import as one job. This article covers the last step: getting clean content into Framer and keeping it intact.
The short version: model your collections first, pick the import route that fits how often content changes, run a small test batch, then import everything and check it against the source.
CSV, plugins or the Server API: which Framer CMS import method fits?
CSV fits a one-time move, a sync plugin fits content that will keep living in another tool, and the Server API fits large or scripted imports. The table compares them on the things that decide a real migration.
Factor | CSV import | Sync plugin | Server API |
|---|---|---|---|
Best for | One-off migrations | Content edited in Notion, Sheets or Airtable | Large or recurring imports |
Who runs it | Anyone on the team | Anyone, after setup | A developer |
Ongoing sync | No, it's a snapshot | Yes, on demand | Yes, scripted |
Editing in Framer afterwards | Full | Synced fields are locked to the source | Full, unless your script overwrites them |
Rich text | HTML in a cell | Depends on the plugin | You control the conversion |
Main risk | Bad formatting at scale | Plugin limits or changes | Build and maintenance effort |
Our default for a marketing site migration is CSV. It's the simplest route, it leaves editors in full control afterwards, and the file doubles as a record of what you moved. We reach for the API only when the volume or the update frequency makes manual uploads a chore.
How do you prepare a CSV for a Framer CMS CSV import?
Prepare one CSV per collection, with one column per field and one row per item, and clean it before Framer sees it. The work happens in a spreadsheet or a script, not in Framer.
Model the collection first
Decide the fields in Framer before you export anything: title, slug, date, author, category, summary, body, image, SEO title and description. Our guide to content modeling explains how to split collections without copying the old site's mistakes.
Export and audit the source
Pull the content out of the old platform, then decide what's worth moving. A content audit before migration usually removes a meaningful share of thin or outdated posts before they cost you import time.
Match columns to fields
Rename CSV headers to match the Framer field names exactly. It makes the mapping screen fast and stops columns landing in the wrong field.
Keep slugs from the old site
Put the existing URL slug in its own column. Keeping slugs means fewer redirects and less SEO risk.
Clean rich text and dates
Strip inline styles, empty tags and old shortcodes from body HTML, and use one consistent date format across the file.
Test with ten rows
Import a small sample, open each item and its live page, and only then import the full file.
How does Framer handle rich text and images on import?
Framer reads HTML in a formatted text column and converts it into its own rich text, and it fetches images from public URLs. Both work well when the source is clean and break in predictable ways when it isn't.
For rich text, the common problems are embeds, tables and custom classes. Framer's formatted text doesn't keep arbitrary classes or scripts, so iframes, tweet embeds and styled callouts from the old CMS either disappear or arrive as plain text. Convert them before import, or plan to rebuild them as components. Our guide to rich text migration between CMSs covers the conversion patterns.
For images, every URL must be publicly reachable at the moment you import. If the old site is about to be switched off, import first. If your images sit on another platform's CDN, as they do after a Webflow CMS export, get them into Framer while that CDN still serves them.
When should you use a Framer CMS plugin import instead?
Use a plugin when the content will keep living somewhere else, such as a job board in Airtable, a changelog in Notion or a directory in Google Sheets. The plugin syncs that source into a Framer collection whenever you run it.
Pros
- Non-designers keep editing in a tool they already use
- Re-syncing takes a click instead of a new CSV
- Good fit for structured lists like jobs, docs, directories and events
Cons
- Synced collections are managed by the plugin, so you can't freely edit those fields in Framer
- You depend on a third-party plugin staying maintained
- Rich text and references vary by plugin, so test before committing
For a one-off blog migration, a plugin adds a dependency you don't need. For a list your ops team updates weekly, it's often the right call. If the content model is outgrowing Framer, also read about moving content to a headless CMS while keeping the Framer design.
When does the Framer CMS API make sense for large sites?
The Framer CMS API route makes sense when you have hundreds of items, several linked collections or content that updates on a schedule. A script can create items, convert rich text, set references and re-run safely, which no spreadsheet can.
Framer's Server API lets code outside the editor read and write CMS content and publish. Plugin-based imports through the Plugin API are another scripted option. Check Framer's current developer docs for access, plan requirements and rate limits before you build on either, because these change.
Before scripting anything, check that the volume fits. Our guide to Framer CMS limits covers what happens when collections get large. Sites built for programmatic SEO in Framer are the usual reason teams need the API in the first place.
Hypothetical example: a blog with authors and categories
For example, suppose a SaaS team is moving a blog with three linked collections: posts, authors and categories. With CSV, they import authors and categories first, then posts, with reference columns that match the slugs of the already-imported items.
With the API, a developer writes one script that reads the export, creates authors and categories, stores their new IDs, converts each post body to clean HTML and creates the posts with references set. It costs more upfront, but the script can be re-run after a content freeze, so last-minute posts aren't lost. This is illustrative, not a client result.
What should you check after importing into Framer CMS?
Check every collection against the source before you switch domains. A quick, systematic pass catches the problems that show up later as broken pages or lost rankings.
- Item count. The number of items in each collection matches the cleaned export.
- Slugs. Every slug matches the old URL, or has a redirect from the old one.
- Rich text. Headings, lists, links and inline images render on a sample of long posts.
- Images. Cover and inline images load from Framer, not from the old platform.
- References. Authors, categories and related items link correctly on live pages.
- SEO fields. Titles, descriptions and Open Graph images are populated and wired into the page template.
- Forms and tracking. Any embedded forms in posts still submit, as covered in our guide to migrating website forms.
If you're coming from HubSpot, the same checks apply, with extra attention to forms and CTAs. Our HubSpot to Framer migration guide walks through those. Migration work is scoped on the intro call, and we include redirects and SEO checks in any migration we take on.
