Documentation Index
Fetch the complete documentation index at: https://docs.siftly.ai/llms.txt
Use this file to discover all available pages before exploring further.
Overview
This guide is for Framer users who want to publish Siftly-generated content and apply GEO/SEO recommendations (meta tags, JSON-LD, keywords) to their Framer site. After following it, you’ll know how to connect Siftly, map CMS fields, and add structured data to your pages. Difficulty: ⚠️ Some technical setup — SEO fields are visual, but JSON-LD and dynamic structured data require custom code injection. Framer is a visual website builder with a built-in CMS. The Siftly–Framer integration lets you create content in Siftly’s editor and publish it directly to a Framer CMS collection using the unified 3-tier field mapping system — no copy-pasting required. This is especially useful for teams that manage blog posts, landing pages, or resource libraries in Framer and want to keep their publishing workflow inside Siftly.Prerequisites
Before connecting, you’ll need:- A Framer site with a CMS collection already created (e.g., a “Blog” collection)
- A Framer account with Editor or Owner permissions
- Your Framer API token (see below)
- Your Framer Project ID
Step 1: Get your Framer credentials
API Token
- Open your Framer project
- Click the Project Settings gear icon (top-right)
- Go to Integrations -> API
- Click Generate Token and copy the token
Project ID
Your Project ID is visible in the project URL or in Project Settings. It looks like a long alphanumeric string.Step 2: Connect Framer in Siftly
- In Siftly, go to Settings -> Integrations
- Click Connect next to Framer
- Enter your:
- API Token
- Project ID
- Blog Base URL (optional — for building published URLs)
- Click Verify Connection
Step 3: Schema Mapping
Collection Selection
After credentials are validated, Siftly shows a dropdown of all CMS collections discovered from your Framer project. Select the collection you want to publish to (e.g., “Blog Posts”). When you select a collection, Siftly fetches its field schema and presents them for mapping.Field Mapping
Select fields from the dropdown for each mapping:Required Fields
| Siftly Field | Description | Notes |
|---|---|---|
| Title | The page or post title (H1) | Map to your collection’s title field |
| Slug | URL-friendly version of the title | Map to your collection’s slug field |
| Body | Full body content (rich text / HTML) | Map to your collection’s content field |
Optional Fields
Leave any of these blank to skip them. When mapped, they are auto-populated from your content data.| Siftly Field | Suggested Framer Field Type | Notes |
|---|---|---|
| Meta Title | Plain Text | SEO page title |
| Meta Description | Plain Text | SEO description / excerpt |
| Keywords | Plain Text (comma-separated) | Target keywords |
| Categories | Plain Text (comma-separated) | Content categories |
| JSON-LD | Plain Text (long) | Structured data markup |
| Word Count | Number | Total word count |
| Hero Image | Image | Featured image |
JSON-LD Type Toggle
When a JSON-LD field is mapped, a text/json toggle appears:- json (default): Sends as a parsed JSON object
- text: Sends as a serialized JSON string
Custom Fields
Add extra fields your Framer collection requires that aren’t part of Siftly’s standard content schema.Field Types
| Type | Description | Example |
|---|---|---|
| String | Plain text | Author name, subtitle |
| Number | Numeric value | Priority, reading time |
| Boolean | True/false | Featured post, comments enabled |
| JSON | Structured object | SEO config, social media metadata |
| Select | Pick from predefined options | Category, status, content type |
Select Options with Separate Labels and Values
When adding a Select custom field, you define the available options in a textarea. Each option can have a separate value (sent to CMS) and label (shown in the dropdown):Health, Tech, etc., but Siftly sends 1, 2, etc. to the CMS API.
Example — Labels same as values:
: is present, the option text is used as both the label and value. This is backward-compatible with existing configurations.
Use Existing Field (Source Fields)
Link a custom field to auto-populate from existing content data:- Title, Slug, Meta Title, Meta Description, Excerpt
- Keywords, Categories, Word Count
- JSON-LD, Hero Image
- Date Published, Date Modified (from JSON-LD graph)
Editing Custom Fields
Click the pencil icon on any existing custom field to edit its configuration inline.Publishing
Draft vs Published
When publishing, choose between:- Draft — content appears in your Framer CMS collection as a draft item for review
- Published — content is created and published to your live Framer site
Custom Fields at Publish Time
Fields with Use Existing Field show as “Auto-populated from [source]” in the publish dialog — no input needed. Manual custom fields appear pre-filled and editable. Standard fields (title, slug, body, meta data, keywords, categories, JSON-LD, word count) are auto-populated from your content — no manual input needed.Updating existing items
By default, each publish from Siftly creates a new CMS item in Framer. To update an existing item instead:- In the Siftly content editor, click Publish -> Framer -> Advanced
- Toggle Update existing item
- Paste the Framer item ID of the item you want to update
Troubleshooting
Connection fails with 401 Unauthorized
Connection fails with 401 Unauthorized
No collections found
No collections found
Make sure your Framer project has at least one CMS collection created. The collection must exist before connecting.
Content saves but doesn't appear in Framer
Content saves but doesn't appear in Framer
Check the Framer CMS panel for the item in Drafts. If published with Draft status, it won’t be live.
Field mapping errors
Field mapping errors
If a required field isn’t mapped, the publish will fail. Ensure all required fields are mapped via the dropdown or have a default value set.
Fields with Use Existing show empty values
Fields with Use Existing show empty values
Ensure you’re on the latest version. Source fields are auto-populated server-side — no user input needed.
Where to apply Siftly’s recommendations on Framer
Framer has visual SEO settings for basic meta fields, plus a custom code feature for advanced structured data. Here’s where each field lives.Meta Title
Location: CMS item → SEO tab → Title field When you open a CMS item in Framer’s editor, the SEO tab shows the page title. This renders as the<title> tag.
Via Siftly: If you create a plain text field in your CMS collection (e.g., meta-title) and map Siftly’s Meta Title to it, you can then bind that CMS field to the page’s SEO Title in Framer’s page settings.
To bind a CMS field to the SEO title:
- Open your CMS template page
- Go to Page Settings → SEO
- Click the variable icon (⚡) next to the Title field
- Select your
meta-titleCMS field
Meta Description
Location: CMS item → SEO tab → Description field Same binding approach as meta title — create a CMS field, map it in Siftly, then bind it in Framer’s page settings.Open Graph Image
Location: CMS item → SEO tab → Social Image Framer uses the page’s designated social image for OG tags. You can bind a CMS Image field to the social image slot.Siftly does not push image files to Framer. After publishing, upload your OG image to the CMS item in Framer’s editor, or set a default social image in the page template.
Canonical URL
Framer auto-generates canonical URLs for all pages. No override is available via the CMS — it always points to the page’s own URL.Tags & Categories
Framer doesn’t have a native tag/category taxonomy. Use a Plain Text CMS field with comma-separated values. Siftly pushes keywords as a comma-separated string to whatever plain text field you map.JSON-LD Structured Data
Framer does NOT auto-generate JSON-LD. You must add it manually. For static JSON-LD (same schema on all pages of a template):- Open your CMS template page in Framer
- Click Page Settings → Custom Code → Head
- Paste the JSON-LD:
- Create a
json-ldplain text (long) CMS field in your collection - Map Siftly’s JSON-LD field to this CMS field
- Create a Framer Code Component that reads the CMS field and renders it:
- Place this code component on your CMS template page and connect the
jsonLdprop to your CMS field.
Client-side injected JSON-LD (via JavaScript) may not be reliably crawled by all search engines. Google generally processes it, but some AI crawlers may not execute JavaScript. For maximum GEO impact, static head injection is preferred — but Framer’s limitations make this difficult for dynamic content.
Keywords
Framer does not render a<meta name="keywords"> tag natively. Store keywords in a CMS field for internal organization. If you need a keywords meta tag, use the same code component approach to inject it.
Pushing Siftly recommendations automatically
Generate content in Siftly
Siftly produces your article plus meta title, meta description, keywords, and JSON-LD.
Fields pushed via API
All mapped fields (title, slug, body, meta title, meta description, keywords, JSON-LD, word count) are sent in a single call. The CMS item is created with all text fields populated.
Platform-specific quirks & limitations
CMS plan required. Framer’s CMS feature requires at least the Mini plan (or higher). Free plans do not include CMS collections.
- SEO field binding: Framer’s SEO title and description can be bound to CMS fields, but you must set this up manually in the Framer Designer. Siftly pushes to the CMS field — Framer’s template bindings render it.
- No categories/tags taxonomy: Framer has no built-in taxonomy. Use plain text fields with comma-separated values.
- Publishing delay: After creating a CMS item via API, Framer may need a site publish to reflect the change on your live domain.
- Image handling: Framer CMS supports image fields, but Siftly cannot upload images via API. Upload images manually in Framer.
- Rich text limitations: Framer’s rich text field supports standard formatting but may strip unsupported HTML elements (tables, custom embeds).
Validating the setup
After publishing your first CMS item from Siftly:Check in Framer CMS panel
Open your Framer project → CMS → find the new item. Verify all fields (title, body, meta fields, JSON-LD) are populated.
Preview the page
Click the CMS item and preview the rendered page in Framer. Check that the SEO title and description appear in the page settings.
View the live page source
After publishing the site, open the live page. Right-click → View Page Source. Search for:
<title>— should contain your meta title<meta name="description"— should contain your meta description<script type="application/ld+json">— should contain your JSON-LD (if using static head code or code component)
Run Google Rich Results Test
Go to Google Rich Results Test and paste your page URL.
Run Schema.org Validator
Go to Schema.org Validator for additional validation.
Difficulty & setup recap
Framer Setup Summary
| Aspect | Rating |
|---|---|
| Initial setup | ⚠️ Medium — API token + collection setup + field binding |
| Applying SEO fields | ✅ Easy for meta title/description (visual binding) |
| JSON-LD | ❌ Hard — static only in Head code; dynamic requires code component with JS-injection limitations |
| Ongoing editing | ✅ Easy — publish from Siftly, items appear in Framer CMS |
| Developer needed? | For JSON-LD code component — not for basic meta fields |
Related
CMS Integrations Overview
Compare all supported platforms and the unified field mapping system.
Quickstart Guide
Set up your brand and run your first GEO analysis.
Content Generation
How Siftly generates GEO-optimized content and recommendations.
Choosing a CMS for AI Visibility
Our guide to picking the right CMS for GEO optimization.