---
title: "The Complete Guide to Framer CMS (2026)"
description: "Everything you need to know about Framer CMS: collections, fields, CMS pages, CSV import, dynamic filtering, SEO, and real limitations. Updated 2026."
canonical_url: "https://framerhub.io/blog/framer-cms-complete-guide"
last_updated: "2026-05-22T00:00:00.000Z"
---

You're building a client site in Framer. It needs a blog. Or a property directory. Or a job board where users can search and filter listings. You've heard about Framer CMS, but you're not sure how far it goes, where it stops, and what you need to extend it.

This guide is your reference. What **Framer CMS** is, how collections and fields work, reference fields, CMS-powered pages, CSV import, the API, scheduled publishing, filtering, SEO setup, and the real limits you'll hit in production.

I built the FramerHub CMS plugins. I work in Framer CMS daily. Here's everything I know.

---

## What is Framer CMS?

Framer CMS is built around two things: **collections** and **items**.

A **collection** is a structured set of content. Think of it as a spreadsheet tab. Each collection has fields that define the shape of the content: a title field, a date field, an image field, a rich text field, and so on.

An **item** is one row in that collection. One blog post. One team member. One job listing. One property.

When you connect a collection to a design component in Framer, every item gets its own version of that component, populated with its own data. Add a new item to the CMS, and a new page or card appears. Remove one, and it disappears. No manual duplication. No copy-pasting.

Design once. The structure scales to however many items you have.

**What Framer professionals use CMS for:**

- Client blogs and content sites
- Team member and about pages
- Portfolio case studies
- Product or service listings
- Job boards
- Property directories (real estate, rentals)
- Resource libraries
- Testimonials and customer stories

![Framer CMS structure: collections and items](/framerhub/img/blog/framer-cms-complete-guide/framer-cms-complete-guides.webp)

---

## Collections: the foundation of Framer CMS

Every CMS project starts with a collection. Here's how to create one and set it up.

### Creating a collection

Open your Framer project. In the left sidebar, click the **CMS icon** (or press `C`). Click **New Collection**. You get three options:

1. **Start empty**, blank collection, add fields manually
2. **Import CSV**, populate from a spreadsheet (covered below)
3. **Add sample blog**, Framer pre-fills a typical blog structure

For most projects, starting with the sample blog or starting empty is the fastest path.

### Naming your collection

Use a clear, plural noun: `Blog Posts`, `Team Members`, `Properties`, `Job Listings`. This name appears in your design panel and in the URL structure for CMS pages.

### Collection field types

Each collection supports up to 30 fields.

<table>
<thead>
  <tr>
    <th>
      Field Type
    </th>
    
    <th>
      What It Stores
    </th>
    
    <th>
      Best Used For
    </th>
  </tr>
</thead>

<tbody>
  <tr>
    <td>
      <strong>
        Text
      </strong>
    </td>
    
    <td>
      Short strings
    </td>
    
    <td>
      Titles, names, labels, slugs
    </td>
  </tr>
  
  <tr>
    <td>
      <strong>
        Rich Text
      </strong>
    </td>
    
    <td>
      Formatted HTML content
    </td>
    
    <td>
      Blog body, descriptions
    </td>
  </tr>
  
  <tr>
    <td>
      <strong>
        Image
      </strong>
    </td>
    
    <td>
      Image file or URL
    </td>
    
    <td>
      Cover photos, avatars, thumbnails
    </td>
  </tr>
  
  <tr>
    <td>
      <strong>
        URL
      </strong>
    </td>
    
    <td>
      Web address
    </td>
    
    <td>
      External links, social profiles
    </td>
  </tr>
  
  <tr>
    <td>
      <strong>
        Date
      </strong>
    </td>
    
    <td>
      Date/time value
    </td>
    
    <td>
      Publish dates, event dates
    </td>
  </tr>
  
  <tr>
    <td>
      <strong>
        Number
      </strong>
    </td>
    
    <td>
      Integer or decimal
    </td>
    
    <td>
      Prices, ratings, counts
    </td>
  </tr>
  
  <tr>
    <td>
      <strong>
        Boolean
      </strong>
    </td>
    
    <td>
      True/False toggle
    </td>
    
    <td>
      Featured flag, active status
    </td>
  </tr>
  
  <tr>
    <td>
      <strong>
        Color
      </strong>
    </td>
    
    <td>
      Hex/RGB value
    </td>
    
    <td>
      Category color coding
    </td>
  </tr>
  
  <tr>
    <td>
      <strong>
        File
      </strong>
    </td>
    
    <td>
      Downloadable file
    </td>
    
    <td>
      PDFs, downloads
    </td>
  </tr>
  
  <tr>
    <td>
      <strong>
        Reference
      </strong>
    </td>
    
    <td>
      Link to another collection item
    </td>
    
    <td>
      Author on a Blog Post
    </td>
  </tr>
  
  <tr>
    <td>
      <strong>
        Multi-Reference
      </strong>
    </td>
    
    <td>
      Link to multiple items
    </td>
    
    <td>
      Tags on a Blog Post
    </td>
  </tr>
