AutoSEO writes and optimises the articles, then delivers each one as a signed webhook payload that your handler writes into the Framer CMS.
How Framer Sites Are Structured for SEO
Framer publishes sites as server-side rendered (SSR) React applications hosted on Framer's global CDN. Every published page ships pre-rendered HTML to the browser, which means search engine crawlers receive full content on the first HTTP response — no JavaScript execution required to index your text, headings, or links. This architecture gives Framer a meaningful crawlability advantage over purely client-side React frameworks where content arrives only after JavaScript runs.
Each Framer project maps to a custom domain or a framer.app subdomain. Pages are organized in the left-panel sitemap inside the Framer editor. The hierarchy you build there — parent pages and nested child pages — directly determines your URL structure and the internal link graph that crawlers follow. A page nested under a parent automatically inherits a path segment: /parent/child. Flat pages sit at the root: /page-name.
Framer also supports CMS Collections, which generate dynamic pages from structured content. Each collection item produces its own crawlable URL using a slug field you define. These dynamic pages are fully SSR-rendered just like static pages, so they are indexable without any additional configuration.
Exact Technical SEO Levers Inside Framer
Framer exposes a focused but sufficient set of technical SEO controls. Knowing exactly where each control lives and what it does prevents the most common configuration errors.
URL Slugs and Site Structure
Every page in Framer has a slug field accessible in the page settings panel (click the page name in the left panel, then open the gear icon). The slug becomes the URL path segment. Rules that matter for SEO:
- Use lowercase letters, hyphens as word separators, and no trailing slashes — Framer handles trailing-slash redirects automatically.
- Keep slugs short, descriptive, and keyword-relevant. /seo-services-new-york outperforms /page-3 or /untitled.
- CMS Collection slugs are set per item in the slug field of the collection. If you leave it auto-generated from the title, check that special characters and stop words are stripped.
- Changing a slug after publishing creates a broken URL unless you add a redirect. Framer supports 301 redirects under Site Settings → SEO → Redirects. Add the old path and the new destination before republishing.
Metadata: Title Tags and Meta Descriptions
Title tags and meta descriptions are set per page in Page Settings → SEO. For CMS-driven pages, Framer allows dynamic metadata using collection field bindings — you can bind the title tag to a CMS field called "SEO Title" so every collection item gets a unique, populated title automatically.
- Title tag recommended length: 50–60 characters. Framer does not enforce a character limit, so you must count manually or use a preview tool.
- Meta description recommended length: 120–155 characters. Write it as a direct summary of the page's value; it influences click-through rate even though it is not a direct ranking factor.
- Framer also exposes Open Graph fields (OG title, OG description, OG image) in the same SEO panel. Set a custom OG image at 1200×630 px for every key page. If left blank, Framer may fall back to a generic image or none at all.
Canonical Tags
Framer automatically generates a self-referencing canonical tag on every published page pointing to the page's own URL. You cannot manually override the canonical URL through the standard Framer UI on most plans. This means if you syndicate content from your Framer site elsewhere, the canonical signal originates from Framer's auto-generated tag — which is correct behavior. If you need custom canonical logic, it currently requires injecting a custom canonical tag via Site Settings → General → Custom Code → Head and suppressing the automatic one, which is only reliable on plans that allow full custom code injection.
Sitemaps
Framer auto-generates an XML sitemap at yourdomain.com/sitemap.xml the moment you publish. The sitemap includes all pages that are not marked noindex. CMS collection pages are included automatically once the collection is published. You do not need a plugin or third-party tool to generate the sitemap.
What Framer's sitemap does not do automatically: set custom lastmod dates, assign priority values per page, or exclude specific pages beyond the noindex toggle. For most sites this default sitemap is sufficient. Submit it in Google Search Console → Sitemaps immediately after launch.
Robots.txt and Noindex Controls
Framer generates a robots.txt file automatically at /robots.txt. It references the sitemap and allows all crawlers by default. You can append custom directives under Site Settings → SEO → Robots.txt. Use this to block crawlers from staging paths, thank-you pages, or internal search result URLs that have no indexing value.
Individual pages can be set to noindex via the toggle in Page Settings → SEO → Search Engine Visibility. Turning this on injects a noindex, nofollow meta robots tag and removes the page from the auto-generated sitemap simultaneously — both actions happen together, which is the correct behavior.
Schema Markup and Structured Data
Framer has no native UI for adding JSON-LD schema. The correct method is to paste your JSON-LD script block into Page Settings → Custom Code → Head for page-specific schema, or into Site Settings → General → Custom Code → Head for sitewide schema such as Organization or WebSite. Useful schema types for Framer sites include:
- Organization — sitewide, establishes brand entity signals
- WebPage or WebSite — sitewide, enables Sitelinks Searchbox eligibility
- Article or BlogPosting — per CMS blog post page
- Product — for product landing pages or SaaS pricing pages
- FAQPage — for pages with question-and-answer sections
- LocalBusiness — for location-based service businesses
Validate all schema using Google's Rich Results Test after publishing. A common error is pasting schema into the Body code section instead of Head — both locations work for Google parsing, but Head placement is the standard convention and avoids render-blocking concerns.
Page Speed and Core Web Vitals
Framer's hosting infrastructure handles most performance fundamentals automatically: HTTP/2 delivery, Brotli compression, and a global CDN with edge nodes. Images uploaded directly to Framer are served in modern formats (WebP/AVIF) with automatic resizing. However, several speed issues are entirely within your control:
- Oversized images: Upload images at the largest display size you need. Uploading a 6000 px wide image for a 600 px thumbnail wastes bandwidth even with Framer's resizing, because the original file still transfers before resizing occurs client-side in some configurations.
- Third-party scripts: Every embed — analytics, chat widgets, heatmap tools — added via custom code adds network requests. Load non-critical scripts with defer or async attributes inside the custom code panel.
- Custom fonts: Framer loads Google Fonts via its own optimized pipeline. If you upload custom font files, ensure you upload WOFF2 format only and limit font weights to those actually used on the page.
- Animations: Heavy scroll-triggered animations and large Lottie files increase Interaction to Next Paint (INP) scores. Test with PageSpeed Insights and Chrome DevTools Performance panel after adding complex interactions.
Most Common Framer SEO Mistakes
The following mistakes appear repeatedly on Framer sites and are directly responsible for poor crawlability, thin indexation, and low rankings.
| Mistake |
What Goes Wrong |
Fix |
| Publishing on the framer.app subdomain |
All authority and backlinks build on Framer's domain, not yours |
Connect a custom domain before any promotion or link building |
| Leaving default page titles ("Untitled" or page slug only) |
Google rewrites titles; CTR drops; no keyword targeting |
Write a unique, keyword-relevant title for every page before publishing |
| No 301 redirects after slug changes |
Old URLs return 404; crawl budget wasted; backlinks broken |
Add redirects in Site Settings before republishing changed slugs |
| CMS slugs left as auto-generated IDs |
URLs like /blog/a1b2c3 carry no keyword signal |
Add a dedicated SEO Slug field to every CMS collection and populate it |
| Noindex left on after moving from staging |
Site is invisible to Google; no pages appear in search results |
Check Site Settings → SEO → Search Visibility before launch |
| Missing alt text on images |
Image search traffic lost; accessibility failures; crawl signals weakened |
Fill the Alt Text field on every content image in the Framer image panel |
| Embedding all content in frames or components with no text layer |
Crawlers see empty pages; headings and body copy are not in the DOM |
Use native Framer text elements for all primary content; reserve embeds for decorative or interactive elements only |
| No sitemap submission to Search Console |
Discovery relies entirely on crawl; new pages indexed slowly |
Submit yourdomain.com/sitemap.xml in Google Search Console on day one |
The Framer-Specific Heading Hierarchy Problem
Framer's design-first interface makes it easy to style any text element to look like a heading without assigning it the correct HTML heading tag. A large bold text block styled to appear as an H1 may actually be set to Paragraph in the text element's tag dropdown. Crawlers read the tag, not the visual size. Check every page by opening Chrome DevTools → Elements and confirming that your primary page heading uses an h1 tag, section headings use h2, and subsections use h3. In Framer, change the tag by selecting the text element, opening the right panel, and changing the Tag dropdown from P to the appropriate heading level.
Step-by-Step SEO Workflow for Framer Sites
Ranking a Framer site requires a repeatable process: research keywords, write optimized content, configure every on-page field inside Framer's CMS, submit pages for indexing, and track performance in a single dashboard. The steps below cover that full cycle, including where AutoSEO plugs in to remove the manual bottlenecks.
Step 1: Keyword Research Scoped to Your Framer Niche
Start with a seed list of five to ten topics your site covers. Feed them into a keyword tool and filter for three criteria: monthly search volume above 100, keyword difficulty below 50, and clear informational or commercial intent. Cluster related terms into topic groups — each cluster becomes one Framer CMS collection item, not ten separate pages.
AutoSEO's research module pulls search volume, difficulty, and SERP features directly from live index data, then groups terms into clusters automatically. You review the clusters, approve them, and move to writing without switching between four different tabs.
Step 2: Write Content Structured for Framer's CMS Fields
Framer's CMS stores content in discrete fields: title, slug, rich text body, SEO title, meta description, and Open Graph image. Write with those fields in mind from the start rather than retrofitting a Word document afterward.
- Title field: Use the primary keyword near the front, keep it under 60 characters.
- Rich text body: Open with a concise answer to the search query in the first paragraph. Use H2s for major subtopics and H3s for supporting points. Aim for one internal link every 300 words.
- SEO title: Can differ from the display title. Add a brand suffix or a differentiating modifier if the display title is already long.
- Meta description: 140–155 characters, include the primary keyword, end with a clear action phrase.
- OG image: 1200 × 630 px. Framer renders these at publish time, so design a template in Framer itself and bind the CMS title field to it.
AutoSEO generates a draft for every field — not just the body copy — so the title, meta description, and OG image alt text arrive pre-filled and within spec. You edit, approve, and the content is ready to push.
Step 3: Configure On-Page SEO Inside Framer
Framer surfaces SEO controls at two levels: the page level (Settings → SEO) and the CMS collection level. Work through this checklist for every published page.
- Canonical URL: Framer sets this automatically to the published domain, but verify it points to the primary domain, not a staging subdomain like yoursite.framer.website.
- Robots tag: Leave as index, follow for all public pages. Set noindex on thank-you pages, internal search results, and duplicate filter pages.
- Structured data: Framer does not inject schema automatically. Add JSON-LD via a custom code embed in the page's Head section. For blog posts, use Article schema; for product pages, use Product schema.
- Image alt text: Framer's image component has an alt field. Fill it for every image — decorative images get an empty alt attribute, not a skipped field.
- Heading hierarchy: Framer lets you set any text element to any heading level. Confirm each page has exactly one H1 (the CMS title), then H2s and H3s in logical order. Use the browser's accessibility inspector to audit.
- Internal links: Use Framer's rich text link tool to link to related CMS items. Avoid generic anchor text like "click here"; use descriptive phrases that include the target page's keyword.
- Page speed: Enable Framer's built-in image optimization and lazy loading. Avoid embedding heavy third-party scripts in the global head unless they are critical.
Step 4: Publish to Framer and Submit for Indexing
Publishing in Framer is one click, but indexing is a separate action. After publishing, open Google Search Console, navigate to URL Inspection, paste the new page URL, and request indexing. For sites publishing more than a few pages per week, submit an updated XML sitemap instead — Framer generates a sitemap automatically at yourdomain.com/sitemap.xml.
AutoSEO connects to Search Console via API and triggers indexing requests immediately after each page publishes to Framer. It also pings the IndexNow endpoint, which notifies Bing and other participating engines simultaneously. Pages that would otherwise wait days in a crawl queue are typically indexed within hours.
Step 5: Track Rankings and Iterate
Connect Framer's published domain to Google Search Console and Google Analytics 4. In Search Console, monitor the Performance report filtered by page to see which CMS items are gaining impressions and clicks. Sort by impressions descending to find pages with high visibility but low click-through rate — those need a stronger SEO title or meta description.
In AutoSEO's tracking dashboard, every approved keyword cluster shows current rank, rank change over 30 days, impressions, and clicks pulled from Search Console. When a page drops more than five positions, AutoSEO flags it for a content refresh and pre-fills a suggested update based on current SERP analysis. You approve the update, it publishes to the Framer CMS via API, and the indexing request fires automatically.
| Workflow Stage |
Manual Framer Method |
With AutoSEO |
| Keyword research |
Multiple tools, manual clustering |
Automated clustering, one approval step |
| Content writing |
Write, then map to CMS fields |
All CMS fields pre-filled at generation |
| Publishing |
Manual Framer publish button |
Triggered via Framer CMS API |
| Indexing |
Manual Search Console submission |
Automatic GSC + IndexNow ping |
| Rank tracking |
Search Console + spreadsheet |
Unified dashboard with refresh alerts |
Frequently Asked Questions: SEO on Framer
The answers below address the most common technical and strategic questions from Framer users working to improve organic search performance.
Does Framer generate clean HTML that search engines can crawl?
Yes. Framer renders pages as static HTML at publish time, which means Googlebot and other crawlers receive fully rendered content without needing to execute JavaScript first. This is a meaningful advantage over purely client-side frameworks. The HTML output includes proper semantic tags when you use Framer's heading, paragraph, and list components correctly. The main risk is using generic div or text elements with visual styling instead of semantic heading components — that produces visually correct pages that are structurally flat for crawlers.
Can Framer handle large CMS collections without hurting SEO?
Framer CMS collections scale to thousands of items, and each item publishes as a static page with its own URL, meta tags, and sitemap entry. SEO performance at scale depends on content quality, not collection size. The practical risk is publishing thin or duplicate CMS items — for example, location pages or product variants with near-identical body text. Each item needs unique, substantive content to avoid crawl budget waste and duplicate content signals.
How do I add schema markup to a Framer page?
Framer does not have a native schema builder, so you add JSON-LD manually. Open the page settings, go to the Custom Code section, and paste your JSON-LD script block in the Head field. For CMS-driven pages, you cannot dynamically bind CMS field values to a static code embed, so you have two options: write a generic schema block that applies to all items in the collection, or use a third-party script injected via Framer's site-wide head code that reads page metadata and builds schema dynamically. AutoSEO generates and injects Article or Product schema per CMS item through the API, which removes this limitation.
What is the correct way to set canonical URLs in Framer?
Framer sets canonical tags automatically based on your published custom domain. The most common mistake is publishing before connecting a custom domain — pages published under the default yoursite.framer.website subdomain get canonicalized to that subdomain. If you later connect a custom domain, Framer updates the canonical, but any links or indexed URLs pointing to the subdomain create a redirect chain. Always connect your custom domain before publishing content intended for indexing.
Why are my Framer pages not appearing in Google after publishing?
Publishing in Framer makes a page publicly accessible, but it does not notify Google. Google discovers pages through sitemap crawling or direct URL submission. Framer generates a sitemap automatically, but Google may take days or weeks to recrawl it. For faster indexing, submit the URL directly in Google Search Console using the URL Inspection tool and click Request Indexing. If you publish frequently, submit your sitemap URL in Search Console's Sitemaps section so Google recrawls it on a regular schedule. AutoSEO automates this submission step immediately after each Framer publish.
How should I structure internal links across a Framer CMS site?
Internal links in Framer CMS work best when you treat your collection as a topic cluster. Identify one high-authority pillar page per topic and link to it from every related collection item. Within the rich text body of each item, link out to two or three closely related items using descriptive anchor text. Avoid linking every page to every other page — that dilutes link equity and makes your site structure harder for crawlers to interpret. Framer's rich text editor supports inline links; use those rather than adding a separate related posts section that only appears visually.
Does Framer support hreflang for multilingual SEO?
Framer does not have a built-in hreflang manager. If you run multilingual content — either through separate Framer projects per language or through CMS collections with language variants — you need to add hreflang link tags manually in the page head. The correct implementation uses link rel="alternate" hreflang="[language-code]" tags pointing to each language version, including a self-referencing tag for the current page. This is most reliably done through a site-wide script in Framer's global head code that reads the current URL and outputs the appropriate hreflang set.
Is Framer fast enough to meet Google's Core Web Vitals thresholds?
Framer sites routinely pass Core Web Vitals when configured correctly. The static output, built-in CDN, and automatic image optimization handle the heaviest performance factors. The most common causes of failure are embedding large third-party scripts — chat widgets, video players, analytics suites — in the global head without deferring them, and using full-resolution images in hero sections without enabling Framer's responsive image settings. Run PageSpeed Insights on your published Framer URL rather than the editor preview, since the editor loads additional tooling that inflates load times and does not reflect the production experience.