The revenue cut adds up fast
A newsletter's revenue is only as good as what is left after the platform takes its share. Substack's cut comes out of every paid subscription — every month, forever, regardless of what they do or don't build — on top of Stripe's own processing cost, and it grows with every subscriber you add. VeloCMS charges $29/month on the Business plan — flat, with no per-subscriber fees up to 50,000 subscribers and no revenue cut. The math is unambiguous once your list is large enough to matter.
Your subscribers live in your database, not theirs
This is the deeper issue. On Substack, your subscriber list lives in Substack's database. Substack does connect your own Stripe account to collect paid subscriptions — it's not a pooled Substack-owned account — but Substack keeps a share of every charge that runs through it, on top of Stripe's own processing fee. You can export subscriber email addresses as a CSV, but an active Stripe subscription can't be handed to a different platform — that's true of Stripe subscriptions everywhere, not a Substack-only limitation. In practice, paid subscribers need to set up billing again wherever you move to. VeloCMS connects your own Stripe account from day one with zero platform fee, so a reader who subscribes on your VeloCMS site is already your subscriber, on your Stripe — there's no revenue cut and no in-between platform to migrate away from later.
Custom domain and SEO that you actually control
A Substack blog lives at yourname.substack.com by default. A custom domain is a paid add-on on Substack — until you set it up, every post link and social share preview points at substack.com, not you. VeloCMS includes a custom domain on Pro and above, no extra fee, so your blog looks like your own publication from the first post.