</tbody>
</table>

The last two, **reference** and **multi-reference** fields, are worth understanding in depth.

![Framer CMS field types](/framerhub/img/blog/framer-cms-complete-guide/framer-cms-field-types.webp)

---

## Reference fields: connecting collections

Reference fields create relationships between collections.

**Example**: You have a `Blog Posts` collection and an `Authors` collection. Each blog post has one author. Instead of typing the author's name into every post manually, you create an `Author` field in `Blog Posts` as a **Reference** to the `Authors` collection.

When you write a post, you pick an author from a dropdown. When an author's photo or bio changes, it updates everywhere automatically.

**Multi-reference fields** allow selecting multiple items. Common uses:

- Tags (a post can have multiple tags)
- Categories (a product can belong to multiple categories)
- Team members on a project

### Setting up a reference field

1. In your collection, click **Add Field**
2. Choose **Reference** or **Multi-Reference**
3. Select the target collection
4. Save. The field now shows a picker when editing items.

When you bind this field in your design, you can pull any field from the referenced collection. An author reference on a blog card can display the author's name, photo, and bio, all from the `Authors` collection.

![Framer CMS reference fields](/framerhub/img/blog/framer-cms-complete-guide/framer-cms-reference-fields.webp)

---

<blog-cta button-link="/plugins/framer-cms-filter" button-text="See CMS Filter" description="CMS Filter adds multi-field search, price range sliders, result counts, and more to any Framer CMS collection. Trusted by 1,500+ Framer pros." title="Building a directory or listing site in Framer?" variant="blue">



</blog-cta>

---

## CMS pages and slugs

CMS items can have their own dedicated pages. A blog post collection generates a `/blog/[slug]` page for each item. A job listings collection generates a `/jobs/[slug]` page. Here's how it works.

### Creating a CMS detail page

1. In Framer, create a new page
2. In the page settings, switch the **Page Type** to **CMS**
3. Select the collection this page should pull from
4. Design your layout using bound fields from that collection
5. Set the URL structure using the slug field

Every item in the collection now has its own URL and its own rendered version of that page.

### Slug field setup

The **slug** is the URL-safe identifier for each item. Framer generates slugs automatically from the title (spaces become hyphens, special characters are stripped). You can also set slugs manually.

**Best practices for slugs:**

- Keep them short and descriptive
- Use lowercase and hyphens only
- Avoid dates in slugs if you want evergreen URLs
- Make them readable: `/blog/framer-cms-guide` not `/blog/12345`

### Index pages

Beyond the detail page, you'll usually want an **index page** that lists all items. This is a regular Framer page where you place a **Collection List** component and bind it to your collection.

The Collection List renders one instance of your card design for each CMS item. This is your blog index, your team page, your property grid.

![Framer CMS index and detail pages](/framerhub/img/blog/framer-cms-complete-guide/framer-cms-index-detail-pages.webp)

---

## Importing content via CSV

Framer CMS supports bulk content import via CSV. Useful when:

