Publishing overview
Connect WordPress, Framer, Lovable or a signed webhook. One destination per site, nothing goes live without your OK, and what happens when a publish fails.
Connect where articles go in Article settings → Publishing. Only the workspace owner can connect or change it.
Where you can publish
| Destination | How it connects |
|---|---|
| WordPress | One click on WordPress's own Approve screen. No plugin. |
| Framer (beta) | Your project link and an API key. Posts go to a CMS collection. |
| Lovable | Paste one prompt into Lovable. It builds the blog and the endpoint. |
| Webhook | Your own app. A prompt for Cursor or Claude Code builds the endpoint. |
| Webflow | Coming soon. |
Each site has one destination. To switch, disconnect the current one and connect another. Disconnecting keeps live posts where they are; scheduled articles wait.
Connection status
- Not connected: articles stay in RankHabit.
- Waiting for test: connected, but not tested yet. Send the test from the card.
- Connected: the test worked.
- Needs attention: the last publish failed. Fix connection, then Retry.
Tests never publish anything: WordPress and Framer get a draft called “RankHabit test post: safe to delete”, removed a minute later, and webhooks get a signed sample marked as a test.
When articles go out
An approved (or, with auto-publish on, scheduled) article goes out on its day, from about 9 am in your site's time zone. A day that passed is never sent by itself: Overview shows it as “didn't go out” with Publish. Connecting a destination never sends a backlog either; you're asked “Publish N overdue articles now?” instead.
When a publish fails
Busy or temporary errors are retried by themselves. If it still fails, the article stays scheduled with a plain sentence saying what went wrong, shown on Overview and on the article, with Fix connection and Retry.
The workspace owner gets one email for the first failure in a row. Once a publish works again, you'll hear about the next one.
CMS fields
Article settings → CMS fields shows what each article field is sent as. WordPress maps them for you (title, content, excerpt, slug, featured image). In Framer you pick a field for each, and Title and Body are required. Webhooks and Lovable get every field as JSON.
Extra fields (WordPress and Framer) are filled on every article: AI picks, Same every time, or Leave empty. Change one on an article with Fields. A required field left empty blocks publishing until it's set.