> ## 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.

# CMS Integrations

> Publish Siftly-generated content directly to your website from your favorite CMS platform.

## Why integrate your CMS?

Siftly generates GEO-optimized content — but that content only works when it's published. CMS integrations close the gap between analysis and execution, letting you push content from Siftly directly to your website without copying, pasting, or switching tabs.

<Frame>
  <img src="https://mintcdn.com/siftly/IwND2vAxRbhCiRev/images/cms-integrations.svg?fit=max&auto=format&n=IwND2vAxRbhCiRev&q=85&s=2704e9affce00587d23137bf707339c7" alt="Supported CMS platforms — WordPress, Ghost, Webflow, Strapi, Sanity, and Framer" className="rounded-xl" width="900" height="280" data-path="images/cms-integrations.svg" />
</Frame>

## Supported platforms

<CardGroup cols={3}>
  <Card title="WordPress" icon="wordpress" href="/integrations/wordpress">
    Publish posts directly to your WordPress.com blog using secure OAuth2. No API keys required.
  </Card>

  <Card title="Ghost" icon="ghost" href="/integrations/ghost">
    Publish posts live to your Ghost blog instantly using the Ghost Admin API with JWT auth.
  </Card>

  <Card title="Webflow" icon="code" href="/integrations/webflow">
    Create CMS items in any Webflow collection via the Webflow Data API v2.
  </Card>

  <Card title="Strapi" icon="database" href="/integrations/strapi">
    Push content into Strapi 5 collections via the REST API with full Draft & Publish support.
  </Card>

  <Card title="Sanity" icon="circle-dot" href="/integrations/sanity">
    Create and update documents in Sanity Studio with structured content and rich text blocks.
  </Card>

  <Card title="Wix" icon="w" href="/integrations/wix">
    Publish articles directly to Wix blog and pages via Wix's Headless CMS API.
  </Card>

  <Card title="Framer" icon="frame" href="/integrations/framer">
    Push pages and blog posts to Framer sites with full CMS collection support.
  </Card>

  <Card title="Duda" icon="webhook" href="/integrations/duda">
    Publish blog posts to Duda websites via Make.com webhook automation.
  </Card>
</CardGroup>

## Platform comparison

| Platform      | Difficulty  | Image Upload         | JSON-LD Support                                                                   | Meta Fields                                     | Siftly Push Method                       | Guide                              |
| ------------- | ----------- | -------------------- | --------------------------------------------------------------------------------- | ----------------------------------------------- | ---------------------------------------- | ---------------------------------- |
| **WordPress** | ✅ Easy      | ✅ Media library      | Via Yoast/Rank Math plugin or Custom HTML block                                   | Via SEO plugin fields                           | REST API + Application Passwords / OAuth | [Guide →](/integrations/wordpress) |
| **Ghost**     | ✅ Easy      | ✅ Media library      | Auto-generated Article; Siftly pushes supplemental schema to `codeinjection_head` | Built-in `meta_title`, `custom_excerpt`         | Admin API + JWT                          | [Guide →](/integrations/ghost)     |
| **Webflow**   | ⚠️ Medium   | ✅ Assets CDN         | Manual Embed element with `{{wf ...}}` syntax                                     | CMS field bindings in Page Settings             | Data API v2 + token                      | [Guide →](/integrations/webflow)   |
| **Strapi**    | ⚠️ Medium   | ✅ Media library      | Stored in schema; frontend renders                                                | `@strapi/plugin-seo` component or custom fields | REST API + token                         | [Guide →](/integrations/strapi)    |
| **Sanity**    | ❌ Developer | ✅ Assets API         | Stored in schema; frontend renders                                                | Custom `seo` object type; frontend renders      | Content Lake API + token                 | [Guide →](/integrations/sanity)    |
| **Wix**       | ✅ Easy      | ✅ Media (URL import) | SEO → Advanced (paid plan only)                                                   | Built-in SEO panel per post                     | Content Manager API + key                | [Guide →](/integrations/wix)       |
| **Framer**    | ⚠️ Medium   | ❌ No upload API      | Static in Head code; dynamic requires code component (JS)                         | CMS field bound to page SEO settings            | CMS API + token                          | [Guide →](/integrations/framer)    |
| **Duda**      | ✅ Easy      | ❌ No upload API      | Not supported via automation                                                      | Description field only                          | Make.com webhook                         | [Guide →](/integrations/duda)      |