- Migrating from WordPress, Webflow, or Notion
- Managing content in a spreadsheet and pushing updates to Framer
- Bootstrapping a large collection quickly

### How to import a CSV

1. Open your collection in the CMS panel
2. Click the **three-dot menu** and then **Import CSV**
3. Upload your `.csv` file
4. Map each CSV column to a collection field
5. Click **Import**

### CSV format tips

- First row must be headers
- Date fields: use ISO format (`2026-06-09`)
- Boolean fields: `true` / `false`
- Image fields: use a public URL (Framer fetches and hosts the image)
- Rich text: Framer accepts basic HTML in rich text fields via CSV

**Limitation**: CSV import does not support reference fields. Set those manually after import, or use the Framer CMS API to automate it.

![Framer CMS CSV import](/framerhub/img/blog/framer-cms-complete-guide/framer-cms-csv-import.webp)

---

## Dynamic content with Collection Lists

The **Collection List** is the design component that pulls CMS data into your canvas. Add it to any frame, bind it to a collection, design one card, and Framer replicates it for every item.

### Adding a Collection List

1. In Framer, go to **Insert**, then **CMS**, then **Collection List**
2. Drag it onto your canvas
3. In the properties panel, select your collection
4. Design the item card inside the Collection List
5. Bind each element to its field: text element to `Title`, image to `Cover Image`, and so on

### Sorting and limiting

In the Collection List properties:

- **Sort by**: Any field (date descending for blogs, name ascending for directories, price for listings)
- **Limit**: Show only the first N items (useful for "Latest 3 Posts" on a homepage)
- **Filter**: Show items matching specific field values (only items where `Published = true`)

This built-in filtering is good for static conditions. For visitor-driven interactive filtering, you need Dynamic Filters or a plugin.

![Framer CMS Collection List properties](/framerhub/img/blog/framer-cms-complete-guide/framer-cms-collection-list-properties.webp)

---

## Framer CMS API

Framer provides a REST API for reading and writing CMS collection items. Useful for:

- Syncing content from Notion, Airtable, or your own database
- Automating content updates (pull fresh job listings nightly)
- Integrating with Zapier, Make, or n8n

### How the Framer CMS API works

The API is REST-based. Endpoints follow a consistent pattern:

- `GET /collections`, list all collections in a project
- `GET /collections/{id}/items`, list all items in a collection
- `POST /collections/{id}/items`, create a new item
- `PATCH /collections/{id}/items/{itemId}`, update an existing item
- `DELETE /collections/{id}/items/{itemId}`, delete an item

Authentication uses an **API token** generated from your Framer project settings. Include it as a Bearer token in request headers.

