[{"data":1,"prerenderedAt":2741},["ShallowReactive",2],{"blog-post-framer-cms-complete-guide":3,"related-posts-framer-cms-complete-guide":1804},{"id":4,"title":5,"author":6,"body":10,"category":1773,"description":1774,"extension":1775,"featured":1776,"image":1777,"meta":1778,"navigation":1793,"path":1794,"published":1793,"publishedAt":1795,"readingTime":1796,"robots":1791,"seo":1797,"slug":1798,"stem":1799,"tags":1800,"updatedAt":1795,"__hash__":1803},"blog/blog/framer-cms-complete-guide.md","The Complete Guide to Framer CMS (2026)",{"name":7,"avatar":8,"bio":9},"Shahul","/shahul-profile-pic.jpg","Founder of FramerHub",{"type":11,"value":12,"toc":1709},"minimark",[13,17,25,28,31,36,47,54,61,64,67,72,100,107,109,113,116,121,137,158,161,165,182,186,189,355,365,371,373,377,380,406,409,415,426,430,452,457,463,465,473,475,479,490,494,518,521,525,532,537,558,562,573,576,582,584,588,591,602,606,636,640,668,674,680,682,686,691,695,728,732,735,758,761,767,769,773,776,787,791,794,826,833,846,850,853,856,862,864,868,871,874,877,883,891,897,900,907,912,914,920,922,926,933,937,940,945,956,960,1032,1035,1038,1044,1046,1050,1057,1060,1065,1094,1100,1106,1109,1116,1123,1129,1131,1135,1138,1141,1147,1164,1167,1174,1176,1180,1183,1235,1238,1240,1244,1247,1251,1258,1268,1271,1281,1285,1298,1301,1305,1316,1319,1323,1326,1332,1335,1339,1342,1350,1356,1358,1362,1365,1369,1438,1441,1444,1448,1451,1455,1458,1462,1465,1469,1472,1476,1479,1483,1587,1594,1596,1600,1603,1612,1621,1630,1632,1636,1639,1642,1646,1649,1653,1656,1660,1668,1672,1678,1682,1685,1687,1691,1694,1697,1700,1703],[14,15,16],"p",{},"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.",[14,18,19,20,24],{},"This guide is your reference. What ",[21,22,23],"strong",{},"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.",[14,26,27],{},"I built the FramerHub CMS plugins. I work in Framer CMS daily. Here's everything I know.",[29,30],"hr",{},[32,33,35],"h2",{"id":34},"what-is-framer-cms","What is Framer CMS?",[14,37,38,39,42,43,46],{},"Framer CMS is built around two things: ",[21,40,41],{},"collections"," and ",[21,44,45],{},"items",".",[14,48,49,50,53],{},"A ",[21,51,52],{},"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.",[14,55,56,57,60],{},"An ",[21,58,59],{},"item"," is one row in that collection. One blog post. One team member. One job listing. One property.",[14,62,63],{},"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.",[14,65,66],{},"Design once. The structure scales to however many items you have.",[14,68,69],{},[21,70,71],{},"What Framer professionals use CMS for:",[73,74,75,79,82,85,88,91,94,97],"ul",{},[76,77,78],"li",{},"Client blogs and content sites",[76,80,81],{},"Team member and about pages",[76,83,84],{},"Portfolio case studies",[76,86,87],{},"Product or service listings",[76,89,90],{},"Job boards",[76,92,93],{},"Property directories (real estate, rentals)",[76,95,96],{},"Resource libraries",[76,98,99],{},"Testimonials and customer stories",[14,101,102],{},[103,104],"img",{"alt":105,"src":106},"Framer CMS structure: collections and items","/framerhub/img/blog/framer-cms-complete-guide/framer-cms-complete-guides.webp",[29,108],{},[32,110,112],{"id":111},"collections-the-foundation-of-framer-cms","Collections: the foundation of Framer CMS",[14,114,115],{},"Every CMS project starts with a collection. Here's how to create one and set it up.",[117,118,120],"h3",{"id":119},"creating-a-collection","Creating a collection",[14,122,123,124,127,128,132,133,136],{},"Open your Framer project. In the left sidebar, click the ",[21,125,126],{},"CMS icon"," (or press ",[129,130,131],"code",{},"C","). Click ",[21,134,135],{},"New Collection",". You get three options:",[138,139,140,146,152],"ol",{},[76,141,142,145],{},[21,143,144],{},"Start empty",", blank collection, add fields manually",[76,147,148,151],{},[21,149,150],{},"Import CSV",", populate from a spreadsheet (covered below)",[76,153,154,157],{},[21,155,156],{},"Add sample blog",", Framer pre-fills a typical blog structure",[14,159,160],{},"For most projects, starting with the sample blog or starting empty is the fastest path.",[117,162,164],{"id":163},"naming-your-collection","Naming your collection",[14,166,167,168,171,172,171,175,171,178,181],{},"Use a clear, plural noun: ",[129,169,170],{},"Blog Posts",", ",[129,173,174],{},"Team Members",[129,176,177],{},"Properties",[129,179,180],{},"Job Listings",". This name appears in your design panel and in the URL structure for CMS pages.",[117,183,185],{"id":184},"collection-field-types","Collection field types",[14,187,188],{},"Each collection supports up to 30 fields.",[190,191,192,208],"table",{},[193,194,195],"thead",{},[196,197,198,202,205],"tr",{},[199,200,201],"th",{},"Field Type",[199,203,204],{},"What It Stores",[199,206,207],{},"Best Used For",[209,210,211,225,238,251,264,277,290,303,316,329,342],"tbody",{},[196,212,213,219,222],{},[214,215,216],"td",{},[21,217,218],{},"Text",[214,220,221],{},"Short strings",[214,223,224],{},"Titles, names, labels, slugs",[196,226,227,232,235],{},[214,228,229],{},[21,230,231],{},"Rich Text",[214,233,234],{},"Formatted HTML content",[214,236,237],{},"Blog body, descriptions",[196,239,240,245,248],{},[214,241,242],{},[21,243,244],{},"Image",[214,246,247],{},"Image file or URL",[214,249,250],{},"Cover photos, avatars, thumbnails",[196,252,253,258,261],{},[214,254,255],{},[21,256,257],{},"URL",[214,259,260],{},"Web address",[214,262,263],{},"External links, social profiles",[196,265,266,271,274],{},[214,267,268],{},[21,269,270],{},"Date",[214,272,273],{},"Date/time value",[214,275,276],{},"Publish dates, event dates",[196,278,279,284,287],{},[214,280,281],{},[21,282,283],{},"Number",[214,285,286],{},"Integer or decimal",[214,288,289],{},"Prices, ratings, counts",[196,291,292,297,300],{},[214,293,294],{},[21,295,296],{},"Boolean",[214,298,299],{},"True/False toggle",[214,301,302],{},"Featured flag, active status",[196,304,305,310,313],{},[214,306,307],{},[21,308,309],{},"Color",[214,311,312],{},"Hex/RGB value",[214,314,315],{},"Category color coding",[196,317,318,323,326],{},[214,319,320],{},[21,321,322],{},"File",[214,324,325],{},"Downloadable file",[214,327,328],{},"PDFs, downloads",[196,330,331,336,339],{},[214,332,333],{},[21,334,335],{},"Reference",[214,337,338],{},"Link to another collection item",[214,340,341],{},"Author on a Blog Post",[196,343,344,349,352],{},[214,345,346],{},[21,347,348],{},"Multi-Reference",[214,350,351],{},"Link to multiple items",[214,353,354],{},"Tags on a Blog Post",[14,356,357,358,42,361,364],{},"The last two, ",[21,359,360],{},"reference",[21,362,363],{},"multi-reference"," fields, are worth understanding in depth.",[14,366,367],{},[103,368],{"alt":369,"src":370},"Framer CMS field types","/framerhub/img/blog/framer-cms-complete-guide/framer-cms-field-types.webp",[29,372],{},[32,374,376],{"id":375},"reference-fields-connecting-collections","Reference fields: connecting collections",[14,378,379],{},"Reference fields create relationships between collections.",[14,381,382,385,386,388,389,392,393,396,397,399,400,402,403,405],{},[21,383,384],{},"Example",": You have a ",[129,387,170],{}," collection and an ",[129,390,391],{},"Authors"," collection. Each blog post has one author. Instead of typing the author's name into every post manually, you create an ",[129,394,395],{},"Author"," field in ",[129,398,170],{}," as a ",[21,401,335],{}," to the ",[129,404,391],{}," collection.",[14,407,408],{},"When you write a post, you pick an author from a dropdown. When an author's photo or bio changes, it updates everywhere automatically.",[14,410,411,414],{},[21,412,413],{},"Multi-reference fields"," allow selecting multiple items. Common uses:",[73,416,417,420,423],{},[76,418,419],{},"Tags (a post can have multiple tags)",[76,421,422],{},"Categories (a product can belong to multiple categories)",[76,424,425],{},"Team members on a project",[117,427,429],{"id":428},"setting-up-a-reference-field","Setting up a reference field",[138,431,432,438,446,449],{},[76,433,434,435],{},"In your collection, click ",[21,436,437],{},"Add Field",[76,439,440,441,443,444],{},"Choose ",[21,442,335],{}," or ",[21,445,348],{},[76,447,448],{},"Select the target collection",[76,450,451],{},"Save. The field now shows a picker when editing items.",[14,453,454,455,405],{},"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 ",[129,456,391],{},[14,458,459],{},[103,460],{"alt":461,"src":462},"Framer CMS reference fields","/framerhub/img/blog/framer-cms-complete-guide/framer-cms-reference-fields.webp",[29,464],{},[466,467],"blog-cta",{"button-link":468,"button-text":469,"description":470,"title":471,"variant":472},"/plugins/framer-cms-filter","See CMS Filter","CMS Filter adds multi-field search, price range sliders, result counts, and more to any Framer CMS collection. Trusted by 1,500+ Framer pros.","Building a directory or listing site in Framer?","blue",[29,474],{},[32,476,478],{"id":477},"cms-pages-and-slugs","CMS pages and slugs",[14,480,481,482,485,486,489],{},"CMS items can have their own dedicated pages. A blog post collection generates a ",[129,483,484],{},"/blog/[slug]"," page for each item. A job listings collection generates a ",[129,487,488],{},"/jobs/[slug]"," page. Here's how it works.",[117,491,493],{"id":492},"creating-a-cms-detail-page","Creating a CMS detail page",[138,495,496,499,509,512,515],{},[76,497,498],{},"In Framer, create a new page",[76,500,501,502,505,506],{},"In the page settings, switch the ",[21,503,504],{},"Page Type"," to ",[21,507,508],{},"CMS",[76,510,511],{},"Select the collection this page should pull from",[76,513,514],{},"Design your layout using bound fields from that collection",[76,516,517],{},"Set the URL structure using the slug field",[14,519,520],{},"Every item in the collection now has its own URL and its own rendered version of that page.",[117,522,524],{"id":523},"slug-field-setup","Slug field setup",[14,526,527,528,531],{},"The ",[21,529,530],{},"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.",[14,533,534],{},[21,535,536],{},"Best practices for slugs:",[73,538,539,542,545,548],{},[76,540,541],{},"Keep them short and descriptive",[76,543,544],{},"Use lowercase and hyphens only",[76,546,547],{},"Avoid dates in slugs if you want evergreen URLs",[76,549,550,551,554,555],{},"Make them readable: ",[129,552,553],{},"/blog/framer-cms-guide"," not ",[129,556,557],{},"/blog/12345",[117,559,561],{"id":560},"index-pages","Index pages",[14,563,564,565,568,569,572],{},"Beyond the detail page, you'll usually want an ",[21,566,567],{},"index page"," that lists all items. This is a regular Framer page where you place a ",[21,570,571],{},"Collection List"," component and bind it to your collection.",[14,574,575],{},"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.",[14,577,578],{},[103,579],{"alt":580,"src":581},"Framer CMS index and detail pages","/framerhub/img/blog/framer-cms-complete-guide/framer-cms-index-detail-pages.webp",[29,583],{},[32,585,587],{"id":586},"importing-content-via-csv","Importing content via CSV",[14,589,590],{},"Framer CMS supports bulk content import via CSV. Useful when:",[73,592,593,596,599],{},[76,594,595],{},"Migrating from WordPress, Webflow, or Notion",[76,597,598],{},"Managing content in a spreadsheet and pushing updates to Framer",[76,600,601],{},"Bootstrapping a large collection quickly",[117,603,605],{"id":604},"how-to-import-a-csv","How to import a CSV",[138,607,608,611,620,627,630],{},[76,609,610],{},"Open your collection in the CMS panel",[76,612,613,614,617,618],{},"Click the ",[21,615,616],{},"three-dot menu"," and then ",[21,619,150],{},[76,621,622,623,626],{},"Upload your ",[129,624,625],{},".csv"," file",[76,628,629],{},"Map each CSV column to a collection field",[76,631,632,633],{},"Click ",[21,634,635],{},"Import",[117,637,639],{"id":638},"csv-format-tips","CSV format tips",[73,641,642,645,652,662,665],{},[76,643,644],{},"First row must be headers",[76,646,647,648,651],{},"Date fields: use ISO format (",[129,649,650],{},"2026-06-09",")",[76,653,654,655,658,659],{},"Boolean fields: ",[129,656,657],{},"true"," / ",[129,660,661],{},"false",[76,663,664],{},"Image fields: use a public URL (Framer fetches and hosts the image)",[76,666,667],{},"Rich text: Framer accepts basic HTML in rich text fields via CSV",[14,669,670,673],{},[21,671,672],{},"Limitation",": CSV import does not support reference fields. Set those manually after import, or use the Framer CMS API to automate it.",[14,675,676],{},[103,677],{"alt":678,"src":679},"Framer CMS CSV import","/framerhub/img/blog/framer-cms-complete-guide/framer-cms-csv-import.webp",[29,681],{},[32,683,685],{"id":684},"dynamic-content-with-collection-lists","Dynamic content with Collection Lists",[14,687,527,688,690],{},[21,689,571],{}," 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.",[117,692,694],{"id":693},"adding-a-collection-list","Adding a Collection List",[138,696,697,708,711,714,717],{},[76,698,699,700,703,704,703,706],{},"In Framer, go to ",[21,701,702],{},"Insert",", then ",[21,705,508],{},[21,707,571],{},[76,709,710],{},"Drag it onto your canvas",[76,712,713],{},"In the properties panel, select your collection",[76,715,716],{},"Design the item card inside the Collection List",[76,718,719,720,723,724,727],{},"Bind each element to its field: text element to ",[129,721,722],{},"Title",", image to ",[129,725,726],{},"Cover Image",", and so on",[117,729,731],{"id":730},"sorting-and-limiting","Sorting and limiting",[14,733,734],{},"In the Collection List properties:",[73,736,737,743,749],{},[76,738,739,742],{},[21,740,741],{},"Sort by",": Any field (date descending for blogs, name ascending for directories, price for listings)",[76,744,745,748],{},[21,746,747],{},"Limit",": Show only the first N items (useful for \"Latest 3 Posts\" on a homepage)",[76,750,751,754,755,651],{},[21,752,753],{},"Filter",": Show items matching specific field values (only items where ",[129,756,757],{},"Published = true",[14,759,760],{},"This built-in filtering is good for static conditions. For visitor-driven interactive filtering, you need Dynamic Filters or a plugin.",[14,762,763],{},[103,764],{"alt":765,"src":766},"Framer CMS Collection List properties","/framerhub/img/blog/framer-cms-complete-guide/framer-cms-collection-list-properties.webp",[29,768],{},[32,770,772],{"id":771},"framer-cms-api","Framer CMS API",[14,774,775],{},"Framer provides a REST API for reading and writing CMS collection items. Useful for:",[73,777,778,781,784],{},[76,779,780],{},"Syncing content from Notion, Airtable, or your own database",[76,782,783],{},"Automating content updates (pull fresh job listings nightly)",[76,785,786],{},"Integrating with Zapier, Make, or n8n",[117,788,790],{"id":789},"how-the-framer-cms-api-works","How the Framer CMS API works",[14,792,793],{},"The API is REST-based. Endpoints follow a consistent pattern:",[73,795,796,802,808,814,820],{},[76,797,798,801],{},[129,799,800],{},"GET /collections",", list all collections in a project",[76,803,804,807],{},[129,805,806],{},"GET /collections/{id}/items",", list all items in a collection",[76,809,810,813],{},[129,811,812],{},"POST /collections/{id}/items",", create a new item",[76,815,816,819],{},[129,817,818],{},"PATCH /collections/{id}/items/{itemId}",", update an existing item",[76,821,822,825],{},[129,823,824],{},"DELETE /collections/{id}/items/{itemId}",", delete an item",[14,827,828,829,832],{},"Authentication uses an ",[21,830,831],{},"API token"," generated from your Framer project settings. Include it as a Bearer token in request headers.",[14,834,835,838,839],{},[21,836,837],{},"Official documentation",": ",[840,841,845],"a",{"href":842,"rel":843},"https://www.framer.com/developers/api",[844],"nofollow","Framer CMS API Docs",[117,847,849],{"id":848},"practical-api-use-case-notion-sync","Practical API use case: Notion sync",[14,851,852],{},"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.",[14,854,855],{},"This is one of the most-requested workflows in the Framer community. It works well for teams where writers prefer Notion's editing experience.",[14,857,858],{},[103,859],{"alt":860,"src":861},"Framer CMS API Notion sync","/framerhub/img/blog/framer-cms-complete-guide/framer-cms-api-notion-sync.webp",[29,863],{},[32,865,867],{"id":866},"scheduled-publishing-in-framer-cms","Scheduled publishing in Framer CMS",[14,869,870],{},"Here is something Framer does not have natively: scheduled publishing.",[14,872,873],{},"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.",[14,875,876],{},"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.",[14,878,879,882],{},[21,880,881],{},"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.",[73,884,885,888],{},[76,886,887],{},"Free tier: up to 5 scheduled posts",[76,889,890],{},"$69 lifetime: unlimited scheduled posts",[14,892,893,896],{},[21,894,895],{},"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.",[14,898,899],{},"For agencies and content-heavy clients, this is the WordPress scheduling you're missing in Framer.",[14,901,902],{},[840,903,906],{"href":904,"rel":905},"https://www.framer.com/marketplace/plugins/framer-cms-scheduler/",[844],"CMS Scheduler on Framer Marketplace",[14,908,909],{},[103,910],{"alt":906,"src":911},"/framerhub/img/blog/framer-cms-complete-guide/framer-cms-scheduler.webp",[29,913],{},[466,915],{"button-link":916,"button-text":917,"description":918,"title":919,"variant":472},"/plugins","Browse Plugins","Browse all Framer plugins, filtering, scheduling, bulk editing, and more. One place for everything Framer doesn't do natively.","Want deeper CMS capabilities?",[29,921],{},[32,923,925],{"id":924},"native-dynamic-filters-what-they-cover","Native Dynamic Filters: what they cover",[14,927,928,929,932],{},"Framer added native ",[21,930,931],{},"Dynamic Filters"," to the CMS in early 2026. They work well for simple cases. Here's what they do and when they're enough.",[117,934,936],{"id":935},"what-dynamic-filters-do","What Dynamic Filters do",[14,938,939],{},"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.",[14,941,942],{},[21,943,944],{},"Works well for:",[73,946,947,950,953],{},[76,948,949],{},"Single-field category filtering (show only \"Design\" posts)",[76,951,952],{},"Boolean toggles (show only \"Featured\" items)",[76,954,955],{},"Simple dropdown selections on small collections",[117,957,959],{"id":958},"where-native-dynamic-filters-fall-short","Where native Dynamic Filters fall short",[190,961,962,972],{},[193,963,964],{},[196,965,966,969],{},[199,967,968],{},"Requirement",[199,970,971],{},"Native Dynamic Filters",[209,973,974,982,990,997,1004,1011,1018,1025],{},[196,975,976,979],{},[214,977,978],{},"Single-field filter",[214,980,981],{},"Yes",[196,983,984,987],{},[214,985,986],{},"Combine search + category + location at once",[214,988,989],{},"No",[196,991,992,995],{},[214,993,994],{},"Real-time text search",[214,996,989],{},[196,998,999,1002],{},[214,1000,1001],{},"Price or number range slider",[214,1003,989],{},[196,1005,1006,1009],{},[214,1007,1008],{},"URL parameters (shareable filter state)",[214,1010,989],{},[196,1012,1013,1016],{},[214,1014,1015],{},"Show result counts per filter option",[214,1017,989],{},[196,1019,1020,1023],{},[214,1021,1022],{},"Active filter chips users can remove",[214,1024,989],{},[196,1026,1027,1030],{},[214,1028,1029],{},"Filter sync across desktop and mobile layouts",[214,1031,989],{},[14,1033,1034],{},"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.",[14,1036,1037],{},"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.",[14,1039,1040],{},[103,1041],{"alt":1042,"src":1043},"Framer Dynamic Filters","/framerhub/img/blog/framer-cms-complete-guide/framer-dynamic-filters.webp",[29,1045],{},[32,1047,1049],{"id":1048},"advanced-filtering-with-cms-filter","Advanced filtering with CMS Filter",[14,1051,1052,1053,1056],{},"When a client needs filtering that native Dynamic Filters cannot deliver, ",[840,1054,1055],{"href":468},"CMS Filter"," is the system built for it. It is the most-used CMS plugin on Framer Marketplace, trusted by 1,500+ Framer professionals.",[14,1058,1059],{},"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.",[14,1061,1062],{},[21,1063,1064],{},"What CMS Filter adds:",[73,1066,1067,1070,1073,1076,1079,1082,1085,1088,1091],{},[76,1068,1069],{},"Real-time text search across multiple fields at once (title, description, tags, and more in one input)",[76,1071,1072],{},"8+ filter types: dropdowns, checkboxes, toggle buttons, range sliders, tag clouds",[76,1074,1075],{},"URL parameters so filter state persists and is shareable",[76,1077,1078],{},"Result counts and active filter count badges",[76,1080,1081],{},"Active filter chips users can remove individually",[76,1083,1084],{},"Clear all controls",[76,1086,1087],{},"Filter sync across breakpoints (sidebar on desktop, drawer on mobile, both stay in sync)",[76,1089,1090],{},"Reference-aware filtering (filter by author, category, or any linked collection)",[76,1092,1093],{},"Sort controls integrated with filter state",[14,1095,1096,1099],{},[21,1097,1098],{},"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.",[14,1101,1102,1105],{},[21,1103,1104],{},"Pricing",": Free tier for basic setups. $79 Personal (lifetime). $179 Agency (lifetime). One-time pricing. 14-day refund. Licensed for unlimited client projects.",[14,1107,1108],{},"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.",[14,1110,1111,1112,46],{},"For a deeper walkthrough, see our ",[840,1113,1115],{"href":1114},"/blog/framer-dynamic-filters-guide","guide to Framer Dynamic Filters",[14,1117,1118],{},[840,1119,1122],{"href":1120,"rel":1121},"https://www.framer.com/marketplace/plugins/framer-cms-filter/",[844],"CMS Filter on Framer Marketplace",[14,1124,1125],{},[103,1126],{"alt":1127,"src":1128},"Framer CMS Filter","/framerhub/img/blog/framer-cms-complete-guide/framer-cms-filter.webp",[29,1130],{},[32,1132,1134],{"id":1133},"bulk-editing-cms-content-cms-find-and-replace","Bulk editing CMS content: CMS Find and Replace",[14,1136,1137],{},"One more CMS pain that comes up in real project work: bulk text edits.",[14,1139,1140],{},"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.",[14,1142,1143,1146],{},[21,1144,1145],{},"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.",[73,1148,1149,1152,1155,1158,1161],{},[76,1150,1151],{},"Case-sensitive, whole word, and regex matching",[76,1153,1154],{},"Filter by field and item status (All, Draft, Published)",[76,1156,1157],{},"Preview grouped matches before applying",[76,1159,1160],{},"Export a CSV report",[76,1162,1163],{},"Undo the last replace",[14,1165,1166],{},"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.",[14,1168,1169],{},[840,1170,1173],{"href":1171,"rel":1172},"https://www.framer.com/marketplace/plugins/framer-cms-find-replace/",[844],"CMS Find and Replace on Framer Marketplace",[29,1175],{},[32,1177,1179],{"id":1178},"the-framerhub-cms-toolkit","The FramerHub CMS toolkit",[14,1181,1182],{},"Three plugins that cover what native Framer CMS leaves out:",[190,1184,1185,1197],{},[193,1186,1187],{},[196,1188,1189,1192,1195],{},[199,1190,1191],{},"Plugin",[199,1193,1194],{},"What it adds",[199,1196,1104],{},[209,1198,1199,1211,1223],{},[196,1200,1201,1205,1208],{},[214,1202,1203],{},[21,1204,1055],{},[214,1206,1207],{},"Filtering, search, sort for discovery-driven pages",[214,1209,1210],{},"Free / $79 / $179 (lifetime)",[196,1212,1213,1217,1220],{},[214,1214,1215],{},[21,1216,881],{},[214,1218,1219],{},"Scheduled publishing (the WordPress scheduling you're missing)",[214,1221,1222],{},"Free / $69 (lifetime)",[196,1224,1225,1229,1232],{},[214,1226,1227],{},[21,1228,1145],{},[214,1230,1231],{},"Bulk text editing across entire CMS collections",[214,1233,1234],{},"Free",[14,1236,1237],{},"One-time pricing across all paid tiers. Free tiers on every plugin. 14-day refund. Trusted by 1,500+ Framer professionals.",[29,1239],{},[32,1241,1243],{"id":1242},"seo-for-framer-cms-pages","SEO for Framer CMS pages",[14,1245,1246],{},"CMS detail pages can rank well in search, if they're set up correctly.",[117,1248,1250],{"id":1249},"page-titles-and-meta-descriptions","Page titles and meta descriptions",[14,1252,1253,1254,1257],{},"In Framer's page settings for your CMS detail page, use ",[21,1255,1256],{},"template variables"," pulled from your CMS fields:",[1259,1260,1265],"pre",{"className":1261,"code":1263,"language":1264},[1262],"language-text","Title: {{Title}} | Your Site Name\nMeta Description: {{Excerpt}}\n","text",[129,1266,1263],{"__ignoreMap":1267},"",[14,1269,1270],{},"Every blog post, every property, every listing automatically gets a unique title and meta description from its CMS data. No manual settings per item.",[14,1272,1273,1276,1277,1280],{},[21,1274,1275],{},"Best practice",": add a dedicated ",[129,1278,1279],{},"Meta Description"," field to every collection you want to rank. Keep it under 160 characters.",[117,1282,1284],{"id":1283},"slug-structure-and-urls","Slug structure and URLs",[73,1286,1287,1292],{},[76,1288,1289,1291],{},[129,1290,553],{},", good. Readable, keyword-relevant.",[76,1293,1294,1297],{},[129,1295,1296],{},"/blog/abc123",", bad. No keyword signal.",[14,1299,1300],{},"Use keyword-relevant slugs for CMS pages you want to rank. One of the lowest-effort, highest-impact SEO moves.",[117,1302,1304],{"id":1303},"image-alt-text","Image alt text",[14,1306,1307,1308,1311,1312,1315],{},"Add an ",[129,1309,1310],{},"Image Alt Text"," field (type: text) to your collection. Bind it to the ",[129,1313,1314],{},"alt"," attribute of your image elements. Every image in every CMS item now has a unique alt attribute automatically.",[14,1317,1318],{},"Without this, all CMS images share a static alt text or have none. Both are bad for SEO and accessibility.",[117,1320,1322],{"id":1321},"open-graph-and-social-sharing","Open Graph and social sharing",[14,1324,1325],{},"Set the Open Graph fields on your CMS detail page to pull from CMS fields:",[1259,1327,1330],{"className":1328,"code":1329,"language":1264},[1262],"OG Image: {{Cover Image}}\nOG Title: {{Title}}\nOG Description: {{Excerpt}}\n",[129,1331,1329],{"__ignoreMap":1267},[14,1333,1334],{},"Every CMS page gets its own social card, pulled automatically from its content.",[117,1336,1338],{"id":1337},"structured-data","Structured data",[14,1340,1341],{},"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.",[14,1343,1344,1345,1349],{},"For a full SEO setup checklist for Framer sites, our ",[840,1346,1348],{"href":1347},"/blog/framer-seo-guide","Framer SEO guide"," covers every technical and on-page element to check before launch.",[14,1351,1352],{},[103,1353],{"alt":1354,"src":1355},"Framer CMS SEO","/framerhub/img/blog/framer-cms-complete-guide/framer-cms-seo.webp",[29,1357],{},[32,1359,1361],{"id":1360},"real-framer-cms-limitations-honest","Real Framer CMS limitations (honest)",[14,1363,1364],{},"Framer CMS is solid for small-to-medium content sites. Here's where it hits real walls.",[117,1366,1368],{"id":1367},"item-and-field-limits","Item and field limits",[190,1370,1371,1384],{},[193,1372,1373],{},[196,1374,1375,1378,1381],{},[199,1376,1377],{},"Plan",[199,1379,1380],{},"CMS Items per Collection",[199,1382,1383],{},"Collections per Site",[209,1385,1386,1395,1406,1417,1428],{},[196,1387,1388,1390,1393],{},[214,1389,1234],{},[214,1391,1392],{},"Not available",[214,1394],{},[196,1396,1397,1400,1403],{},[214,1398,1399],{},"Mini",[214,1401,1402],{},"50 items",[214,1404,1405],{},"1 collection",[196,1407,1408,1411,1414],{},[214,1409,1410],{},"Basic",[214,1412,1413],{},"250 items",[214,1415,1416],{},"2 collections",[196,1418,1419,1422,1425],{},[214,1420,1421],{},"Pro",[214,1423,1424],{},"1,000 items",[214,1426,1427],{},"Unlimited",[196,1429,1430,1433,1436],{},[214,1431,1432],{},"Scale",[214,1434,1435],{},"10,000 items",[214,1437,1427],{},[14,1439,1440],{},"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.",[14,1442,1443],{},"Beyond Scale, a headless CMS (Contentful, Sanity, Hygraph) connected to Framer via the API makes more sense.",[117,1445,1447],{"id":1446},"no-scheduled-publishing-native","No scheduled publishing (native)",[14,1449,1450],{},"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.",[117,1452,1454],{"id":1453},"no-versioning-or-drafts-workflow","No versioning or drafts workflow",[14,1456,1457],{},"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.",[117,1459,1461],{"id":1460},"no-user-generated-content","No user-generated content",[14,1463,1464],{},"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.",[117,1466,1468],{"id":1467},"no-built-in-search","No built-in search",[14,1470,1471],{},"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.",[117,1473,1475],{"id":1474},"relational-depth","Relational depth",[14,1477,1478],{},"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.",[117,1480,1482],{"id":1481},"framer-cms-vs-webflow-cms","Framer CMS vs Webflow CMS",[190,1484,1485,1497],{},[193,1486,1487],{},[196,1488,1489,1492,1494],{},[199,1490,1491],{},"Feature",[199,1493,23],{},[199,1495,1496],{},"Webflow CMS",[209,1498,1499,1509,1520,1531,1540,1550,1559,1568,1577],{},[196,1500,1501,1504,1507],{},[214,1502,1503],{},"Max items (top plan)",[214,1505,1506],{},"10,000",[214,1508,1506],{},[196,1510,1511,1514,1517],{},[214,1512,1513],{},"Native filtering",[214,1515,1516],{},"Dynamic Filters (basic)",[214,1518,1519],{},"More capable natively",[196,1521,1522,1525,1528],{},[214,1523,1524],{},"Scheduled publishing",[214,1526,1527],{},"Plugin required",[214,1529,1530],{},"Native",[196,1532,1533,1536,1538],{},[214,1534,1535],{},"CMS API",[214,1537,981],{},[214,1539,981],{},[196,1541,1542,1545,1547],{},[214,1543,1544],{},"Drafts/versioning",[214,1546,989],{},[214,1548,1549],{},"Limited",[196,1551,1552,1555,1557],{},[214,1553,1554],{},"Rich text editor",[214,1556,981],{},[214,1558,981],{},[196,1560,1561,1564,1566],{},[214,1562,1563],{},"Reference fields",[214,1565,981],{},[214,1567,981],{},[196,1569,1570,1573,1575],{},[214,1571,1572],{},"CSV import",[214,1574,981],{},[214,1576,981],{},[196,1578,1579,1582,1584],{},[214,1580,1581],{},"Full-text search",[214,1583,1527],{},[214,1585,1586],{},"Plugin/code required",[14,1588,1589,1590,46],{},"For a detailed comparison of the full platforms, see our ",[840,1591,1593],{"href":1592},"/blog/framer-vs-webflow","Framer vs Webflow guide",[29,1595],{},[32,1597,1599],{"id":1598},"putting-it-together-cms-for-real-projects","Putting it together: CMS for real projects",[14,1601,1602],{},"Here's how the pieces connect for common project types.",[14,1604,1605,1608,1609,1611],{},[21,1606,1607],{},"Client blog",": One collection (",[129,1610,170],{},") 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.",[14,1613,1614,1608,1617,1620],{},[21,1615,1616],{},"Property directory",[129,1618,1619],{},"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.",[14,1622,1623,1608,1626,1629],{},[21,1624,1625],{},"Job board",[129,1627,1628],{},"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.",[29,1631],{},[32,1633,1635],{"id":1634},"faq","FAQ",[117,1637,35],{"id":1638},"what-is-framer-cms-1",[14,1640,1641],{},"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.",[117,1643,1645],{"id":1644},"what-are-the-limitations-of-framer-cms","What are the limitations of Framer CMS?",[14,1647,1648],{},"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.",[117,1650,1652],{"id":1651},"can-i-import-content-into-framer-cms","Can I import content into Framer CMS?",[14,1654,1655],{},"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.",[117,1657,1659],{"id":1658},"does-framer-cms-have-an-api","Does Framer CMS have an API?",[14,1661,1662,1663,1667],{},"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 ",[840,1664,1666],{"href":842,"rel":1665},[844],"official Framer API documentation"," for endpoint reference and authentication setup.",[117,1669,1671],{"id":1670},"how-do-i-add-advanced-filtering-to-framer-cms","How do I add advanced filtering to Framer CMS?",[14,1673,1674,1675,1677],{},"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. ",[840,1676,1055],{"href":468}," adds all of this with a drag-and-drop setup, no custom code required. Free tier available, paid plans from $79 lifetime.",[117,1679,1681],{"id":1680},"how-do-i-schedule-blog-posts-in-framer-cms","How do I schedule blog posts in Framer CMS?",[14,1683,1684],{},"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.",[29,1686],{},[32,1688,1690],{"id":1689},"bottom-line","Bottom line",[14,1692,1693],{},"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.",[14,1695,1696],{},"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.",[14,1698,1699],{},"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.",[14,1701,1702],{},"Build with native Framer CMS where it's enough. Reach for plugins when the project needs more.",[14,1704,1705],{},[1706,1707,1708],"em",{},"Last updated: June 2026",{"title":1267,"searchDepth":1710,"depth":1710,"links":1711},2,[1712,1713,1719,1722,1727,1731,1735,1739,1740,1744,1745,1746,1747,1754,1763,1764,1772],{"id":34,"depth":1710,"text":35},{"id":111,"depth":1710,"text":112,"children":1714},[1715,1717,1718],{"id":119,"depth":1716,"text":120},3,{"id":163,"depth":1716,"text":164},{"id":184,"depth":1716,"text":185},{"id":375,"depth":1710,"text":376,"children":1720},[1721],{"id":428,"depth":1716,"text":429},{"id":477,"depth":1710,"text":478,"children":1723},[1724,1725,1726],{"id":492,"depth":1716,"text":493},{"id":523,"depth":1716,"text":524},{"id":560,"depth":1716,"text":561},{"id":586,"depth":1710,"text":587,"children":1728},[1729,1730],{"id":604,"depth":1716,"text":605},{"id":638,"depth":1716,"text":639},{"id":684,"depth":1710,"text":685,"children":1732},[1733,1734],{"id":693,"depth":1716,"text":694},{"id":730,"depth":1716,"text":731},{"id":771,"depth":1710,"text":772,"children":1736},[1737,1738],{"id":789,"depth":1716,"text":790},{"id":848,"depth":1716,"text":849},{"id":866,"depth":1710,"text":867},{"id":924,"depth":1710,"text":925,"children":1741},[1742,1743],{"id":935,"depth":1716,"text":936},{"id":958,"depth":1716,"text":959},{"id":1048,"depth":1710,"text":1049},{"id":1133,"depth":1710,"text":1134},{"id":1178,"depth":1710,"text":1179},{"id":1242,"depth":1710,"text":1243,"children":1748},[1749,1750,1751,1752,1753],{"id":1249,"depth":1716,"text":1250},{"id":1283,"depth":1716,"text":1284},{"id":1303,"depth":1716,"text":1304},{"id":1321,"depth":1716,"text":1322},{"id":1337,"depth":1716,"text":1338},{"id":1360,"depth":1710,"text":1361,"children":1755},[1756,1757,1758,1759,1760,1761,1762],{"id":1367,"depth":1716,"text":1368},{"id":1446,"depth":1716,"text":1447},{"id":1453,"depth":1716,"text":1454},{"id":1460,"depth":1716,"text":1461},{"id":1467,"depth":1716,"text":1468},{"id":1474,"depth":1716,"text":1475},{"id":1481,"depth":1716,"text":1482},{"id":1598,"depth":1710,"text":1599},{"id":1634,"depth":1710,"text":1635,"children":1765},[1766,1767,1768,1769,1770,1771],{"id":1638,"depth":1716,"text":35},{"id":1644,"depth":1716,"text":1645},{"id":1651,"depth":1716,"text":1652},{"id":1658,"depth":1716,"text":1659},{"id":1670,"depth":1716,"text":1671},{"id":1680,"depth":1716,"text":1681},{"id":1689,"depth":1710,"text":1690},"Tutorials","Everything you need to know about Framer CMS: collections, fields, CMS pages, CSV import, dynamic filtering, SEO, and real limitations. Updated 2026.","md",false,"/framerhub/img/blog/framer-cms-complete-guide/framer-cms-complete-guide.webp",{"metaTitle":1779,"metaDescription":1780,"primaryKeyword":1781,"secondaryKeywords":1782,"heroImage":1777,"ogImage":1777,"schema":1788,"headline":5,"datePublished":650,"dateModified":650,"[ { type: \"FAQPage\" } ]":1791,"createdAt":1792},"The Complete Guide to Framer CMS (2026) | FramerHub","Master Framer CMS in 2026. Collections, fields, reference fields, CSV import, dynamic filters, SEO, and honest limitations. Built by Framer plugin pros.","framer cms",[1783,1784,1785,1786,1787],"framer cms tutorial","framer cms collections","framer cms api","framer cms limitations","how to use framer cms",[1789],{"type":1790},"Article",null,"2026-05-22",true,"/blog/framer-cms-complete-guide","2026-05-22T00:00:00.000Z",12,{"title":5,"description":1774},"framer-cms-complete-guide","blog/framer-cms-complete-guide",[1801,508,1802],"Framer","Guide","JBeEJFlK9GBlrY8AfKJkd8PgIsVYf-gi8z4YdB5JJ2k",[1805],{"id":1806,"title":1807,"author":1808,"body":1809,"category":1773,"description":2718,"extension":1775,"featured":1776,"image":2719,"meta":2720,"navigation":1793,"path":1114,"published":1793,"publishedAt":2732,"readingTime":2733,"robots":1791,"seo":2734,"slug":2735,"stem":2736,"tags":2737,"updatedAt":2732,"__hash__":2740},"blog/blog/framer-dynamic-filters-guide.md","Framer Dynamic Filters: The Complete Guide to CMS Filtering (2026)",{"name":7,"avatar":8,"bio":9},{"type":11,"value":1810,"toc":2679},[1811,1814,1817,1824,1827,1833,1835,1839,1842,1845,1856,1859,1862,1868,1875,1877,1881,1884,1890,1894,1897,1900,1904,1907,1910,1914,1917,1920,1924,1927,1930,1934,1937,1940,1942,1946,1949,1954,1957,1963,1968,1971,1977,1982,1985,1991,1996,1999,2005,2010,2013,2019,2024,2027,2033,2038,2041,2047,2050,2052,2056,2059,2065,2071,2077,2083,2086,2092,2094,2098,2101,2104,2110,2114,2117,2123,2127,2130,2133,2136,2139,2143,2153,2157,2164,2168,2171,2182,2189,2193,2196,2200,2203,2205,2209,2339,2342,2344,2348,2351,2357,2361,2364,2373,2379,2383,2386,2393,2396,2399,2402,2406,2409,2412,2418,2420,2424,2427,2434,2448,2468,2481,2491,2500,2511,2523,2531,2533,2537,2540,2588,2591,2594,2596,2598,2602,2605,2609,2612,2616,2622,2626,2629,2633,2639,2641,2643,2646,2649,2655,2668,2675],[14,1812,1813],{},"You got the brief. Real estate listings. A car marketplace. A job board. A directory with 200+ items.",[14,1815,1816],{},"The client wants filtering like Amazon. Price range slider. Filter by location. Filter by type. All at once. Remove one filter without clearing the rest.",[14,1818,1819,1820,1823],{},"You open Framer, find ",[21,1821,1822],{},"framer dynamic filters"," in the CMS panel, and start wiring things up. For one dropdown, it works great. Then you try to combine search, sort, and a price range at the same time. That's where things stop.",[14,1825,1826],{},"This guide covers what native Framer Dynamic Filters actually do well, how to set them up step by step, and what to reach for when your project needs more than a single dropdown.",[14,1828,1829],{},[103,1830],{"alt":1831,"src":1832},"Real Estate Listing with Framer Dynamic Filters","/framerhub/img/blog/framer-dynamic-filters-guide/real-estate-listing-framer-dynamic-filters.webp",[29,1834],{},[32,1836,1838],{"id":1837},"what-are-framer-dynamic-filters","What are Framer Dynamic Filters?",[14,1840,1841],{},"Framer Dynamic Filters are native filtering controls that shipped in early 2026. They let you connect CMS fields to page variables. When a visitor clicks a tab or types in a search box, the collection list updates instantly without a page reload.",[14,1843,1844],{},"The core idea is simple:",[138,1846,1847,1850,1853],{},[76,1848,1849],{},"A CMS field (category, tag, location, price) binds to a page variable",[76,1851,1852],{},"A filter control (dropdown, tab, search input) updates that variable when a visitor interacts",[76,1854,1855],{},"The collection list re-renders showing only items that match the variable value",[14,1857,1858],{},"The key shift from older Framer filtering: no variants. Before Dynamic Filters, showing filtered states meant creating a separate variant for each filter combination. Five categories times four price tiers equals 20 variants to build and maintain. One CMS update meant touching 20 frames. Dynamic Filters eliminated that entirely.",[14,1860,1861],{},"Filter controls are also not tied to the collection list's position. You can place a search bar in the header, tabs in a sticky nav, and a checkbox group in a sidebar. All of them control the same collection. That layout flexibility matters for real site designs.",[14,1863,1864],{},[103,1865],{"alt":1866,"src":1867},"Framer Dynamic Filters configuration panel","/framerhub/img/blog/framer-dynamic-filters-guide/framer-dynamic-filters-config-panel.webp",[14,1869,1870,1871,1874],{},"For a deeper look at how Framer's CMS system works overall, the ",[840,1872,1873],{"href":1794},"Framer CMS complete guide"," covers collections, schemas, and content structure from the ground up.",[29,1876],{},[32,1878,1880],{"id":1879},"the-5-native-filter-types-in-framer","The 5 native filter types in Framer",[14,1882,1883],{},"Framer ships five filter control types. Each covers a different interaction pattern.",[14,1885,1886],{},[103,1887],{"alt":1888,"src":1889},"Five native Framer Dynamic Filter types shown side by side: search, tabs, dropdown, checkboxes, and toggle","/framerhub/img/blog/framer-dynamic-filters-guide/framer-dynamic-filters-types.webp",[117,1891,1893],{"id":1892},"search-field","Search field",[14,1895,1896],{},"A text input that filters the collection as the visitor types. Matches against one CMS text field (title, name, or description). Real-time updates, no submit button needed.",[14,1898,1899],{},"Works well for: blog archives, team directories, simple resource libraries.",[117,1901,1903],{"id":1902},"dynamic-tabs","Dynamic tabs",[14,1905,1906],{},"Horizontal pill or tab-style buttons. Each button represents one value from a CMS option field. Clicking filters to that value.",[14,1908,1909],{},"Works well for: category switching on portfolios, product type filters on simple sites, \"All / Beginner / Advanced\" on course libraries.",[117,1911,1913],{"id":1912},"dropdowns","Dropdowns",[14,1915,1916],{},"A select menu. Visitor picks one value from a CMS option field.",[14,1918,1919],{},"Works well for: location filters, single-value attribute selectors, industry or sector filters.",[117,1921,1923],{"id":1922},"checkboxes","Checkboxes",[14,1925,1926],{},"Multi-select. Visitors pick several values and see results matching any selected option. OR logic within the filter.",[14,1928,1929],{},"Works well for: tag filters, feature filters, multi-category filtering where OR logic is acceptable.",[117,1931,1933],{"id":1932},"toggles","Toggles",[14,1935,1936],{},"Boolean control. Shows or hides items based on a true/false CMS field. Think \"Remote only,\" \"Featured,\" or \"Available now.\"",[14,1938,1939],{},"Works well for: availability states, featured-item highlights, boolean attribute filtering.",[29,1941],{},[32,1943,1945],{"id":1944},"how-to-set-up-framer-dynamic-filters-step-by-step","How to set up Framer Dynamic Filters: step by step",[14,1947,1948],{},"Setting up native filters takes under ten minutes on a clean project.",[14,1950,1951],{},[21,1952,1953],{},"Step 1: Build your CMS collection",[14,1955,1956],{},"Open the CMS panel. Create or select a collection. Confirm you have the right field types: option fields for tabs, dropdowns, and checkboxes; text fields for search; boolean fields for toggles.",[14,1958,1959],{},[103,1960],{"alt":1961,"src":1962},"Framer CMS collection setup with option and text fields","/framerhub/img/blog/framer-dynamic-filters-guide/framer-cms-collection-setup.webp",[14,1964,1965],{},[21,1966,1967],{},"Step 2: Add a Collection List to your canvas",[14,1969,1970],{},"Drag a Collection List onto your page. Connect it to your collection. Design the item card.",[14,1972,1973],{},[103,1974],{"alt":1975,"src":1976},"Framer Collection List on canvas","/framerhub/img/blog/framer-dynamic-filters-guide/framer-collection-list-on-canvas.webp",[14,1978,1979],{},[21,1980,1981],{},"Step 3: Open the Filters panel",[14,1983,1984],{},"Select the Collection List. Open the right sidebar and find the Filters tab.",[14,1986,1987],{},[103,1988],{"alt":1989,"src":1990},"Framer Filters panel open for a Collection List","/framerhub/img/blog/framer-dynamic-filters-guide/framer-filters-panel.webp",[14,1992,1993],{},[21,1994,1995],{},"Step 4: Add a filter",[14,1997,1998],{},"Click \"Add Filter.\" Pick a type. Select the CMS field it should operate on. Framer creates a filter control and a page variable automatically.",[14,2000,2001],{},[103,2002],{"alt":2003,"src":2004},"Add Filter button in Framer Filters panel","/framerhub/img/blog/framer-dynamic-filters-guide/add-filter-button.webp",[14,2006,2007],{},[21,2008,2009],{},"Step 5: Place the filter control",[14,2011,2012],{},"The control appears as a layer. Move it wherever your design needs it: above the collection, in a sidebar, in the header. It's decoupled from the collection list.",[14,2014,2015],{},[103,2016],{"alt":2017,"src":2018},"Framer filter control on canvas","/framerhub/img/blog/framer-dynamic-filters-guide/framer-filter-control-on-canvas.webp",[14,2020,2021],{},[21,2022,2023],{},"Step 6: Add more filters",[14,2025,2026],{},"Repeat Steps 4 and 5 for each filter field. Multiple filters stack as AND logic by default. Each active filter narrows the collection further.",[14,2028,2029],{},[103,2030],{"alt":2031,"src":2032},"Multiple filters in Framer Filters panel","/framerhub/img/blog/framer-dynamic-filters-guide/multiple-filters.webp",[14,2034,2035],{},[21,2036,2037],{},"Step 7: Preview and test",[14,2039,2040],{},"Use Preview mode (Cmd+P or Ctrl+P). Click your filter options, type in the search field, confirm the collection updates correctly.",[14,2042,2043],{},[103,2044],{"alt":2045,"src":2046},"Framer Dynamic Filters preview mode","/framerhub/img/blog/framer-dynamic-filters-guide/framer-dynamic-filters-preview-mode.webp",[14,2048,2049],{},"That's the full native setup. For a single-filter use case on a small collection, this is all you need.",[29,2051],{},[32,2053,2055],{"id":2054},"where-native-framer-dynamic-filters-work-well","Where native Framer Dynamic Filters work well",[14,2057,2058],{},"Native filters are the right tool when your use case is genuinely simple.",[14,2060,2061,2064],{},[21,2062,2063],{},"Blog with category tabs."," Ten posts, five categories. Visitors click a tab to see posts in that category. One filter, one option field, done.",[14,2066,2067,2070],{},[21,2068,2069],{},"Portfolio with project type filter."," A designer's portfolio with a dropdown to filter by industry. Clean, fast, no maintenance.",[14,2072,2073,2076],{},[21,2074,2075],{},"Team page with department filter."," Department tabs on a small team directory. One filter dimension.",[14,2078,2079,2082],{},[21,2080,2081],{},"Simple resource library."," A collection of 30-50 resources with a category dropdown.",[14,2084,2085],{},"In all these cases, native Dynamic Filters do the job. Adding a plugin would introduce unnecessary complexity. Use the simpler tool.",[14,2087,2088],{},[103,2089],{"alt":2090,"src":2091},"Simple blog page using native Framer Dynamic Filters with category tab navigation","/framerhub/img/blog/framer-dynamic-filters-guide/simple-blog-page-using-native-framer-dynamic-filters.webp",[29,2093],{},[32,2095,2097],{"id":2096},"where-native-filters-fall-short-for-real-cms-sites","Where native filters fall short for real CMS sites",[14,2099,2100],{},"This is where the gap becomes visible. These are not edge cases. They're standard requirements for directories, job boards, real estate listings, car marketplaces, and any serious listing site.",[14,2102,2103],{},"I've seen Framer designers hit this same wall. You start with one dropdown, it works great. Then the client says \"I want a price range filter like Amazon.\" Or \"users need to filter by location AND property type AND bedrooms all at once.\" Or you try to build a desktop sidebar that stays in sync with a mobile drawer. That's where native filtering stops.",[14,2105,2106],{},[103,2107],{"alt":2108,"src":2109},"Comparison of native Framer filtering versus Framer CMS Filter plugin for a real estate directory site","/framerhub/img/blog/framer-dynamic-filters-guide/comparison-of-native-framer-filtering-versus-framer-cms-filter-plugin.webp",[117,2111,2113],{"id":2112},"multi-field-search","Multi-field search",[14,2115,2116],{},"Native search matches against one CMS text field. If your job board has a title, description, company name, and tags, visitors can only search one field. They type \"product designer\" and only the title is searched. Matching descriptions and tags are invisible.",[14,2118,527,2119,2122],{},[840,2120,2121],{"href":468},"CMS Filter plugin"," runs search across multiple fields simultaneously: title, description, tags, and author in one query.",[117,2124,2126],{"id":2125},"sorting","Sorting",[14,2128,2129],{},"Native Dynamic Filters have no built-in sorting. Visitors can't sort by price, date, relevance, or name. For any collection where order matters to the visitor, this is a hard gap.",[117,2131,1022],{"id":2132},"active-filter-chips-users-can-remove",[14,2134,2135],{},"When a visitor applies three filters, native Framer shows nothing that tells them what's active. No chips. No \"you're viewing: Remote / Design / London.\" They can't remove one filter without clearing everything.",[14,2137,2138],{},"Active filter chips are standard UX on any real filtering experience. They communicate what's applied and let visitors refine without starting over. That's the \"filter by location, price, and type all at once, then remove just the price filter\" experience clients ask for.",[117,2140,2142],{"id":2141},"result-counts","Result counts",[14,2144,2145,2146,2148,2149,2152],{},"Knowing there are \"14 results\" before clicking a filter helps visitors make better decisions. Native Dynamic Filters don't display a result count. The ",[840,2147,2121],{"href":468}," includes a ",[129,2150,2151],{},"CMSCount"," component that updates in real time as filters change.",[117,2154,2156],{"id":2155},"clear-all","Clear-all",[14,2158,2159,2160,2163],{},"Native filters don't ship a coordinated clear-all control. You can wire one manually via page variable resets, but it's custom work. The plugin includes a ",[129,2161,2162],{},"CMSClearAll"," component that resets all active filters in one click.",[117,2165,2167],{"id":2166},"synchronized-filter-groups-across-layouts","Synchronized filter groups across layouts",[14,2169,2170],{},"This is the one native filters can't solve. Real responsive sites often need:",[73,2172,2173,2176,2179],{},[76,2174,2175],{},"A top bar with Location and Category filters on desktop",[76,2177,2178],{},"A sidebar with Price Range and Bedrooms",[76,2180,2181],{},"A mobile drawer with all of the above in a different layout",[14,2183,2184,2185,2188],{},"Native page variables can drive one control per filter. They can't keep a sidebar checkbox and a mobile drawer checkbox synchronized when they both represent the same filter. The CMS Filter plugin is built around a shared-state architecture: multiple controls coordinate through a ",[129,2186,2187],{},"storeKey",". Desktop sidebar and mobile drawer stay in sync automatically.",[117,2190,2192],{"id":2191},"price-range-sliders","Price range sliders",[14,2194,2195],{},"Native Framer supports option fields, text, and booleans. Range filters (price: $500k to $1M, area: 1,000 to 2,500 sq ft) require a range slider with dual handles. Native filtering doesn't provide that. The plugin includes dual-handle range sliders with min/max values and unit formatting.",[117,2197,2199],{"id":2198},"filtering-on-reference-fields","Filtering on reference fields",[14,2201,2202],{},"Real CMS models use reference fields. A job board where each posting references a Company item. A directory where each listing references a Category item. Native Dynamic Filters work cleanly with option fields. Filtering on single-reference and multi-reference fields is where the native system runs thin. The plugin handles both.",[29,2204],{},[32,2206,2208],{"id":2207},"native-vs-cms-filter-plugin-comparison-table","Native vs CMS Filter plugin: comparison table",[190,2210,2211,2224],{},[193,2212,2213],{},[196,2214,2215,2218,2221],{},[199,2216,2217],{},"Capability",[199,2219,2220],{},"Framer Native",[199,2222,2223],{},"CMS Filter Plugin",[209,2225,2226,2235,2244,2255,2264,2272,2280,2289,2299,2309,2320,2329],{},[196,2227,2228,2231,2233],{},[214,2229,2230],{},"Search (single field)",[214,2232,981],{},[214,2234,981],{},[196,2236,2237,2239,2241],{},[214,2238,2113],{},[214,2240,989],{},[214,2242,2243],{},"Yes (title, description, tags, author)",[196,2245,2246,2249,2252],{},[214,2247,2248],{},"Tabs, dropdowns, checkboxes, toggles",[214,2250,2251],{},"Yes (5 types)",[214,2253,2254],{},"Yes (8+ types)",[196,2256,2257,2260,2262],{},[214,2258,2259],{},"Price range slider",[214,2261,989],{},[214,2263,981],{},[196,2265,2266,2268,2270],{},[214,2267,2126],{},[214,2269,989],{},[214,2271,981],{},[196,2273,2274,2276,2278],{},[214,2275,1022],{},[214,2277,989],{},[214,2279,981],{},[196,2281,2282,2285,2287],{},[214,2283,2284],{},"Result count display",[214,2286,989],{},[214,2288,981],{},[196,2290,2291,2294,2297],{},[214,2292,2293],{},"Clear-all button",[214,2295,2296],{},"No (manual workaround)",[214,2298,981],{},[196,2300,2301,2304,2306],{},[214,2302,2303],{},"Synchronized filter groups",[214,2305,989],{},[214,2307,2308],{},"Yes (top bar, sidebar, mobile)",[196,2310,2311,2314,2317],{},[214,2312,2313],{},"AND/OR logic across filters",[214,2315,2316],{},"AND only",[214,2318,2319],{},"Full AND/OR control",[196,2321,2322,2325,2327],{},[214,2323,2324],{},"Single-reference field filtering",[214,2326,1549],{},[214,2328,981],{},[196,2330,2331,2334,2337],{},[214,2332,2333],{},"Multi-reference field filtering",[214,2335,2336],{},"Unpredictable",[214,2338,981],{},[14,2340,2341],{},"For small collections with simple filter needs, native is the right starting point. For directories, real estate listings, job boards, marketplaces, and resource libraries, the plugin covers what native doesn't.",[29,2343],{},[32,2345,2347],{"id":2346},"real-projects-that-need-more-than-native-filtering","Real projects that need more than native filtering",[14,2349,2350],{},"These are the project types where native filtering hits its limits fast. They're also the exact use cases where the CMS Filter plugin was built to deliver.",[14,2352,2353],{},[103,2354],{"alt":2355,"src":2356},"Four project types requiring advanced Framer CMS filtering: real estate, cars, job board, resource library","/framerhub/img/blog/framer-dynamic-filters-guide/four-project-types-requiring-advanced-framer-cms-filtering.webp",[117,2358,2360],{"id":2359},"real-estate-listings","Real estate listings",[14,2362,2363],{},"You need: price range slider, location, bedrooms (3 OR 4 OR 5), property type, and amenity checkboxes. Desktop shows a top bar with location and type, a sidebar with price range and bedrooms. Mobile shows a drawer with everything. Both layouts need to share filter state.",[14,2365,2366,2367],{},"Try this live: ",[840,2368,2372],{"href":2369,"rel":2370,"target":2371},"https://framercmsfilter.com/demo?demo=real-estate",[844],"_blank","framercmsfilter.com/demo?demo=real-estate",[14,2374,2375,2376,2378],{},"That synchronized layout is what the plugin's ",[129,2377,2187],{}," system solves. One key, multiple filter groups, shared state automatically.",[117,2380,2382],{"id":2381},"car-marketplace","Car marketplace",[14,2384,2385],{},"You need: make, model, year range, mileage range, fuel type, and transmission. \"I tried the variant workaround and hit a wall past 30 items\" is the exact feedback from Framer designers who built car sites before this existed. Six filters on 200+ listings is not a variant problem. It's a filter system problem.",[14,2387,2366,2388],{},[840,2389,2392],{"href":2390,"rel":2391,"target":2371},"https://framercmsfilter.com/demo?demo=cars",[844],"framercmsfilter.com/demo?demo=cars",[117,2394,1625],{"id":2395},"job-board",[14,2397,2398],{},"You need: role, location, remote/hybrid/on-site toggle, department, and seniority. Visitors apply three filters, then want to see \"12 jobs match\" and remove just \"Seniority: Senior\" without clearing everything else.",[14,2400,2401],{},"That's active filter chips, result count, and clear-all working together. None of those ship with native Dynamic Filters.",[117,2403,2405],{"id":2404},"directory-and-listing-sites","Directory and listing sites",[14,2407,2408],{},"A local business directory needs: category, city, price range, and tags. Four simultaneous filters. Active chips. A clear-all button. A result count.",[14,2410,2411],{},"Native handles one of those cleanly. The rest need the plugin.",[14,2413,2414,2415,2417],{},"For more on structuring CMS content for complex sites, the ",[840,2416,1873],{"href":1794}," covers collections, reference fields, and layout patterns in detail.",[29,2419],{},[32,2421,2423],{"id":2422},"setting-up-the-cms-filter-plugin","Setting up the CMS Filter plugin",[14,2425,2426],{},"The setup follows a similar pattern to native filters, with a broader component set.",[2428,2429,2433],"video",{"src":2430,"autoPlay":1793,"controls":1793,"playsInline":1793,"className":2431},"/framerhub/video/FramerCMSFilter-Filters.webm",[2432],"rounded-xl","\nYour browser does not support the video tag.\n",[14,2435,2436,2439,2440,2443,2444,46],{},[21,2437,2438],{},"Step 1."," Install from ",[840,2441,2442],{"href":468},"framerhub.io/plugins/framer-cms-filter"," or directly from the ",[840,2445,2447],{"href":1120,"rel":2446},[844],"Framer Marketplace",[14,2449,2450,2453,2454,2457,2458,2460,2461,443,2464,2467],{},[21,2451,2452],{},"Step 2."," Replace your Collection List with a ",[129,2455,2456],{},"CMSCollection"," component. Connect it to your CMS collection. Set a ",[129,2459,2187],{}," (a string that names this filter group, e.g., ",[129,2462,2463],{},"\"listings\"",[129,2465,2466],{},"\"jobs\"",").",[14,2469,2470,2473,2474,2477,2478,2480],{},[21,2471,2472],{},"Step 3."," Add a ",[129,2475,2476],{},"CMSFilters"," component. Set the same ",[129,2479,2187],{},". Configure each filter: pick the type, select the CMS field, set display options.",[14,2482,2483,2486,2487,2490],{},[21,2484,2485],{},"Step 4."," Add ",[129,2488,2489],{},"CMSSearch"," for multi-field search. Configure which fields to search across.",[14,2492,2493,2486,2496,2499],{},[21,2494,2495],{},"Step 5.",[129,2497,2498],{},"CMSSort"," to give visitors sorting controls (newest, price: low to high, alphabetical, etc.).",[14,2501,2502,2486,2505,2507,2508,2510],{},[21,2503,2504],{},"Step 6.",[129,2506,2151],{}," to show \"X results\" and ",[129,2509,2162],{}," to reset all active filters.",[14,2512,2513,2516,2517,2519,2520,2522],{},[21,2514,2515],{},"Step 7."," For synchronized layouts, duplicate the ",[129,2518,2476],{}," block for your mobile layout. Set the same ",[129,2521,2187],{},". Both filter groups share state automatically. Select a location on desktop. The mobile drawer reflects it.",[14,2524,2525,2526,46],{},"Full documentation lives at ",[840,2527,2530],{"href":2528,"rel":2529,"target":2371},"https://framercmsfilter.com",[844],"framercmsfilter.com",[29,2532],{},[32,2534,2536],{"id":2535},"pricing-and-access","Pricing and access",[14,2538,2539],{},"Framer CMS Filter is a one-time purchase. No subscription.",[190,2541,2542,2554],{},[193,2543,2544],{},[196,2545,2546,2548,2551],{},[199,2547,1377],{},[199,2549,2550],{},"Price",[199,2552,2553],{},"Who it's for",[209,2555,2556,2566,2577],{},[196,2557,2558,2560,2563],{},[214,2559,1234],{},[214,2561,2562],{},"$0",[214,2564,2565],{},"Basic filtering, try before buying",[196,2567,2568,2571,2574],{},[214,2569,2570],{},"Personal",[214,2572,2573],{},"$79 one-time",[214,2575,2576],{},"Freelancers, single-site use",[196,2578,2579,2582,2585],{},[214,2580,2581],{},"Agency",[214,2583,2584],{},"$179 one-time",[214,2586,2587],{},"Unlimited client projects",[14,2589,2590],{},"All paid plans include lifetime updates, 14-day refund policy, and unlimited client projects on the Agency tier. Trusted by 1,500+ Framer professionals.",[14,2592,2593],{},"If you build more than one or two client sites per year, the Agency plan covers everything for the cost of a few hours of work.",[29,2595],{},[32,2597,1635],{"id":1634},[117,2599,2601],{"id":2600},"does-framer-have-built-in-filtering","Does Framer have built-in filtering?",[14,2603,2604],{},"Yes. Framer ships native Dynamic Filters that let you bind CMS fields to page variables. You can add search, tabs, dropdowns, checkboxes, and toggles without writing code. It works well for basic single-field filtering. For multi-field search, sort, active filter chips, result counts, and synchronized filter groups across layouts, a dedicated plugin is the practical next step.",[117,2606,2608],{"id":2607},"what-are-the-limitations-of-framers-native-dynamic-filters","What are the limitations of Framer's native Dynamic Filters?",[14,2610,2611],{},"Native Dynamic Filters are page-variable-driven and work cleanly for simple use cases. They don't cover multi-field search, built-in sorting, active filter chips users can remove, result counts, a clear-all button, price range sliders, or synchronized filter groups across desktop and mobile layouts. For directories, job boards, real estate listings, and marketplaces, you'll hit those limits fast.",[117,2613,2615],{"id":2614},"what-is-the-difference-between-framer-dynamic-filters-and-the-cms-filter-plugin","What is the difference between Framer Dynamic Filters and the CMS Filter plugin?",[14,2617,2618,2619,2621],{},"Framer's native Dynamic Filters let you bind one field to one page variable. The ",[840,2620,2121],{"href":468}," is a full filtering system: multi-field search, 8+ filter types, sort, active filter chips, result counts, clear-all, AND/OR logic, and filter groups that stay synchronized across top bar, sidebar, and mobile layouts. Native is the baseline. The plugin is the advanced layer for real CMS sites.",[117,2623,2625],{"id":2624},"do-framer-dynamic-filters-work-on-mobile","Do Framer Dynamic Filters work on mobile?",[14,2627,2628],{},"Framer Dynamic Filters render and function on mobile because they sit outside the collection list and can be placed anywhere on the canvas. However, native filters don't support synchronized duplicate filter groups. Building a desktop sidebar and a mobile drawer that share state isn't possible natively. The CMS Filter plugin supports synchronized filter groups across layouts.",[117,2630,2632],{"id":2631},"when-should-i-use-the-cms-filter-plugin-instead-of-native-dynamic-filters","When should I use the CMS Filter plugin instead of native Dynamic Filters?",[14,2634,2635,2636,2638],{},"Use native filters when you need one or two simple dropdowns or tabs on a small collection. Upgrade to the ",[840,2637,2121],{"href":468}," when you need: multi-field search, sorting, active filter chips users can remove, result counts, a clear-all button, price range sliders, reference-aware filtering, or filter groups that stay in sync across desktop and mobile layouts.",[29,2640],{},[32,2642,1690],{"id":1689},[14,2644,2645],{},"Framer's native Dynamic Filters solved the variant hell problem. For simple sites, one or two dropdowns on a small collection, they're all you need.",[14,2647,2648],{},"For real CMS sites, native is the starting point, not the finish line. Multi-field search, sorting, filter chips users can remove, result counts, synchronized filter groups, and reference-aware filtering are what turn a CMS list into a real discovery experience.",[14,2650,2651,2652,2654],{},"If your project needs any of those, the ",[840,2653,2121],{"href":468}," is the dedicated tool for that gap.",[14,2656,2657,2658,2662,2663,2667],{},"Browse the ",[840,2659,2661],{"href":2369,"rel":2660,"target":2371},[844],"live real estate demo"," or the ",[840,2664,2666],{"href":2390,"rel":2665,"target":2371},[844],"cars demo"," to see it in a real project context. If that's what your client needs, the setup takes about 15 minutes.",[14,2669,2670,2671,2674],{},"Browse the full ",[840,2672,2673],{"href":916},"plugin catalog at FramerHub"," to see what else extends Framer's native capabilities.",[14,2676,2677],{},[1706,2678,1708],{},{"title":1267,"searchDepth":1710,"depth":1710,"links":2680},[2681,2682,2689,2690,2691,2701,2702,2708,2709,2710,2717],{"id":1837,"depth":1710,"text":1838},{"id":1879,"depth":1710,"text":1880,"children":2683},[2684,2685,2686,2687,2688],{"id":1892,"depth":1716,"text":1893},{"id":1902,"depth":1716,"text":1903},{"id":1912,"depth":1716,"text":1913},{"id":1922,"depth":1716,"text":1923},{"id":1932,"depth":1716,"text":1933},{"id":1944,"depth":1710,"text":1945},{"id":2054,"depth":1710,"text":2055},{"id":2096,"depth":1710,"text":2097,"children":2692},[2693,2694,2695,2696,2697,2698,2699,2700],{"id":2112,"depth":1716,"text":2113},{"id":2125,"depth":1716,"text":2126},{"id":2132,"depth":1716,"text":1022},{"id":2141,"depth":1716,"text":2142},{"id":2155,"depth":1716,"text":2156},{"id":2166,"depth":1716,"text":2167},{"id":2191,"depth":1716,"text":2192},{"id":2198,"depth":1716,"text":2199},{"id":2207,"depth":1710,"text":2208},{"id":2346,"depth":1710,"text":2347,"children":2703},[2704,2705,2706,2707],{"id":2359,"depth":1716,"text":2360},{"id":2381,"depth":1716,"text":2382},{"id":2395,"depth":1716,"text":1625},{"id":2404,"depth":1716,"text":2405},{"id":2422,"depth":1710,"text":2423},{"id":2535,"depth":1710,"text":2536},{"id":1634,"depth":1710,"text":1635,"children":2711},[2712,2713,2714,2715,2716],{"id":2600,"depth":1716,"text":2601},{"id":2607,"depth":1716,"text":2608},{"id":2614,"depth":1716,"text":2615},{"id":2624,"depth":1716,"text":2625},{"id":2631,"depth":1716,"text":2632},{"id":1689,"depth":1710,"text":1690},"How to set up Framer's native Dynamic Filters step by step, where they fall short for real CMS sites, and when the CMS Filter plugin becomes the better tool.","/framerhub/img/blog/framer-dynamic-filters-guide/real-estate-site.webp",{"metaTitle":2721,"metaDescription":2722,"primaryKeyword":1822,"secondaryKeywords":2723,"heroImage":2719,"ogImage":2719,"schema":2728,"headline":1807,"datePublished":650,"dateModified":650,"[ { type: \"FAQPage\" } ]":1791,"order":2730,"createdAt":2731},"Framer Dynamic Filters: Complete Guide to CMS Filtering 2026","Set up Framer's native Dynamic Filters in minutes. Then learn when real CMS sites, directories, job boards, real estate, need the advanced layer. Updated June 2026.",[2724,2725,2726,2727],"framer cms filter","framer cms filtering","filter framer cms collection","framer directory filtering",[2729],{"type":1790},1,"2026-06-16","2026-06-16T00:00:00.000Z",8,{"title":1807,"description":2718},"framer-dynamic-filters-guide","blog/framer-dynamic-filters-guide",[1801,508,2738,2739],"Filtering","Tutorial","c-rZ9akgJvqO5GwDmEPdl9WSXkcNmC9x5xJUZWtcqvQ",1781534780993]