<Tip>
  **Not sure which CMS to use?** Read our [guide to choosing a CMS for AI visibility](https://siftly.ai/blog/cms-and-ai-visibility) — it compares platforms through the lens of GEO optimization.
</Tip>

***

## How integrations work

All CMS integrations follow the same basic flow:

<Steps>
  <Step title="Enter credentials">
    In Siftly's **Settings -> Integrations**, provide your CMS credentials (API key, token, project ID). Siftly validates the connection and discovers available collections.
  </Step>

  <Step title="Select collection and map fields">
    Choose which collection or document type to publish to (shown as a dropdown of discovered types). Siftly discovers all fields — including nested ones — and suggests mappings via AI. Edit or add custom fields as needed.
  </Step>

  <Step title="Publish from the content editor">
    In the Siftly content editor, click **Publish -> \[Your CMS]** and choose whether to publish live or save as a draft. Fields with "Use Existing" sources are auto-filled.
  </Step>

  <Step title="Review in your CMS">
    Depending on your chosen status, content either goes live immediately or lands as a draft in your CMS for review.
  </Step>
</Steps>

***

## Unified Field Mapping

Every CMS integration (except Wix, which uses fixed API fields) shares the same 3-tier field mapping system. This gives you a consistent experience regardless of which CMS you use.

### Tier 1 — Required Fields

These three fields must be mapped during setup. They define where Siftly writes the core content.

| Siftly Field | Description                    |
| ------------ | ------------------------------ |
| **Title**    | The article or page title      |
| **Slug**     | URL-friendly identifier        |
| **Body**     | Full HTML or rich-text content |

### Tier 2 — Optional Fields

Optional fields are auto-populated from your content data when mapped. Leave any field unmapped to skip it.

| Siftly Field         | Description                                         |
| -------------------- | --------------------------------------------------- |
| **Meta Title**       | SEO page title                                      |
| **Meta Description** | SEO description / excerpt                           |
| **Keywords**         | List of target keywords                             |
| **Categories**       | Content categories                                  |
| **JSON-LD**          | Structured data markup (with text/json type toggle) |
| **Word Count**       | Total word count of the content                     |
| **Hero Image**       | Featured/banner image                               |

### Tier 3 — Custom Fields

Add any extra fields your CMS schema requires that aren't part of Siftly's standard content model. Custom fields support five types:

| Type        | Description                            |
| ----------- | -------------------------------------- |
| **String**  | Plain text value                       |
| **Number**  | Numeric value                          |
| **Boolean** | True or false                          |
| **JSON**    | Structured object or array             |
| **Select**  | Pick from a predefined list of options |

Each custom field can have a **default value** that pre-fills at publish time, or it can be linked to an existing content source using **Use Existing Field** — so you can reuse the same data in multiple CMS fields without entering it twice.

Available sources: Title, Slug, Meta Title, Meta Description, Excerpt, Keywords, Categories, JSON-LD, Word Count, Hero Image, **Date Published**, **Date Modified**.

Custom fields are **editable** after creation — click the pencil icon to change any field's configuration.

<Tip>
  For example, if your CMS has a nested `seo.metaDescription` field AND a top-level `excerpt` field that should both contain the same text, map one as the optional Meta Description field and add the other as a custom field with source linked to **Meta Description**.
</Tip>

***

## Draft vs Published

When publishing to any CMS, you can choose between:

* **Draft** — content is pushed to your CMS as a draft for review before going live
* **Published** — content goes live immediately

This toggle appears in the publish dialog for every CMS integration.

<Note>
  Some CMS platforms (like Wix) always create content as drafts regardless of the status you select. Check the individual CMS integration page for platform-specific behavior.
</Note>
