Writer plan · read-only
Subscriber analytics from your export
Upload your Substack export and get growth, cohorts, engagement segments and source quality, via dashboard, API or MCP.
In one paragraph
Subscriber analytics from your export turns the subscriber CSV and export zip you download from Substack into growth-over-time charts, signup cohorts, engagement segments and source-quality reports. You connect by pasting your publication URL and uploading your export, then upload new ones on a schedule we remind you about. Results are available as a JSON/CSV API and through the get_growth tool in our MCP server, including an inactive-subscriber list you can use to clean your list for deliverability.
Why people want this
“Want to segment subscribers by opens and clicks to protect email deliverability? You can't do that either.”
“It shows opens and clicks, and that is about it.”
“Substack does not flag which paid subscribers are going quiet.”
“better analytics to figure out where subscribers come from”
How it works
- Paste your publication URL, then export your subscribers (all columns) from your Substack dashboard and upload the CSV, or upload the full export zip.
- We compute growth over time, monthly signup cohorts, engagement segments (active, cooling, inactive) and how subscribers from each source behave.
- Choose a reminder cadence (weekly or monthly). Each new upload extends your history and shows who joined, upgraded or left since the last one.
- Read the results in the dashboard, pull them as JSON or CSV, or ask your AI agent through the MCP get_growth tool.
Endpoints
Example responses are illustrative.
/v1/publications/{publication}/importsUpload a subscriber CSV or export zip to analyse.
| Param | In | Type | Description |
|---|---|---|---|
| publication* | path | string | Your publication's subdomain or custom domain, e.g. yourpub.substack.com |
| file* | body | multipart file (.csv or .zip) | Your Substack subscriber export |
{
"id": "imp_2026_10_21",
"status": "processing",
"rows": 4790,
"columns_detected": [
"email",
"subscription_type",
"created_at",
"last_opened",
"source"
]
}/v1/publications/{publication}/growthTotals and net change over time, by free and paid.
| Param | In | Type | Description |
|---|---|---|---|
| publication* | path | string | Your publication's subdomain or custom domain, e.g. yourpub.substack.com |
| from | query | date | Start date |
| to | query | date | End date |
| interval | query | "week" | "month" | Bucket size, default month |
| format | query | "json" | "csv" | Response format, default json |
{
"interval": "month",
"series": [
{
"period": "2026-07",
"total": 4310,
"paid": 221,
"new": 240,
"lost": 50
},
{
"period": "2026-08",
"total": 4555,
"paid": 236,
"new": 290,
"lost": 45
},
{
"period": "2026-09",
"total": 4790,
"paid": 251,
"new": 281,
"lost": 46
}
],
"source": "exports"
}/v1/publications/{publication}/cohortsSignup cohorts with how many are still subscribed, still opening and paying.
| Param | In | Type | Description |
|---|---|---|---|
| publication* | path | string | Your publication's subdomain or custom domain, e.g. yourpub.substack.com |
| by | query | "month" | "quarter" | Cohort size, default month |
{
"cohorts": [
{
"cohort": "2026-04",
"joined": 310,
"still_subscribed": 271,
"opened_last_30d": 164,
"paid": 14
},
{
"cohort": "2026-05",
"joined": 268,
"still_subscribed": 246,
"opened_last_30d": 151,
"paid": 9
}
]
}/v1/publications/{publication}/segmentsEngagement segments; inactive returns a cleanup list for deliverability.
| Param | In | Type | Description |
|---|---|---|---|
| publication* | path | string | Your publication's subdomain or custom domain, e.g. yourpub.substack.com |
| segment | query | "active" | "cooling" | "inactive" | "paid_quiet" | Which segment; omit for counts of all |
| inactive_days | query | integer | Days without an open to count as inactive, default 90 |
| format | query | "json" | "csv" | Use csv to download the list |
{
"counts": {
"active": 2380,
"cooling": 1020,
"inactive": 1390,
"paid_quiet": 17
},
"inactive_days": 90,
"as_of_export": "2026-10-21"
}/v1/publications/{publication}/sourcesSource quality: subscribers, engagement and paid conversion by signup source.
| Param | In | Type | Description |
|---|---|---|---|
| publication* | path | string | Your publication's subdomain or custom domain, e.g. yourpub.substack.com |
{
"sources": [
{
"source": "substack-network",
"subscribers": 1840,
"open_rate_30d": 0.41,
"paid_rate": 0.031
},
{
"source": "direct",
"subscribers": 1210,
"open_rate_30d": 0.58,
"paid_rate": 0.072
}
]
}MCP tools for your AI agent
get_growthGrowth over a window from your exports, or Publisher API counts if you add a key.
Try: “Summarise my subscriber growth this year, month by month.”
get_segmentsEngagement segment counts and lists.
Try: “How many subscribers haven't opened in 90 days, and how many of them are paid?”
get_cohortsRetention and conversion by signup cohort.
Try: “Which signup month has the best paid conversion?”
get_source_qualityEngagement and paid conversion by source.
Try: “Which subscriber source is worth the most to me?”
What people will build with it
Deliverability cleanup
Download the inactive segment as CSV and decide who to re-engage or remove, so your emails keep landing in inboxes.
Save quiet paid subscribers
See paid subscribers who stopped opening and reach out before renewal.
Know which sources pay off
Compare open and paid rates by signup source to decide where to spend time and money.
Growth in your own reports
Pull monthly growth as JSON or CSV into a spreadsheet, Notion or an investor update.
Questions
- Where does the data come from?
- From the subscriber export you download from your own Substack dashboard and upload to us. Optionally, if your publication has Substack's Publisher API enabled, you can add your key for daily subscriber counts.
- How current are the numbers?
- As current as your last upload. We email you a reminder on the schedule you choose so your history stays fresh.
- Do you contact my subscribers?
- No. We analyse the file and give you segments and lists. What you do with them, inside Substack or your own tools, is your decision.
- Does it need my password?
- No. We never ask for your Substack login or session. We read your public RSS feed and the export files you download from your own Substack settings and upload to us.
- Is this affiliated with Substack?
- No. newsletterapi.io is an independent tool for Substack writers. It is not made, endorsed or approved by Substack, Inc.
- How do I get access?
- Email hello@newsletterapi.io or use the Get access form, and we set up your account.
Read more
- How to Sync Substack Subscribers to Kit or HubSpot
- Substack Statistics 2026: Users, Revenue and Funding
- Substack New Subscriber Email Has No Address? What Changed
- What Does the Meta Pixel Track on Substack?
- Why Don't My Substack and Stripe Numbers Match?
- Substack Analytics Explained: Every Dashboard Metric
- Export Substack Subscribers (and Move Them to Kit)