--- title: "A paid newsletter with card subscriptions, built by Claude Code on Elements" author: "@chris" author_url: https://elements.dev/u/@chris published: 2026-09-30T22:01:08.798Z url: https://elements.dev/demos/a-paid-newsletter-with-card-subscriptions-built-by-claude-8l3w567l kind: post format: article --- # A paid newsletter with card subscriptions, built by Claude Code on Elements by [@chris](https://elements.dev/u/@chris) ยท 2026-09-30 ## Description Free or $8 a month subscriptions by card, a teaser on paid posts, and markdown posts the writer schedules and emails. Letterhearth needed free and paid subscriptions billed monthly by card, scheduled posts that go out by email, a teaser for readers who are not paying, one-click unsubscribe, and live counts for the writer. Each of those is a part of Elements, so the agent spent its 22 minutes on the newsletter itself. - **Live counts and revenue.** Subscribers are a LiveTable, so the writer's free and paid counts and monthly revenue move the moment a reader subscribes or upgrades. - **Monthly subscriptions.** Subscribing, upgrading and cancelling are `@rpc` calls, and paid plans go through Stripe at $8 a month. The return page and Stripe's webhook record a new subscription once. Until a Stripe key is added, a built-in test checkout takes the payment through the same code, and in production the app registers its own webhook. - **Posts on a schedule.** A cron schedule checks every minute for posts whose time has come and queues one email job per reader, so a failed send retries alone. Paid posts go in full to paid readers and as a teaser to everyone else. - **One-click unsubscribe.** Every email carries the headers mail clients turn into an unsubscribe button, and the app answers that button directly. - **Data from SQL files.** Migrations define the newsletter and seed the writer, six posts (three paid), five free readers and three on complimentary paid plans. - **Sessions for readers and the writer.** Readers are signed in when they subscribe and later by an emailed link, and every writer page shares one guard on the writer's role.