Connect your CMS once and CiteFlow publishes articles directly into WordPress, Ghost, Shopify, Webflow or a custom webhook.
Publishing
CiteFlow turns approved articles into drafts in your content stack so your team can review and publish. There are two routes: the universal webhook (recommended for most customers) and platform adapters for a handful of popular CMSs.
Webhook: recommended for most customers
The custom webhook is the universal integration. It works with any platform, any custom workflow.
Choose the webhook if you are on Sanity, Contentful, Strapi, Hugo, Jekyll, Astro, Next.js, Eleventy, a headless CMS, a static site generator, or you want full control over how content is processed before it reaches your live site.
Why most customers should start here:
- Works with everything. If your stack speaks HTTP, it works.
- Forward-compatible. New CiteFlow features ship through the same payload, so you do not wait for a new adapter.
- Fan-out friendly. One webhook can drive multiple downstream systems (CMS, newsletter, analytics) from a single delivery.
- No vendor lock-in. You own the receiver and the transform logic.
The webhook contract is the authoritative specification.
Platform adapters: convenience for these platforms
If you are on one of these specific platforms and want plug-and-play setup with no receiver to build, use the matching adapter.
| Adapter | Best for | Credentials | Creates as |
|---|---|---|---|
| WordPress | Self-hosted or WordPress.com Business+ | Username + Application Password | Draft post |
| Ghost | Ghost 5.x sites | Admin API key | Draft post |
| Shopify | Shopify stores | Custom app Admin API token | Unpublished blog article |
| Webflow | Webflow CMS sites | Data API v2 token | Draft collection item |
All adapters share the same delivery pipeline:
- Three attempts with linear backoff (1 second, 5 seconds, 15 seconds).
- Credentials encrypted at rest with
pgcrypto. - Each article-and-endpoint pair runs as its own job, so a failure in one destination never blocks another.
- Every remote post is created as a draft. CiteFlow does not publish live without an editorial review step in your CMS.
How do you add a publishing endpoint?
- From your dashboard open Settings → Publishing destinations.
- Click Add endpoint and pick the kind.
- Fill in the credentials. Each adapter doc has step-by-step instructions.
- Click Test connection. CiteFlow makes a read-only check call against the remote API and reports the result. Do not skip this step.
- Save.
How does publishing dispatch?
When you click Publish on an approved article, CiteFlow enqueues a job per selected endpoint. Each job:
- Loads the article and the endpoint's encrypted credentials.
- Maps article fields to the destination's API schema.
- Sends the request.
- Records success or the last error, with HTTP status and a redacted response excerpt.
You can see job state on the article detail page in your dashboard.
What gets sent in a publish?
Each adapter has its own field mapping (documented per adapter), but broadly:
- Title, slug, and body HTML.
- Meta description and excerpt.
- Hero image URL and alt text.
- Target keywords as tags (where the destination supports tags).
- JSON-LD schema appended into the body for adapters whose CMS does not expose a structured-data field (currently Shopify and Webflow).
What are the tier limitations?
| Tier | Publishing endpoints |
|---|---|
| Trial | 1 endpoint |
| Standard | 3 endpoints |
| Enhanced | 10 endpoints |
| Marketplace | Unlimited (soft cap 50) |
Endpoints can be any mix of webhook or platform adapters.
References
- WordPress REST API reference, WordPress
- Ghost Admin API reference, Ghost
- Shopify Admin REST: Blog & Article, Shopify
- Webflow CMS API reference, Webflow
Related
- Custom webhookReceive every published article as a signed HTTP POST. HMAC-SHA256, 5 minute replay window, 3 retries.
- WordPressApplication Password + REST API. Creates posts as drafts in your editor's queue.
- GhostAdmin API key with HS256 JWT signing. Drafts land in the Posts list.
- ShopifyCustom app with write_content scope. Publishes to a specific blog as unpublished articles.
- WebflowData API v2 token plus a collection with the required field slugs. Items created as drafts.