**Official documentation**: [Framer CMS API Docs](https://www.framer.com/developers/api)

### Practical API use case: Notion sync

Write content in Notion, sync to Framer CMS via the API using a Make or n8n automation. When you publish a page in Notion, it triggers a webhook that pushes the content to Framer. Your site updates without you touching the Framer editor.

This is one of the most-requested workflows in the Framer community. It works well for teams where writers prefer Notion's editing experience.

![Framer CMS API Notion sync](/framerhub/img/blog/framer-cms-complete-guide/framer-cms-api-notion-sync.webp)

---

## Scheduled publishing in Framer CMS

Here is something Framer does not have natively: scheduled publishing.

If you manage a client blog, you know the pain. You write a post in advance but Framer has no "go live at 9am Tuesday" option. You either publish it early or set an alarm to click Publish at the right time. If you're coming from WordPress, this is the first thing you miss.

The real-world scenario: a client wants three posts a week, queued up during one work session, publishing on a schedule. That is not possible with native Framer CMS.

**CMS Scheduler** is the plugin that fills this gap. Write your CMS items now, set a publish date and time, walk away. The plugin handles the rest.

- Free tier: up to 5 scheduled posts
- $69 lifetime: unlimited scheduled posts

**Important caveat**: scheduled publish pushes any other unpublished site changes at the same time. If you have work in progress, use a separate production project or hold off on scheduling until those edits are ready.

For agencies and content-heavy clients, this is the WordPress scheduling you're missing in Framer.

[CMS Scheduler on Framer Marketplace](https://www.framer.com/marketplace/plugins/framer-cms-scheduler/)

![CMS Scheduler on Framer Marketplace](/framerhub/img/blog/framer-cms-complete-guide/framer-cms-scheduler.webp)

---

<blog-cta button-link="/plugins" button-text="Browse Plugins" description="Browse all Framer plugins, filtering, scheduling, bulk editing, and more. One place for everything Framer doesn't do natively." title="Want deeper CMS capabilities?" variant="blue">



</blog-cta>

---

## Native Dynamic Filters: what they cover

Framer added native **Dynamic Filters** to the CMS in early 2026. They work well for simple cases. Here's what they do and when they're enough.

### What Dynamic Filters do

Dynamic Filters let you bind a page variable to a Collection List filter. The visitor selects a value, the page variable updates, and the Collection List re-renders to show only matching items.

**Works well for:**

- Single-field category filtering (show only "Design" posts)
- Boolean toggles (show only "Featured" items)
- Simple dropdown selections on small collections

### Where native Dynamic Filters fall short

<table>
<thead>
  <tr>
    <th>
      Requirement
    </th>
    
    <th>
      Native Dynamic Filters
    </th>
  </tr>
</thead>

<tbody>
  <tr>
    <td>
      Single-field filter
    </td>
    
    <td>
      Yes
    </td>
  </tr>
  
  <tr>
    <td>
      Combine search + category + location at once
    </td>
    
    <td>
      No
    </td>
  </tr>
  
  <tr>
    <td>
      Real-time text search
    </td>
    
    <td>
      No
    </td>
  </tr>
  
  <tr>
    <td>
      Price or number range slider
    </td>
    
    <td>
      No
    </td>
  </tr>
  
  <tr>
    <td>
      URL parameters (shareable filter state)
    </td>
    
    <td>
      No
    </td>
  </tr>
  
  <tr>
    <td>
      Show result counts per filter option
    </td>
    
    <td>
      No
    </td>
  </tr>
  
  <tr>
    <td>
      Active filter chips users can remove
    </td>
    
    <td>
      No
    </td>
  </tr>
  
  <tr>
    <td>
      Filter sync across desktop and mobile layouts
    </td>
    
    <td>
      No
    </td>
  </tr>
</tbody>
</table>

For a blog with three categories, native Dynamic Filters are the right tool. For a real estate directory with price range, location, bedrooms, and property type, you will run into the limits quickly.

The real signal: if a client asks "can users filter by price range and location at the same time?", that is where native filtering stops.

![Framer Dynamic Filters](/framerhub/img/blog/framer-cms-complete-guide/framer-dynamic-filters.webp)

---

## Advanced filtering with CMS Filter

When a client needs filtering that native Dynamic Filters cannot deliver, [CMS Filter](/plugins/framer-cms-filter) is the system built for it. It is the most-used CMS plugin on Framer Marketplace, trusted by 1,500+ Framer professionals.

The ICP describes the need in project terms: "I'm building a real estate site with price, location, and property type filters." Or "a car listing site with 6 filters." Or "a job board where users can search by role and filter by location." Native Dynamic Filters handle one condition at a time. CMS Filter handles all of them together.

**What CMS Filter adds:**

- Real-time text search across multiple fields at once (title, description, tags, and more in one input)
- 8+ filter types: dropdowns, checkboxes, toggle buttons, range sliders, tag clouds
- URL parameters so filter state persists and is shareable
- Result counts and active filter count badges
- Active filter chips users can remove individually
- Clear all controls
- Filter sync across breakpoints (sidebar on desktop, drawer on mobile, both stay in sync)
- Reference-aware filtering (filter by author, category, or any linked collection)
- Sort controls integrated with filter state

**Setup**: Drag in the CMS Filter component, connect your collection, configure filter fields in the properties panel. No custom code. Under five minutes for a basic setup.

**Pricing**: Free tier for basic setups. $79 Personal (lifetime). $179 Agency (lifetime). One-time pricing. 14-day refund. Licensed for unlimited client projects.

This is the tool for directory sites, real estate listings, job boards, product catalogs, and any CMS page where users need to find specific items from a large collection.

For a deeper walkthrough, see our [guide to Framer Dynamic Filters](/blog/framer-dynamic-filters-guide).

[CMS Filter on Framer Marketplace](https://www.framer.com/marketplace/plugins/framer-cms-filter/)

![Framer CMS Filter](/framerhub/img/blog/framer-cms-complete-guide/framer-cms-filter.webp)

---

## Bulk editing CMS content: CMS Find and Replace

One more CMS pain that comes up in real project work: bulk text edits.

A client rebrands. A URL changes across 200 blog posts. A product name is misspelled in 50 listing items. In native Framer, you edit each item manually, one by one.

**CMS Find and Replace** handles this in a single pass. Search across an entire collection, preview matches before applying, and update in bulk. Free, no paid tier.

- Case-sensitive, whole word, and regex matching
- Filter by field and item status (All, Draft, Published)
- Preview grouped matches before applying
- Export a CSV report
- Undo the last replace

This is a CMS hygiene tool. You don't use it daily, but when you need it, it saves an hour of manual work. Free, so install it and have it ready.

[CMS Find and Replace on Framer Marketplace](https://www.framer.com/marketplace/plugins/framer-cms-find-replace/)

---

## The FramerHub CMS toolkit

Three plugins that cover what native Framer CMS leaves out:

<table>
<thead>
  <tr>
    <th>
      Plugin
    </th>
    
    <th>
      What it adds
    </th>
    
    <th>
      Pricing
    </th>
  </tr>
</thead>

<tbody>
  <tr>
    <td>
      <strong>
        CMS Filter
      </strong>
    </td>
    
    <td>
      Filtering, search, sort for discovery-driven pages
    </td>
    
    <td>
      Free / $79 / $179 (lifetime)
    </td>
  </tr>
  
  <tr>
    <td>
      <strong>
        CMS Scheduler
      </strong>
    </td>
    
    <td>
      Scheduled publishing (the WordPress scheduling you're missing)
    </td>
    
    <td>
      Free / $69 (lifetime)
    </td>
  </tr>
  
  <tr>
    <td>
      <strong>
        CMS Find and Replace
      </strong>
    </td>
    
    <td>
      Bulk text editing across entire CMS collections
    </td>
    
    <td>
      Free
    </td>
  </tr>
</tbody>
</table>

One-time pricing across all paid tiers. Free tiers on every plugin. 14-day refund. Trusted by 1,500+ Framer professionals.

---

## SEO for Framer CMS pages

CMS detail pages can rank well in search, if they're set up correctly.

### Page titles and meta descriptions

In Framer's page settings for your CMS detail page, use **template variables** pulled from your CMS fields:

```text
Title: {{Title}} | Your Site Name
Meta Description: {{Excerpt}}
```

Every blog post, every property, every listing automatically gets a unique title and meta description from its CMS data. No manual settings per item.

**Best practice**: add a dedicated `Meta Description` field to every collection you want to rank. Keep it under 160 characters.

### Slug structure and URLs

- `/blog/framer-cms-guide`, good. Readable, keyword-relevant.
- `/blog/abc123`, bad. No keyword signal.

Use keyword-relevant slugs for CMS pages you want to rank. One of the lowest-effort, highest-impact SEO moves.

### Image alt text

Add an `Image Alt Text` field (type: text) to your collection. Bind it to the `alt` attribute of your image elements. Every image in every CMS item now has a unique alt attribute automatically.

Without this, all CMS images share a static alt text or have none. Both are bad for SEO and accessibility.

### Open Graph and social sharing

Set the Open Graph fields on your CMS detail page to pull from CMS fields:

```text
OG Image: {{Cover Image}}
OG Title: {{Title}}
OG Description: {{Excerpt}}
```

Every CMS page gets its own social card, pulled automatically from its content.

### Structured data

For blog posts, add Article schema markup. For property listings, add Product or RealEstateListing schema. Framer doesn't inject schema automatically. You'll need a custom code component or a script in the site's custom code section.

For a full SEO setup checklist for Framer sites, our [Framer SEO guide](/blog/framer-seo-guide) covers every technical and on-page element to check before launch.

![Framer CMS SEO](/framerhub/img/blog/framer-cms-complete-guide/framer-cms-seo.webp)

---

## Real Framer CMS limitations (honest)

Framer CMS is solid for small-to-medium content sites. Here's where it hits real walls.

### Item and field limits

<table>
<thead>
  <tr>
    <th>
      Plan
    </th>
    
    <th>
      CMS Items per Collection
    </th>
    
    <th>
      Collections per Site
    </th>
  </tr>
</thead>

<tbody>
  <tr>
    <td>
      Free
    </td>
    
    <td>
      Not available
    </td>
    
    <td>
      
    </td>
  </tr>
  
  <tr>
    <td>
      Mini
    </td>
    
    <td>
      50 items
    </td>
    
    <td>
      1 collection
    </td>
  </tr>
  
  <tr>
    <td>
      Basic
    </td>
    
    <td>
      250 items
    </td>
    
    <td>
      2 collections
    </td>
  </tr>
  
  <tr>
    <td>
      Pro
    </td>
    
    <td>
      1,000 items
    </td>
    
    <td>
      Unlimited
    </td>
  </tr>
  
  <tr>
    <td>
      Scale
    </td>
    
    <td>
      10,000 items
    </td>
    
    <td>
      Unlimited
    </td>
  </tr>
</tbody>
</table>

For a blog with 200 posts or a directory with 500 listings, Pro is enough. For large product catalogs or high-volume content sites, Scale is the ceiling.

Beyond Scale, a headless CMS (Contentful, Sanity, Hygraph) connected to Framer via the API makes more sense.

### No scheduled publishing (native)

As covered above, Framer has no native way to schedule a CMS item to publish at a specific time. CMS Scheduler fills this gap. If you're managing a content calendar for a client, plan for this before the project starts.

### No versioning or drafts workflow

Framer CMS has no version history for content. If you overwrite a field, it's gone. There's no per-item drafts and approval workflow. For content-heavy teams where writers, editors, and reviewers all touch the same content, this is friction.

### No user-generated content

Framer CMS is editor-only. Visitors cannot submit content to your collections from a form. You can connect a form to push data to Framer CMS via the API, but it's not built-in.

### No built-in search

There's no native search bar that queries CMS content by text. Dynamic Filters handle category-style filtering, but a free-text search box that finds items across title, body, and tags requires a plugin.

### Relational depth

Reference fields work one level deep cleanly. Multi-level relationships can get complicated and slow page render if you're pulling deeply nested referenced data.

### Framer CMS vs Webflow CMS

<table>
<thead>
  <tr>
    <th>
      Feature
    </th>
    
    <th>
      Framer CMS
    </th>
    
    <th>
      Webflow CMS
    </th>
  </tr>
</thead>

<tbody>
  <tr>
    <td>
      Max items (top plan)
    </td>
    
    <td>
      10,000
    </td>
    
    <td>
      10,000
    </td>
  </tr>
  
  <tr>
    <td>
      Native filtering
    </td>
    
    <td>
      Dynamic Filters (basic)
    </td>
    
    <td>
      More capable natively
    </td>
  </tr>
  
  <tr>
    <td>
      Scheduled publishing
    </td>
    
    <td>
      Plugin required
    </td>
    
    <td>
      Native
    </td>
  </tr>
  
  <tr>
    <td>
      CMS API
    </td>
    
    <td>
      Yes
    </td>
    
    <td>
      Yes
    </td>
  </tr>
  
  <tr>
    <td>
      Drafts/versioning
    </td>
    
    <td>
      No
    </td>
    
    <td>
      Limited
    </td>
  </tr>
  
  <tr>
    <td>
      Rich text editor
    </td>
    
    <td>
      Yes
    </td>
    
    <td>
      Yes
    </td>
  </tr>
  
  <tr>
    <td>
      Reference fields
    </td>
    
    <td>
      Yes
    </td>
    
    <td>
      Yes
    </td>
  </tr>
  
  <tr>
    <td>
      CSV import
    </td>
    
    <td>
      Yes
    </td>
    
    <td>
      Yes
    </td>
  </tr>
  
  <tr>
    <td>
      Full-text search
    </td>
    
    <td>
      Plugin required
    </td>
    
    <td>
      Plugin/code required
    </td>
  </tr>
</tbody>
</table>

For a detailed comparison of the full platforms, see our [Framer vs Webflow guide](/blog/framer-vs-webflow).

---

## Putting it together: CMS for real projects

Here's how the pieces connect for common project types.

**Client blog**: One collection (`Blog Posts`) with Title, Slug, Date, Author (reference to Authors), Cover Image, Excerpt, Body (rich text), Tags (multi-reference to Tags). CMS detail page with template variable SEO. Index page with Collection List sorted by date descending. Native Dynamic Filters for category. CMS Scheduler if the client wants to queue posts in advance.

**Property directory**: One collection (`Listings`) with Name, Location, Category (reference), Price, Images, Description, Tags. Index page with CMS Filter for category, location, and price range. Detail page per listing. SEO meta variables on detail page. CMS Find and Replace ready for any client rebranding.

**Job board**: One collection (`Jobs`) with Title, Company, Location, Salary Range, Job Type, Description, Apply URL, Published Date. Index page with CMS Filter for location, job type, and salary range. Detail page for each listing. CSV import from job aggregator.

---

## FAQ

### What is Framer CMS?

Framer CMS is the built-in content management system inside Framer. It lets you create collections of structured content, blog posts, team members, products, listings, and display them dynamically across your site without rebuilding pages manually.

### What are the limitations of Framer CMS?

Framer CMS limits you to 1,000 items per collection on the Pro plan (10,000 on Scale). Collections max out at 30 fields. There is no native scheduled publishing, no versioning, no user-generated content, and no built-in full-text search. Native Dynamic Filters handle basic filtering but cannot combine search, price ranges, and multiple filter types at the same time.

### Can I import content into Framer CMS?

Yes. Framer supports CSV import directly from the CMS panel. Map your CSV columns to collection fields, and Framer populates your items in bulk. Useful for migrating from another platform or managing content in a spreadsheet externally.

### Does Framer CMS have an API?

Yes. Framer provides a REST-based CMS API that lets you read and write collection items programmatically. You can fetch items from external apps, push content from third-party tools, or sync Framer CMS with an external data source. API access requires a paid plan. See the [official Framer API documentation](https://www.framer.com/developers/api) for endpoint reference and authentication setup.

### How do I add advanced filtering to Framer CMS?

Framer's native Dynamic Filters handle simple, single-field filtering. For multi-field search, price range sliders, active filter chips, result counts, and URL parameters, you need a dedicated plugin. [CMS Filter](/plugins/framer-cms-filter) adds all of this with a drag-and-drop setup, no custom code required. Free tier available, paid plans from $79 lifetime.

### How do I schedule blog posts in Framer CMS?

Framer has no native scheduled publishing. To publish a post at a specific time, you either click Publish manually or use a plugin. CMS Scheduler handles this, connect your project, pick a collection, set a date and time. Free for up to 5 scheduled posts, $69 lifetime for unlimited.

---

## Bottom line

Framer CMS handles most small-to-medium content projects well. Collections, reference fields, CMS pages, CSV import, and the API cover the fundamentals. Native Dynamic Filters work for simple category filtering.

Where it runs short: no scheduled publishing, no versioning, no built-in search, and native filtering that can only handle one condition at a time.

The FramerHub CMS toolkit fills those gaps. CMS Filter for multi-field filtering and search. CMS Scheduler for the scheduled publishing you're missing. CMS Find and Replace for bulk edits when a client rebrands or a URL changes across hundreds of items.

Build with native Framer CMS where it's enough. Reach for plugins when the project needs more.

*Last updated: June 2026*
