User Guide

Substack

Substack works differently from every other platform. It requires the Chrome extension: this guide explains why, and what to do if something goes wrong.

Chrome extension required. You must have the DemandBird Chrome extension installed and active to publish Substack posts.

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.

FeatureLimit
Account typePersonal Substack account (Notes)
Characters10,000
ImagesUp to 6 per post
VideoUp 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.

  1. Install from the Chrome Web Store
    Install the DemandBird Chrome extension โ†—. Pin it to your Chrome toolbar so it's easy to reach.
  2. Link the extension to your DemandBird account
    Click 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.
  3. Log in to Substack in the same Chrome profile
    Go to substack.com and make sure you're signed in to the account you want DemandBird to publish from.
  4. Connect your Substack account
    Click 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.

  1. You log into Substack in Chrome
    Make sure you're signed in to your Substack account in Chrome before connecting.
  2. The extension captures your session cookie
    The 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.
  3. The cookie is encrypted and stored
    Your session cookie is encrypted and stored securely. It is never sent anywhere except back to Substack when a post is being published.
  4. At publish time, the extension does the posting
    When a scheduled Substack post is due, DemandBird sends it to your Chrome extension, which publishes it to Substack using your session, just as if you had typed and submitted it yourself.

What's required at publish time

Because the Chrome extension does the actual publishing (not DemandBird's servers), three things must be true at your scheduled time:

  • โœ…
    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. Schedule Substack posts for times you know your computer will be on.

Unlike LinkedIn, Twitter/X, and other platforms (where DemandBird's servers post directly via an API), Substack posts are sent through your Chrome extension. If the extension isn't running, there's nothing available to do the publishing.

When posts fail

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.

Posts stuck in posting status past the 3-hour grace period are automatically failed when the extension next connects.

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 messageWhat it means
Missed scheduled time: your computer was asleep or the extension wasn't runningThe 3-hour window passed without the extension checking in. Make sure Chrome is open and the extension is active at your scheduled time.
Your Substack session has expired: please reconnect your accountYour 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:

  1. Confirm your computer is awake and Chrome is open
  2. Confirm the DemandBird extension is installed and enabled in Chrome
  3. If the session expired, reconnect your Substack account first (see below)
Failed posts are never automatically rescheduled: retry is always manual. This ensures your post only goes out when you've confirmed the conditions are right.

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.

  1. Log in to Substack in Chrome
    Make sure you're signed in to your Substack account in Chrome before reconnecting.
  2. Go to Settings โ†’ Connected Accounts
    Find your Substack connection and click Disconnect.
  3. Click Connect and authorize
    The extension will capture a fresh session cookie. Your Substack account is now reconnected and ready to publish.