Skip to main content
Publishing sends a draft from Content Studio straight to your website. You connect your site once, then publish from the Editor whenever a draft is ready. Prefer creates the post on your site, and every later publish updates that same post.

What publishing does

  • Sends a Create Content draft to your site, as a draft for review or live for your readers.
  • Updates the same post every time. Publish again after an edit and Prefer changes the existing post. It never makes a second copy.
  • Carries the whole article. The title, the body (headings, lists, quotes, tables, links and images), the URL slug, and the meta title and meta description from the Editor’s Meta & SEO panel go into the matching fields on your platform. Each platform section below lists exactly where they land.
  • Copies your images to your platform where it supports it, so they no longer depend on where they are hosted today. You can also choose to use the article’s first image as the featured image.
  • Saves your latest edits first, so what reaches your site is what you see in the Editor.
  • Records the live address. A live publish marks the draft as Published in Prefer with its live URL, the same as Mark as live does.
Publishing applies to Create Content drafts. Optimised pages are applied on your own site: copy or download the update from the Publish modal, or use the WordPress blocks export, and paste it into the page it improves.

What Draft and Live mean on each platform

Who can publish

Plans. Publishing is included on every plan, Starter included, and during your free trial. If your trial ends or your plan is paused, publishing stops and Prefer tells you why, for example “Your trial has ended. Upgrade to keep publishing.” Posts already on your site stay exactly where they are. Roles. Owners, admins and members can connect a site, change its settings and publish. Viewers can see which site a project publishes to, but cannot connect, change or publish. A viewer sees “Ask someone who manages integrations in this workspace to connect a site.”

One destination per project

Each project publishes to one site at a time. Once a site is connected, the Connect buttons are replaced by a line such as “This project already publishes to Acme Journal. Disconnect it to switch.” To switch to another site, click Disconnect on the current connection, then connect the new one. Disconnecting stops publishing there, and posts already published stay where they are. Reconnecting the same site later keeps its settings and its publishing history, so Prefer goes on updating the same posts instead of creating new ones.

Connect your site

1

Open Integrations

In your project, open Integrations from the Config & Context menu in the sidebar, then scroll to Publishing.
2

Choose your platform

Click Connect next to WordPress, Ghost, Sanity, Astro or Framer, and follow the dialog. Each platform’s section below walks through it.
3

Finish setup if asked

Sanity, Astro and Framer need one more step: Prefer opens a Set up dialog where you choose where posts go. Until you save it, the connection shows Needs setup.
4

Test the connection

Click Test connection on the card. Prefer replies “Prefer can reach this destination.” when everything is in place.
Each connection card shows a status:

Publish a draft

1

Open the Publish modal

Open a Create Content draft in the Editor and click Publish in the top bar.
2

Choose your destination

Under Publish, select your connected site. It replaces the Publish now option.
3

Choose Draft or Live

Pick Draft or Live. The line beside it says what that means on your platform, for example “Save as a draft in WordPress” or “Publish on WordPress”.
4

Review the checks

Prefer checks the draft against your site before anything is sent. It lists anything to know, such as an image that will stay at its current address, and asks you to tick a box when publishing would replace something on your site.
5

Send it

Click Send draft to WordPress or Publish to WordPress (the button names your platform). When it finishes, the modal shows “Draft saved in WordPress” or “Published on WordPress”, with View and Open in WordPress links.
After the first publish, your destination shows the post’s state, such as Draft saved or Published. If you edit the draft afterwards, it reads Published, edited since, so you know an update is waiting. Publish again to send it.
Some sites take a few minutes to rebuild after a publish. When Prefer shows “Your site may take a few minutes to update.”, click Check status a little later. Prefer confirms the post once its page is live and shows the title.
If your site is busy or slow to answer, Prefer tries again on its own, about 30 seconds, 2 minutes and 10 minutes later. If it still cannot finish, the destination shows the reason and a Try again button.

When the post changed on your site

Edited on your site

If someone edited the post on your platform after Prefer last published it, Prefer asks before replacing those edits. You see a checkbox such as “This post was edited in WordPress after Prefer last published it. Publishing replaces those edits.” Tick it to let your Prefer version win, or leave it and bring the edits into your Prefer draft first. On WordPress, Ghost, Sanity and Framer, Prefer only replaces the fields it manages: the title, body, excerpt, SEO fields and images. Categories, tags, authors and other fields you set on your site stay as you set them. On Astro, the post is one file that Prefer writes as a whole, so changes made to that file on GitHub are replaced once you confirm. On every platform, the slug is set once, when the post is created, so its address never moves.

