Skip to content

Ghost vs Substack: Fees, Ownership, API and Migration

By the newsletterapi team · Published · Updated · 5 min read

The problem: “I want to own my publication and connect it to my own tools, without losing my paying readers in the move.”

Cover image: Ghost vs Substack: Fees, Ownership, API and Migration

Short answer

As of October 2026, Substack is free to run and keeps 10% of paid revenue plus Stripe fees, but has no write API or webhooks. Ghost takes 0% of revenue; Ghost(Pro) costs from $29 a month, billed yearly, for paid subscriptions, the Admin API and webhooks, or you can self-host the MIT-licensed software. Both import from each other.

newsletterapi is an independent project for Substack writers, not affiliated with Substack or Ghost. There are no affiliate links on this page. Prices and features were read on each vendor's own pages on October 22, 2026.

The problem

Ghost vs Substack usually comes down to one trade: Substack's simplicity and network against Ghost's ownership and openness. The operators who leave tend to name integrations. When Brad Hargreaves moved his publication from Substack to Ghost, he listed:

"No API, no webhooks, no Zapier integration, no SSO" (LinkedIn, 2025-09-03)

"This isn't an engineering problem, it's a product choice" (same post)

A commenter on the same post added: "Even something very basic on the Substack side (e.g. ability to auto-subscribe someone who comes in through another channel) would go a long way." That is the gap this page measures, fairly, alongside what Substack does well.

How do Ghost and Substack compare at a glance?

As published on October 22, 2026:

Substack Ghost(Pro) Ghost self-hosted
Cost to publish Free (Substack) Starter $18/mo, Publisher $29/mo, Business $199/mo, billed yearly (Ghost) Free software under the MIT license (GitHub); you pay for hosting and email
Fee on paid subscriptions 10% plus Stripe 0% from Publisher; processor fees apply None from Ghost
Paid subscriptions Yes From Publisher (not Starter) Yes
Custom domain One-time $50 (Substack) Every plan, via CNAME Yours by default
Read API RSS; Publisher API where enabled Content API on every plan Content API
Write API (posts, members) None Admin API from Publisher Admin API
Webhooks None From Publisher Yes
Zapier No native app From Publisher Via webhooks and API
MCP for AI agents Official, read-only, Bestseller only Community servers Community servers
Export Zip of posts, list and stats JSON content, members CSV, analytics CSV Same, plus your database

How do the fees compare?

Substack's pricing article lists a 10% Substack fee on each subscription payment, Stripe card processing of 2.9% + $0.30 for US cards, and 0.7% for Stripe Billing. Ghost(Pro) lists a 0% transaction fee from Publisher upwards: "Process payments for your premium subscriptions without any additional transaction fees from Ghost", with "Payment processor fees still apply."

So the comparison is a percentage against a flat fee. At $290 a month in paid revenue, Substack's 10% equals Ghost Publisher's $29 a month (billed yearly); above that, Ghost costs less in platform fees, before Stripe, which you pay on both. Ghost's member limits rise with price, so check the plan that fits your list. Self-hosting removes the platform fee but adds hosting, an email provider and your own time.

The judgement: for a free newsletter, Substack's $0 is simpler. For a growing paid publication, Ghost's fixed price usually wins, and the gap widens with revenue.

What can the Ghost Admin API and webhooks do that Substack can't?

Ghost. The Admin API lets integrations browse, read, edit, add, copy and delete posts and pages; browse, read, edit and add members, tiers, newsletters and offers; and add, edit and delete webhooks. Ghost says "everything Ghost Admin can do is also possible with the API." Integration keys are "made up of an id and secret", so they belong on a server.

Ghost webhooks include member.added, member.edited, member.deleted, post.published, post.scheduled and more. You set them up under Settings → Advanced → Integrations → "Add custom integration"; "The only required fields to setup a new webhook are a trigger event and target URL to notify."

Substack. As of October 2026 there are no webhooks and no endpoint that adds subscribers or publishes posts. The official options read only: a Publisher API that, per the open-source substack-publisher-mcp wrapper, is read-only and "may not be enabled for your publication yet", and an MCP server limited to Bestseller publications with "read-only access" (Substack Help). Our Substack API guide maps every surface.

Job Substack Ghost (Publisher or self-hosted)
Add a member from your own form or checkout CSV import only Admin API
Send new-member events to a CRM No event member.added webhook
Publish from a CMS, script or agent Not possible Admin API
Read posts as data RSS, export Content API

If you are staying on Substack, the newsletterapi Posts API and MCP server give you read-only, structured access to your own archive, and backups keep a copy in storage you control. They don't write to Substack.

