What's supported
DemandBird publishes to Substack Notes: the short-form social feed on Substack, not the full newsletter. This requires a personal Substack account.
| Feature | Limit |
|---|---|
| Account type | Personal Substack account (Notes) |
| Characters | 10,000 |
| Images | Up to 6 per post |
| Video | Up to 5 minutes |
Install & connect the Chrome extension
Substack publishing runs through the DemandBird Chrome extension. You only need to do this once per machine.
- Install from the Chrome Web StoreInstall the DemandBird Chrome extension ↗. Pin it to your Chrome toolbar so it's easy to reach.
- Link the extension to your DemandBird accountClick the extension icon in your toolbar and click Connect Account. A tab opens briefly to pair the extension with your DemandBird account and closes itself when it's done. If the tab stays open, copy the API token and account ID it shows into the extension settings manually.
- Log in to Substack in the same Chrome profileGo to substack.com and make sure you're signed in to the account you want DemandBird to publish from.
- Connect your Substack accountClick the extension icon again, then click Connect Substack Account. The extension captures your active session and links Substack to DemandBird automatically.
What the extension reads and why
When you click Connect Substack Account, the extension reads your active Substack session cookie and hands it to DemandBird so we can publish on your behalf. It isn't used to track browsing activity.
Your session cookie is encrypted at rest and only ever sent back to Substack when a scheduled post is due.
How the connection works
Substack has no public API that allows third-party tools to post on your behalf. DemandBird works around this by using your active browser session.
- You log into Substack in ChromeMake sure you're signed in to your Substack account in Chrome before connecting.
- The extension captures your session cookieThe DemandBird Chrome extension reads your Substack session cookie (the same token your browser uses to keep you logged in). This is what authorizes posts to be published on your behalf.
- The cookie is encrypted and storedYour session cookie is encrypted and stored securely. It is never sent anywhere except back to Substack when a post is being published.
- The extension hands your Note to Substack's schedulerWhen you schedule a Substack post, the extension picks it up the next time your browser is open and schedules it inside Substack, using your session, just as if you had scheduled it on Substack yourself. From then on Substack holds the Note and publishes it at your scheduled time.
What's required at publish time
With extension version 1.1.0 or later, nothing needs to be running at your scheduled time. The extension hands each scheduled Note to Substack ahead of time, and Substack's own servers publish it. Your Note goes out on time even if your computer is asleep or your browser is closed.
What does matter is the time between scheduling a post and its publish time:
- The extension is version 1.1.0 or later
Older versions still publish from your browser at the scheduled time. See Older extensions for how to update.
- Your browser is open at least once before the scheduled time
The hand-off to Substack happens the next time Chrome is open with the extension running. Once it's done, you can close the browser.
- Your Substack session is still valid
The extension schedules the Note using your Substack login. If it has expired, reconnect.
The Scheduled badge
Once a Note has been handed to Substack, it shows a Scheduled badge in your Scheduled list and on the calendar. Click the help icon next to it to see:
- “Substack will publish this on time, even if the computer is off.”
- “Edits and cancellations reach Substack the next time your browser is open with the extension.”
A post without the badge hasn't been handed off yet. It still needs the extension to run before its scheduled time.
Edits, unscheduling & deleting
Once Substack holds a Note, DemandBird can't change it directly. Every change goes through the extension of the person who connected the Substack account, whoever made the change. If a teammate connected Substack, the app names their browser (for example “Alex's browser”) instead of yours.
Editing a scheduled Note
Changes to the text, images, or time reach Substack the next time that browser is open with the extension. After you save, the confirmation says so. Until the change syncs, Substack still has the old version, and if the scheduled time arrives first, the old version is what publishes.
Unscheduling
When you unschedule a handed-off Note, its badge changes to Removing from Substack. The help popover explains:
- “This post was unscheduled, but the Note is still in Substack's queue.”
- “It comes off Substack the next time your browser is open with the extension, and then this row goes away.”
Until then, the Note is still scheduled on Substack and can still publish at its time.
Deleting
A post that's scheduled on Substack can't be deleted straight away, because that would leave the Note behind in Substack's queue. When you try, DemandBird asks Substack to remove it and shows: “This post is scheduled on Substack, so it can't be deleted yet. It comes off Substack the next time your browser is open with the extension, and then you can delete it.”
The post shows Removing from Substack while it waits. Once the extension confirms the Note is gone, delete the post again. If Substack refuses the removal, DemandBird keeps the post and tries again on the next sync.
When posts fail
Notes handed to Substack
A little after the scheduled time, the next time the extension runs it checks whether Substack published the Note. If it did, the post moves to Posted. If the Note is still sitting in Substack's queue more than an hour past its scheduled time, the post moves to Failed. Because this check runs from the extension, the status can stay on Scheduled until your browser is next open, even though the Note is already live.
Disconnecting Substack
Disconnecting your Substack account removes the login DemandBird needs to withdraw a Note from Substack. Any Note already handed to Substack is marked Failed, and it may still publish on Substack. If you don't want it to go out, delete it in Substack yourself.
Notes published from your browser
For older extensions, or a post that wasn't handed off in time, DemandBird waits up to 3 hours past the scheduled time for the extension to pick up the post and publish it. This grace period covers brief delays like Chrome starting up or the extension reconnecting. If the extension never responds within that window (because your computer was asleep, Chrome was closed, or the extension wasn't running), the post automatically moves to Failed.
Failure reasons you may see
| Error message | What it means |
|---|---|
| Substack did not publish the scheduled Note: it was still sitting in Substack's queue well past its scheduled time | The Note was handed to Substack, but Substack didn't publish it. Check the Note in Substack, then retry. |
| Substack was disconnected after this Note was handed to Substack's scheduler, so it may still publish there. Delete it in Substack if you don't want it to go out. | You disconnected Substack while the Note was scheduled there. DemandBird can no longer reach it. |
| Missed scheduled time: your computer was asleep or the extension wasn't running | The post was publishing from your browser and the 3-hour window passed without the extension checking in. Update the extension to 1.1.0 or later so this doesn't depend on your browser. |
| Your Substack session has expired: please reconnect your account | Your session cookie is no longer valid. Reconnect your account in Settings to get a fresh session. |
Retrying a failed post
Every failed post has a Retry button. Before clicking it:
- Confirm the DemandBird extension is installed, enabled, and on version 1.1.0 or later
- If the session expired, reconnect your Substack account first (see below)
- If the post failed after a disconnect, check Substack first so the Note doesn't go out twice
Older extensions
Extension versions before 1.1.0 don't hand Notes to Substack. The extension publishes each Note itself at the scheduled time, so three things must be true then:
- Chrome extension is installed
The DemandBird extension must be installed in Chrome and not disabled.
- Chrome is open and running
The extension only runs when Chrome is open. A closed browser means the extension is inactive.
- Your computer is awake
A sleeping or shut-down computer cannot run Chrome or the extension.
Updating the extension
Chrome updates extensions on its own, but it can take a few hours. To check your version or update right away:
- Open
chrome://extensionsin Chrome - Find DemandBird and check its version number
- If it's below 1.1.0, turn on Developer mode (top right) and click Update
You don't need to reconnect after updating. Posts already scheduled are handed to Substack the next time the updated extension runs.
Reconnecting after a session expires
Substack session cookies can expire after extended periods of inactivity. When this happens, posts will fail with the session-expired error.
- Log in to Substack in ChromeMake sure you're signed in to your Substack account in Chrome before reconnecting.
- Go to Settings → Connected AccountsFind your Substack connection and click Disconnect.
- Click Connect and authorizeThe extension will capture a fresh session cookie. Your Substack account is now reconnected and ready to publish.