Deleted on your site

If the post was deleted on your platform, Prefer says so, for example “This post was deleted in WordPress. Publish it as a new post.” Click Publish as new next to the message. Prefer creates the post again with the same slug, so its old address keeps working.

WordPress

What WordPress needs

  • A self-hosted WordPress site (6.5 or later), or a WordPress.com site on a paid plan. WordPress.com free-plan sites cannot connect, because they have no application passwords. Prefer tells you when it spots one: “This looks like a WordPress.com site. Application Passwords need a paid WordPress.com plan.”
  • https on your site address.
  • An Editor or Administrator account. A dedicated WordPress user with the Editor role works best: it can publish, upload images and manage categories without access to plugins or settings. Posts appear under the user you connect with.

Connect WordPress

1

Enter your site

In Publishing, click Connect next to WordPress and enter your Site address (yourblog.com is fine).
2

Continue to WordPress

Click Continue to WordPress and sign in with your Editor or Administrator account.
3

Approve Prefer

WordPress asks you to approve the connection. Approve it, and WordPress sends you back to Prefer, which shows “WordPress is connected. You can publish to it from any draft.”
Prefer an application password? In WordPress, open Users, Profile, Application Passwords, enter Prefer as the name and click Add New Application Password. Copy the password. In Prefer’s Connect WordPress dialog, click Use an application password instead, then enter the Site address, Username (or email) and Application password, and click Connect. Use this route if your site sends you elsewhere to approve.

WordPress settings

WordPress is ready to publish as soon as it connects. To change the defaults, click Configure on the card:
  • Default categories (up to 10) and Default tags (up to 20) are added to every post Prefer sends. Categories and tags already on a post are kept, and new tags are created in WordPress.
  • Copy images into your Media Library is on by default. Prefer uploads each image once, with its alt text, and reuses it on later publishes.
  • Use the article’s first image as the featured image is off by default. It needs image copying on.

Draft and Live on WordPress

  • Draft (“Save as a draft in WordPress”) creates or updates a draft post.
  • Live (“Publish on WordPress”) publishes the post, or updates it if it is already live.
Prefer publishes posts, and the body arrives as editable blocks. The excerpt is your meta description. If you use Yoast SEO (27.7 or later) or All in One SEO, Prefer also fills in their SEO title and meta description. Once a post is live, update it with Live. A draft over a live post is refused, because WordPress would change the live post: “This post is live on WordPress. Sending a draft would change the live post. Publish the update instead.”

WordPress error messages

Ghost

What Ghost needs

  • Ghost(Pro) Publisher or higher, or any self-hosted Ghost site. Ghost(Pro) Starter does not include custom integrations, which Prefer connects through.
  • A custom integration for Prefer. In Ghost Admin, open Settings, Advanced, Integrations, click Add custom integration and name it Prefer. Keep it open: you need its Admin API key and API URL.

Connect Ghost

1

Open the dialog

In Publishing, click Connect next to Ghost.
2

Paste the two values

Paste the API URL and the Admin API key from your custom integration. The Admin API key contains a colon. If you paste the Content API key instead, Prefer asks for the Admin one.
3

Connect

Click Connect. The card shows your site’s title and address.

Ghost settings

Ghost is ready to publish as soon as it connects. Click Configure on the card to change:
  • Default tags, added to every post. Prefer suggests tags from your site, and also adds its own hidden #prefer tag, which never shows on your site.
  • Use the first image as the featured image (off by default).
  • Upload images to Ghost (on by default), so images live in your Ghost site.

Draft and Live on Ghost

  • Draft (“Save as a draft in Ghost”) creates or updates a draft post.
  • Live (“Publish on Ghost”) publishes a public post, or updates it if it is already live.
Prefer sends the title, body, excerpt, meta title and description, social sharing title and description, slug and tags. On an update, the status, visibility, slug and your own tags in Ghost stay as they are. Publishing from Prefer never emails your members. Prefer never sends a newsletter with a post. A live publish is otherwise a normal Ghost publish, and Prefer says so before you send: “Publishing on Ghost also shares the post to the social web and runs your Ghost webhooks. No email is sent.” As with WordPress, once a post is live, update it with Live: “This post is live on Ghost. Sending a draft would change the live post. Publish the update instead.”

Ghost error messages

Sanity

What Sanity needs

  • A Sanity project and dataset that holds your posts.
  • An Editor API token. In sanity.io/manage, open your project, then Settings, API, Tokens, click Add API token and choose the Editor permission. Creating a token needs the Developer or Administrator role in that project. Viewer and Contributor tokens cannot publish, so Prefer refuses them.