Who owns what on each platform?

Substack's export help says "Anything you publish on Substack is yours to own", and the export includes "posts, subscriber list, and related statistics" (Substack Help). Emails on a custom domain "are still sent" from a substack.com address (Substack Help).

Ghost's export gives "posts, pages, tags, tiers, and settings (JSON)" and "all members with their labels and subscription status (CSV)". Self-hosted, you also hold the database and server. Ghost is the stronger choice on ownership; Substack is the simpler one.

How do I move from Substack to Ghost?

Ghost's Substack migration guide runs inside Ghost Admin (Settings → Advanced → Import/Export):

  1. Enter your Substack URL, then create and download a Substack export zip and upload it.
  2. Upload your free subscriber CSV.
  3. Set up Stripe first, "using the same Stripe account connected to your Substack", then upload the paid subscriber CSV.
  4. Review the post and member counts and import.
  5. Ask Substack to stop its fee: Ghost warns that "Substack will continue to take 10% fees on your existing paid subscriptions."
  6. Add redirects: Substack's /p/ URLs need mapping to Ghost's root-level URLs. The guide includes a redirects.yaml example.

Large migrations can go to Ghost's Migrations team or the open-source TryGhost/migrate tools.

How do I move from Ghost to Substack?

Substack's Ghost guide has you export all members (Members → Settings → "Export all members") and content (a JSON file), then:

  1. Import the members CSV under "Import emails". They arrive with "free" status.
  2. Import posts with your Ghost URL under "Import posts".
  3. For paid members, "Connect with Stripe" using your Ghost Stripe login, enable payments, wait for the scan (up to 30 minutes), then revoke Ghost's access in Stripe before choosing "Import paid subscriptions", so no one is double charged.

If your archive doesn't come across cleanly, the newsletterapi import converter turns a Ghost JSON export into a file for Substack's own importer. More detail: importing posts to Substack.

Which should I choose?

If you… Lean towards
Want to start free with no setup Substack
Grow mainly through Substack's app, Notes and recommendations Substack
Earn more than about $290 a month and want a flat fee Ghost(Pro) Publisher
Need webhooks, a write API or Zapier Ghost (Publisher or self-hosted)
Want full ownership of code, data and server Ghost self-hosted
Want to stay on Substack but need your data out Substack plus exports and a read-only API

Questions people ask

Does Ghost take a cut of subscriptions?
No. Ghost's pricing page lists a 0% transaction fee on Publisher, Business and Custom plans: "Process payments for your premium subscriptions without any additional transaction fees from Ghost." Payment processor fees still apply. Substack keeps 10%.
Which Ghost plan has the Admin API and webhooks?
On Ghost(Pro), the Content API is on every plan, while the Admin API, webhooks, custom integrations and Zapier start on Publisher ($29 a month, billed yearly). Starter ($18) has none of those and no paid subscriptions. Self-hosted Ghost has no plan gating.
Can I keep my paid subscribers if I move from Substack to Ghost?
Yes. Ghost's Substack migrator imports paid subscriber CSVs once you connect the same Stripe account Substack used. Ghost notes that Substack will keep taking 10% on existing subscriptions until you ask it to remove the fee.
Can I move from Ghost to Substack?
Yes. Substack's guide imports Ghost members from a CSV, posts from your Ghost URL, and paid members by connecting your Ghost Stripe account and revoking Ghost's access first so no one is double charged.

Sources

  1. Substack Help: How much does Substack cost? (accessed 2026-10-22)
  2. Substack Help: How do I export my posts? (accessed 2026-10-22)
  3. Substack Help: How do I set up my custom domain on Substack? (accessed 2026-10-22)
  4. Substack Help: How do I move from Ghost to Substack? (accessed 2026-10-22)
  5. Substack Help: How to connect Substack to your AI Assistant (accessed 2026-10-22)
  6. Ghost(Pro) pricing (accessed 2026-10-22)
  7. Ghost Admin API docs (accessed 2026-10-22)
  8. Ghost webhooks docs (accessed 2026-10-22)
  9. Ghost docs: Migrating from Substack (accessed 2026-10-22)
  10. Ghost Help: Exports (accessed 2026-10-22)
  11. TryGhost/Ghost on GitHub (MIT license) (accessed 2026-10-22)
  12. dkships/substack-publisher-mcp (Publisher API wrapper) (accessed 2026-10-22)
  13. Brad Hargreaves on LinkedIn: leaving Substack (accessed 2026-10-21)