Docs / Publish to your CMS

How Publishing Works

Every publish, whether you click Publish in the draft editor, an agent run finishes an article, or autopilot ships a scheduled entry, follows the same path:

  1. Destination resolution - the draft's strategy connection if set, otherwise the workspace default connection.
  2. Quality gate - the draft is validated against your workspace rules (word count, sourced statistics, banned competitors, and so on). Hard failures block the publish unless you explicitly force it.
  3. Content preparation - the markdown is cleaned for your CMS: internal notes and tooling comments are stripped, image placeholders become real image references, tables are rendered natively, and the H1 is removed from the body (your CMS's title field carries it).
  4. Images - the hero and body images are uploaded to your CMS when it supports media uploads (WordPress, Ghost, Contentful), or referenced by stable public URLs it can fetch (Webflow, Shopify, HubSpot, Sanity, Strapi, git, webhook).
  5. Upsert by slug - if an entry with the same slug already exists in your CMS, it's updated in place; otherwise it's created. Republishing never creates duplicates.
  6. Events - webhook subscribers are notified (content.published the first time, content.updated on republish).

Staging vs. production

Every publish targets staging or production:

  • Production makes the entry live on your site.
  • Staging creates it in your CMS's closest equivalent of "not live yet": a draft post (WordPress, Ghost, HubSpot), a draft item (Webflow), an unpublished article (Shopify), a draft document (Sanity, Strapi), a staging branch (git), or a separate environment (Contentful).

A common flow: publish to staging, review the entry in your CMS, then publish to production. Both are one action in Wavefront.

Titles and fields

Wavefront fieldWhere it lands
Title / H1Your CMS's title field (the H1 when set, otherwise the SEO title)
SlugThe entry's slug / handle / path
BodyRendered to your CMS's body format (rich text, HTML, or markdown)
Short descriptionExcerpt / summary field
SEO descriptionMeta description field where the CMS has one
AuthorThe author name (or a linked author entry on Contentful)
Hero imageFeatured image / feature image / main image

Fields in your CMS that Wavefront doesn't manage (categories, custom fields, design settings) are left untouched on update.

Editing published content

Use Import to draft on any published entry to pull the live version back into the editor - including content edited directly in your CMS. Edit, validate, and republish; the same entry updates in place.

Wavefront also detects when a live entry has been edited directly in the CMS since the last publish, so you don't accidentally overwrite someone's manual changes.

Unpublishing

Unpublish takes a live entry offline using whatever your platform supports: WordPress/Ghost/HubSpot revert the post to a draft, Webflow unpublishes the live item, Shopify hides the article, Sanity moves the document back to drafts, Strapi clears the publish date, and git deletes the file (a commit, so it's always recoverable). The entry is marked archived in Wavefront and a content.unpublished webhook event fires.

When something fails

  • A publish failure surfaces the provider's actual error message (for example WordPress's REST error body or Shopify's validation message), not a generic failure.
  • Publishes run in a durable pipeline with automatic retries, so a transient network error or a brief CMS outage doesn't lose your article.
  • Connection problems are diagnosable from Settings → CMS connections → Test, which runs a live auth probe and reports exactly what the platform said.