Integrations

Publish into the CMS you already use.

Connect SEORAV once. We write, you approve, we publish — not only blog articles but also FAQ entries and answer-engine pages — straight into WordPress, Webflow, Ghost, HubSpot, Shopify, Wix, Framer, or any custom endpoint via signed webhook. No copy-paste, no broken schema, no “we’ll deploy on Monday”.

Real auth, not fake fields

Application passwords, private app tokens, JWTs. Encrypted at rest with AES-256-GCM. Revocable from the dashboard at any time.

Publish, retry, verify

Failed POSTs retry with exponential backoff (6 attempts over ~2 days). After publish we re-fetch the live URL and run a 17-check rendered-HTML scorer.

Honest about limits

Each integration page tells you exactly what we can and can't do on that platform. JSON-LD in head? Native scheduling? Featured-image upload? Spelled out.

Pick your platform

WordPress logo

WordPress

Available

REST API + Application Password. Publishes through Yoast / RankMath / All-in-One SEO when present, falls back to native fields otherwise.

  • Featured image
  • Categories & tags
  • Native scheduling
  • JSON-LD via SEO plugin
Webflow logo

Webflow

Available

Sites API with auto-provisioned Collection fields. We map every CanonicalPost field to the matching Webflow field and publish into your existing CMS Collection.

  • Auto field provisioning
  • Designer fidelity
  • Native scheduling
  • JSON-LD via custom code
Ghost logo

Ghost

Available

Admin API with short-lived JWTs. Mobiledoc + Lexical body, native head-injection of JSON-LD, full meta + OpenGraph fields.

  • Lexical/Mobiledoc body
  • Native head injection
  • Featured image upload
  • Code injection clean
HubSpot logo

HubSpot

Available

Private App token, Content Hub blog. Probe verifies the portal has the Marketing/CMS Hub Pro+ tier — Marketing-only portals can't host blog posts.

  • Per-portal scopes
  • Blog ID auto-detect
  • Native scheduling
  • Topic / blog author mapping
Shopify logo

Shopify

Limited

Admin API. Shopify's blog templates don't expose <head>, so JSON-LD ships inline in body. Best paired with a theme that includes structured-data partials.

  • Blog post + product content
  • Inline JSON-LD only
  • Native scheduling
  • Featured image via Files API
Wix logo

Wix

Limited

Velo / Site API. The least flexible mainstream CMS — no head injection, no native scheduling. We publish title + body and let your Velo code shape the rest.

  • Title + body only
  • Velo hooks recommended
  • No native scheduling
  • No head injection
Framer logo

Framer

Available

AI-led setup — we inspect your Framer Collections, propose a routing plan ("articles → /blog, FAQ → /resources"), you confirm, save. Every future publish consults the stored plan via a pure-Python lookup — no AI on the publish path.

  • AI collection analysis
  • Editable routing plan
  • Multi-project per site
  • Article + FAQ routing

Webhook

Custom

Generic signed POST for everything else — Next.js ISR, Make, Zapier, n8n, custom backends. We sign with HMAC-SHA256, you control the publish step.

  • HMAC-SHA256 signed
  • Idempotency keys
  • Retries up to 6×
  • Receive in any framework

What every adapter ships

The publish payload is the same shape across CMSes. The adapter maps it onto each CMS's specific fields without dropping anything on the way through.

Articles (blog posts)

Full HTML body with answer-first openings, GFM tables, schema-friendly headings, and verified internal links. Reading time + word count stored on the post meta.

FAQ entries

When an article includes an FAQ section, the same Q/A blocks also ship to your /faq surface — either as a child route the adapter publishes to, or via a routing rule the AI-led setup mapped to your existing FAQ Collection (Framer, Webflow).

Hero image

Multiple Image formats uploaded to the CMS media library where supported, otherwise served from Supabase Storage with explicit dimensions on the post meta so OG cards and schema match.

JSON-LD schema

BlogPosting + BreadcrumbList always; FAQPage, HowTo, and Speakable only when the article has those sections (no empty schema blocks). Injected into the head where the CMS allows, otherwise inline in the body content embed.

Meta title + description

meta_title (≤60 chars) and meta_description (≤155 chars) written into the SEO fields the CMS actually surfaces — Yoast / RankMath / All-in-One on WP, native SEO on Webflow / Ghost / HubSpot.

Slug + canonical

Slug locked once published — no slug churn on re-edit. Canonical points to the live URL the CMS resolves to, even when the CMS introduces a www / non-www prefix you didn't configure.

Choosing the right adapter

All seven native adapters publish the same payload. The differences are in how each CMS handles schema injection, scheduling, and routing — pick the one that matches how your team actually edits.

You want maximum schema control

WordPress, Ghost, or Webflow. WordPress (with Yoast / RankMath) gives you full control over every SEO field. Ghost head-injects JSON-LD natively. Webflow needs a one-time custom-code embed.

You want design-first publishing

Framer or Webflow. Both let your designer own the visual page. Framer's AI-led routing additionally lets you map articles vs FAQ to different Collections without writing a config.

You're on HubSpot / commerce

HubSpot if you live in Marketing Hub Pro+. Shopify if blog + product content sit on the same store. Both publish cleanly; schema lands inline rather than in head.

You're on a headless / custom CMS

Generic webhook. Sanity, Contentful, Strapi, Notion, custom Rails / Django / Next.js — anything that can receive an HMAC-signed POST. About an hour of dev time to wire.

Integration questions

Does SEORav publish FAQ content too, or only blog articles?+

Both. When an article includes an FAQ section, the Q/A blocks ship as proper FAQ entries to whichever route you configured — usually /faq for marketing sites, or a dedicated FAQ Collection on Framer / Webflow. The Q/A blocks also appear inside the parent article so the schema and rendered HTML stay aligned.

What's the difference between "Available" and "Limited" status?+

Available means head-injection of JSON-LD, native scheduling, and featured-image upload all work. Limited (Shopify, Wix) means one of those is constrained by the CMS itself — schema ships inline rather than in head, or scheduling needs to be set on the CMS side after publish.

Do you support multi-site / multi-tenant setups?+

Yes. Each site you onboard has its own adapter, its own auth tokens, and its own routing config. You can run a WordPress site, a Webflow site, and a HubSpot site from the same SEORav workspace; articles route to the site they were briefed for.

What happens on auth-token expiry?+

The next publish attempt detects the failure, the article rolls back to draft, /health surfaces the expiry with the CMS error, and you get an email if it's the first failure in a 24-hour window. Re-auth from the integrations panel and the queue resumes.

Can I see what a publish request looks like before I trust it?+

Every native adapter has a "Test publish" button on its settings page that ships a single small payload to a draft URL on your CMS. You can inspect the result on the CMS side before turning live publishing on.

Don't see your platform?

Use the generic webhook. Any endpoint that can receive HTTPS will do — Cloudflare Worker, Vercel Edge function, a Next.js Route Handler, your existing Rails / Django / PHP backend. We sign every request with HMAC-SHA256 so you can verify authenticity in ~30 lines.