Push an article to Substack

How a WriteStack article becomes a Substack draft, how to schedule and unschedule it on Substack, which Substack settings sync, what the browser extension needs, and what each sync status and error means.

Pushing sends a WriteStack article to Substack as a draft. It never publishes. The push runs through the WriteStack browser extension in an open WriteStack tab, so it finishes in seconds when WriteStack is open and waits otherwise.

For how WriteStack and Substack stay in step in general, see Sync.

What you need

  • The WriteStack browser extension, version 1.5.28 or newer.
  • You are logged into Substack in the same Chrome.
  • WriteStack is open in a Chrome tab. Any WriteStack page works.
  • The newsletter is enabled for Articles. See Create an article.

Push a draft

From the Coach: ask, for example, "Push this to Substack." If you have more than one newsletter and didn't name one, the Coach asks "Which newsletter should I push it to?". See How the Coach writes articles.

From an AI agent (MCP): the agent calls push_article_to_substack with the newsletter you chose.

What happens:

  1. WriteStack queues a sync job for the article.
  2. An open WriteStack tab with the extension picks it up and writes the draft on Substack.
  3. The first push creates the Substack draft. Later pushes update the same draft.

A push replaces the title, subtitle, body and settings of the Substack draft with the WriteStack version. If the Substack draft was edited after the last push, WriteStack stops with a conflict instead of overwriting it.

An article that already has a Substack draft stays on that newsletter. An agent can't push it to a different one. If you ask the Coach to push it to another newsletter, it pushes a copy there and the original stays where it was.

Schedule on Substack

Scheduling sets the article to publish on Substack at a set time. Only an AI agent can do this today, with schedule_article_on_substack. The Coach can't schedule articles.

  • The agent passes a publish time, or leaves it out to use the newsletter's next free article slot.
  • If the article isn't on Substack yet, it is pushed as a draft first, then scheduled.
  • The agent can also set the post audience and email audience.

Unschedule

unschedule_article_on_substack removes the article from the Substack schedule. The draft stays on Substack. The article must have been pushed first.

Substack settings

An agent can change these with update_article. They are saved in WriteStack and sent to Substack on the next push.

SettingDefault when not set
AudienceEveryone
Who can commentEveryone
SEO title and SEO descriptionSubstack's own
Slug (the post's URL)Substack's own
Social titleThe article title
Publish timeNone

If the slug is already used by another post on Substack, the draft keeps its current slug and you get a warning.

The Coach edits only the title, subtitle and body.

Status

An agent can read the status with get_article_substack_status. The Coach checks it when you ask whether a draft is on Substack.

StatusMeaning
idleNot pushed yet.
pendingQueued. It runs the next time WriteStack is open in Chrome with the extension.
syncingAn open WriteStack tab is pushing it right now.
syncedThe draft (and schedule, if any) is on Substack.
blockedThe extension can't run it yet. See the table below.
conflictThe Substack draft has edits made after the last push. Nothing was overwritten.
failedThe push failed. The error text says why.

If it doesn't work

MessageFix
"Sync is waiting for WriteStack to be open with the Chrome extension. It is not on Substack yet."Open WriteStack in a browser with the extension installed. The push runs on its own.
"Sync is blocked until the WriteStack Chrome extension is installed."Install or update the extension.
"Sync is blocked until you log into Substack in Chrome."Log into Substack in the same Chrome, then open WriteStack.
"Sync is blocked until the extension is granted access to this custom domain."Your newsletter uses a custom domain. The extension needs permission for it.
"Substack has edits made after the last WriteStack update. Open the article to resolve."Someone edited the draft on Substack. Copy those edits into WriteStack, or keep editing on Substack.
"This article is already drafted on a different Substack newsletter."Push it to that newsletter, or create a new article for the other one.
"That draft is empty, so it was not pushed."The Coach only pushes drafts with a body.

More fixes: Sync errors.

On this page