Connect Sanity

1

Open the dialog

In Publishing, click Connect next to Sanity.
2

Enter your project

Enter the Project ID (shown under the project name in sanity.io/manage), the Dataset (usually production) and the API token.
3

Connect

Click Connect. Prefer checks the token can write and publish, then opens Set up Sanity.

Set up Sanity

Sanity is headless, so Prefer needs to know how your posts are built. It reads your newest documents and suggests every value.
  1. Document type: choose the type that holds your posts.
  2. Fields: confirm which field receives the Title, Slug, Body, Excerpt, SEO title, SEO description, Main image and Published date. Title and body are required. With no posts yet, Prefer suggests Sanity’s blog template fields.
  3. Body features: confirm what your body field allows, such as heading levels, lists, code and images. Prefer uses only these, and tells you when it converts something your body field does not allow (for example, a table becomes a bulleted list).
  4. Live Edit: tick “This type has no drafts (Live Edit)” if your type publishes without drafts.
  5. Fixed values: add a value for any required field Prefer does not fill, such as an author reference (author._ref set to the author’s document ID, and author._type set to reference). Fixed values are set on new posts only.
  6. Post URL pattern: where a post appears on your site, such as https://example.com/blog/{slug}. Click Check to test it against a published post. Prefer uses it to link to and confirm the live page.
  7. Studio address (optional), so Prefer can link straight to the document in your Studio.
  8. Click Save.

Draft and Live in Sanity

  • Draft (“Create a draft in Sanity”) creates or updates a draft document you can review and publish in Studio.
  • Live (“Publish in Sanity”) publishes the document.
Images become Sanity assets. On an update, Prefer changes only the fields it manages. Categories, authors, custom fields, and a published date set in Studio stay as they are. Your site shows a live post after its next build or revalidation, so use Check status to confirm it. For a Live Edit type, Prefer always publishes and does not offer Draft: “This document type has no drafts in Sanity. Publish instead.”

Sanity error messages

Astro

Astro sites have no CMS of their own, so Prefer publishes through GitHub. It commits each post as a Markdown file, with its images, into your site’s content collection. Your host (such as Cloudflare Pages, Netlify or GitHub Actions) then rebuilds the site as it does for any commit.

What Astro needs

  • An Astro site in a GitHub repository that uses content collections.
  • Permission to install a GitHub app on that repository. On a personal account, that is the owner. In an organization, an owner installs it (or a repository admin, on their own repositories).
  • Write access to the repository for the person who connects. Prefer only writes to repositories you can push to yourself.
The app is called Prefer Publishing on GitHub. It asks for read and write access to the repository’s contents and pull requests, and read access to its metadata. Nothing else.

Connect Astro

1

Open the dialog

In Publishing, click Connect next to Astro.
2

Install the app

Click Connect GitHub. On GitHub, choose the account, then choose Only select repositories and pick your site’s repository.
3

Confirm it is you

GitHub asks you to authorize Prefer Publishing. This lets Prefer confirm the installation and see which repositories you can write to.
4

Set up

GitHub sends you back to Prefer, which opens Set up Astro.
If the app is already installed on your account, click Already installed the Prefer app? Continue instead of Connect GitHub.

Set up Astro

  1. Repository: choose your site’s repository. If it is missing, click Don’t see your repository? Add it to the Prefer app on GitHub.
  2. Production branch: the branch your host builds the live site from. The default branch is preselected, and protected branches are marked.
  3. Detect: Prefer reads your content collections and recent posts, and changes nothing. It fills in the Content folder, the file format and naming, where images go, and the Frontmatter keys your theme uses (title, description, publish date, updated date, hero image, tags).
  4. Review every value. If your theme requires a field Prefer cannot fill, Prefer asks you for a value.
  5. Title limit (optional), if your theme limits title length.
  6. Publishing: turn on Always open a pull request, even when publishing live if you want to merge every post yourself. You can also use the post’s first image as its hero image.
  7. Live URL pattern: where a post appears on your site, such as https://example.com/blog/{id}/, where {id} is the post’s file name. Click Check to test it against an existing post.
  8. Click Save.

Draft and Live on Astro

  • Draft (“Open a pull request”) commits the post to a new branch and opens a pull request. Your host’s preview deploy, if it makes one, shows how the post will look. Merge the pull request to publish.
  • Live (“Commit to your site’s branch”) commits the post and its images to your production branch in one commit. GitHub shows the commit as Verified.
