Substack logo

Substack automation · runs weekly

Weekly Substack subscriber and revenue report

Monday is when you want to know whether last week grew the list or lost paid readers. In Substack those numbers sit on the dashboard Home, the Subscribers chart, the Stats tabs and each post page, and none of them comes to you.

Cotlet does it in your own Substack account with get_publication_stats, list_posts and get_post_stats, called by your AI agent, an n8n workflow or a script.

Hosted · nothing to install or maintain

Official options

Can Substack do this on its own?

Substack has no public API for publication or post stats (checked 12 Oct 2026). The dashboard shows them and Stats > Posts exports a CSV, but every report is opened and exported by hand.

By hand

How you do it in Substack today

  1. Open the publication Dashboard and read the Overview cards on Home: Gross annualized revenue, Paid subscribers and Total subscribers.
  2. Go to Subscribers and switch the chart to "Paid subscribers" for the split into paid, comps, gifts and free trials.
  3. Open Stats > Retention for paid churn and net growth, and Stats > Unsubscribes for each paid cancellation with its reason.
  4. Open Stats > Posts, find the week's posts in the table and note views, open rate and free and paid subs per post, or download the table as a CSV.
  5. Paste everything into a sheet next to last Monday's numbers. Substack keeps these figures in the dashboard and the app; the help center pages we checked describe no scheduled stats email to the publisher.

With an agent

How to weekly Substack subscriber and revenue report

Prompt

Every Monday at 8:00, send me last week's Substack numbers: new free and paid subscribers, churned paid subscribers, revenue, and how each post from the week did on opens and new subscribers.
  1. 01

    Take the weekly snapshot

    The agent calls get_publication_stats with period 7d for new, paid and churned subscribers and revenue. A 30d call next to it gives a baseline, so one quiet week is compared with the month and not with a single outlier.

  2. 02

    Find the posts of the week

    list_posts returns published posts newest first; the agent keeps those dated inside the last seven days and stops paging at the first older one.

  3. 03

    Score each post

    get_post_stats for each of those posts gives opens, open rate and subscribers gained. A post sent on Sunday has had one day to collect opens, so the agent marks it as early instead of ranking it last.

  4. 04

    Flag what needs a look

    The agent flags churn above the 30-day weekly average and a post that brought no new subscribers. It reports revenue as Substack's annualized figure and says so, so nobody reads it as cash received that week.

  5. 05

    Keep last week for the comparison

    When the run lives in n8n or cron, the agent stores this week's totals and compares against the stored copy next Monday. Without a stored copy it says the week-on-week line is missing rather than guessing.

What you get back

Example data

Week 6 to 12 Oct 2026
Subscribers: 4,380 total (+96 new, of which 9 paid)
Paid: 412, churned 11 (30-day weekly average: 6, flagged)
Gross annualized revenue: $37,800
Posts: "The quiet launch" open rate 48.8%, 37 new subscribers
"Notes on pricing" sent Sun, 1 day of data, 14 new subscribers so far

Other ways to ask

  • On the first of each month, give me the same report for the last 30 days and the last 90 days side by side.
  • Only tell me on Monday if paid churn went up or a post got fewer than 10 new subscribers.
  • Compare this week's posts by open rate and new paid subscribers and tell me which topic did best.

Before you automate it

What Substack allows, and what to know first

  • Substack's Gross annualized revenue is a run rate: current paid subscriptions annualized, before Substack's fees and Stripe card fees.
  • The Paid subscribers number in the Substack subscriber dashboard includes gifts, comps and free trials, while the paid net growth rate on the Retention tab leaves comped and group subscriptions out.
  • The Retention and Unsubscribes tabs in Substack Stats exist only for publications with paid subscriptions, and Retention can take 30 days to appear after the first paying subscriber.
  • Substack changed how Delivery rate and Open rate are counted so that reads in the Substack app inbox are included, which can raise the rates of new and older posts alike; compare open rates over time with that in mind.
  • Free retention data on the Substack Retention tab starts on January 1, 2026, so free churn before that date is not in Stats.

Every tool here only reads, so it can run weekly from n8n, Make, Zapier or cron without waiting for your OK.

Sources: Substack: A guide to Substack metrics · Substack: How do I use the subscriber dashboard? · Substack: What does my Retention tab show?

REST

Call get_publication_stats from a script

curl

curl https://cotlet.dev/api/v1/substack/get_publication_stats \
  -H "Authorization: Bearer $COTLET_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"period":"7d"}'

Example response

{
  "period": "7d",
  "subscribers_total": 4380,
  "subscribers_paid": 412,
  "subscribers_new": 96,
  "subscribers_churned": 11,
  "revenue_usd": 3150
}

MCP: add https://cotlet.dev/mcp/v1 with the same key; the tool is substack_get_publication_stats. Example data.

Schedule it in n8n, Make, Zapier or cron

Tools

Substack tools this automation uses

Cotlet Substack tools used to weekly Substack subscriber and revenue report
Tool Parameters
get_publication_stats period
list_posts status, limit, cursor
get_post_stats post_id
All 14 Substack tools with descriptions

Give your agent access to Substack.

Free 7-day trial with 5,000 credits, no card needed. Cotlet is independent and not affiliated with Substack.