# Weekly Substack subscriber and revenue report

> Every Monday: new, paid and churned Substack subscribers, revenue and the week's posts by opens and signups, without opening four dashboard tabs.

Source: https://cotlet.dev/integrations/substack-api-mcp-server/weekly-subscriber-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.

[Request access](https://cotlet.dev/app/signup?app=substack) [All Substack tools](https://cotlet.dev/integrations/substack-api-mcp-server)

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](https://support.substack.com/hc/en-us/articles/5320347155860-A-guide-to-Substack-metrics) · [Substack: How do I use the subscriber dashboard?](https://support.substack.com/hc/en-us/articles/360058529871-How-do-I-use-the-subscriber-dashboard-on-Substack) · [Substack: What does my Retention tab show?](https://support.substack.com/hc/en-us/articles/14311608818708-What-does-my-Retention-tab-on-Substack-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](https://cotlet.dev/integrations/substack-api-mcp-server#automations)

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](https://cotlet.dev/integrations/substack-api-mcp-server#tools)

## More Substack automations

- [Schedule Substack posts from Markdown drafts](https://cotlet.dev/integrations/substack-api-mcp-server/schedule-newsletter-posts)
- [Reply to unanswered Substack comments](https://cotlet.dev/integrations/substack-api-mcp-server/reply-to-unanswered-comments)
- [Substack API and MCP server: every tool](https://cotlet.dev/integrations/substack-api-mcp-server)
- [All use cases](https://cotlet.dev/use-cases)

## 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.

[Request access](https://cotlet.dev/app/signup?app=substack)