Publishing again updates the same file. If the post has an open pull request, Prefer updates the pull request. A live publish then merges it for you, so the post goes live. If your branch rules stop the merge, Prefer marks the pull request ready for you to merge. Protected branches. If branch protection or a ruleset stops Prefer from committing directly, a live publish opens a pull request for you to merge instead: “Your branch is protected, so Prefer will open a pull request. Merge it to go live, or add the Prefer app to your ruleset’s bypass list.” To let Prefer commit directly, add Prefer Publishing to the ruleset’s bypass list. After a live commit, Prefer shows “Your site is rebuilding. This usually takes a few minutes.” Click Check status to confirm the post once your host has deployed it. A pull request you merge on GitHub also moves to Published on Check status.
If your host only deploys commits made by members of your team, turn on Always open a pull request, even when publishing live. Your merge then triggers the deploy.

Astro error messages

Framer

What Framer needs

  • A Framer project on any plan.
  • A CMS collection you manage yourself, with a plain text field for the title and a formatted text field for the body. Collections managed by a plugin (such as a Notion or Airtable sync) are read-only, so Prefer does not offer them.
  • A project API key. In Framer, open Site Settings, then General, then API keys. The key acts as the person who creates it, so the project owner or an admin should create it. Framer shows the key once.

Connect Framer

1

Open the dialog

In Publishing, click Connect next to Framer.
2

Paste the project URL

Open your project in Framer and copy the address from your browser (it starts with https://framer.com/projects/). Paste it into Project URL.
3

Paste the API key

Paste the key into API key and click Connect. Prefer then opens Set up Framer.

Set up Framer

  1. Collection: choose where Prefer adds your posts.
  2. Fields: confirm which field receives the Title, Body, Excerpt, SEO title, SEO description, Featured image and Date. Title and body are required. Prefer changes only these fields when it updates a post.
  3. Values for new posts: give option, toggle, reference and required text fields a value. They are set once, when Prefer creates a post.
  4. Where posts are served: the address in front of each post’s slug, such as https://example.com/blog. Prefer uses it to link to and confirm the live post.
  5. Use the article’s first image as the featured image (needs a featured image field).
  6. Let Prefer publish the whole Framer site: off by default. Turn it on to use Live (see below).
  7. Click Save.

Draft and Live on Framer

  • Draft (“Add to your Framer CMS”) adds the post to your collection as a Framer draft, or updates it. Nothing is published. The item stays out of your site until you turn off Draft on it in Framer and publish your site.
  • Live (“Add and publish your Framer site”) adds the post, then publishes your Framer site.
Going live publishes your whole Framer site. Publishing in Framer puts every unpublished change in the project live, not only Prefer’s post. That is why Live needs Let Prefer publish the whole Framer site turned on, and why Prefer asks you to confirm every time. The confirmation lists the other unpublished page changes and reads, for example, “Publish my whole Framer site, including any CMS edits and any changes made before Prefer finishes”. When the setting is off, use Draft and publish the site in Framer yourself. If your project has a staging site, a live publish goes there first: “Published to your Framer staging site. Promote it in Framer to go live.” Once you promote it, Check status confirms the post. Framer can also serve the previous page for a few minutes after a publish, so Check status is the way to confirm a fresh post. Sending a draft for a post that is already live keeps it live: “This item is live on your Framer site. These changes go live the next time the site is published.” Framer’s formatted text has no horizontal lines, underline or strikethrough, so Prefer leaves those out and tells you. The words are kept.

Framer error messages

FAQ

Publishing applies to Create Content drafts. For an optimised page, open the Publish modal and copy the update (as content, HTML or Markdown), download it, or use the WordPress Copy blocks export, then apply it to the page on your site. Choose Mark as live when it is live to record the date and address.
No. Prefer creates and updates posts, and never deletes or unpublishes anything. If you delete a post on your site, Publish as new creates it again at the same address.
Nothing. Disconnecting stops Prefer publishing to that site, and posts already published stay where they are. Reconnect the same site later and Prefer picks up the same posts again.
Each project publishes to one site at a time. To switch, disconnect the current site and connect the new one.
Click Disconnect in Prefer first. Then remove the access on your platform: in WordPress, revoke the Prefer application password under Users, Profile (Prefer deletes it for you when your site allows); in Ghost, delete the custom integration; in Sanity, delete the token; in Framer, delete the API key; on GitHub, uninstall the Prefer Publishing app.
Prefer stores each key and token encrypted, uses it only to publish to your site, and never shows it again after you connect.
Content Studio
Integrations