05
Module 05 · Stripe + Netlify Functions + Ghost

The Transaction

Ghost handles subscriptions natively. Everything else — course purchases, digital downloads, visual assets, module bundles — runs through a custom Netlify + Stripe layer. Every dollar on your domain. Nothing between you and your buyer.

Sprint Days
Days 05 — 06
Tools
Stripe · Netlify · GitHub · Ghost
Est. Build Time
5 — 6 Hours
Scroll
01
Chapter 01

Ghost's One Hard Wall

Ghost Pro is the right choice for this ecosystem — but it has one limitation worth naming clearly before we build around it. Ghost handles recurring subscriptions and membership tiers natively and beautifully. What it cannot do is sell a one-time product. No course purchases. No digital download with a single payment. No module bundles at à la carte pricing. That transaction type simply does not exist inside Ghost's native commerce layer.

For most creator businesses, the workaround is to route those purchases through a third-party marketplace. That route costs revenue share, hands over customer data, and puts your buyers on someone else's domain for the most important moment in the relationship: the moment they pay you. We're not doing that.

Instead, we bridge Ghost's gap with a custom Netlify Functions layer connected directly to Stripe. The buyer clicks a purchase button on your Ghost site, a Netlify serverless function opens a Stripe checkout session, payment clears, Stripe fires a webhook, and Lindy's Operator grants Ghost access automatically. The entire transaction stays inside your infrastructure. The customer never knows there's a seam. The code lives in GitHub — version controlled, documented, and maintainable long after the sprint ends.

The goal isn't to eliminate complexity — it's to own it. A custom Netlify + Stripe layer gives full control over every transaction type without surrendering a single customer relationship to a third-party marketplace.

Cyber Blueprint · Commerce Architecture Principle
02
Chapter 02

The Three Tools

Commerce Layer 01
Stripe
Payments · Subscriptions · Webhooks · Tax · Revenue Intelligence

Stripe is the payment infrastructure underneath everything. It handles card processing, recurring subscription billing, one-time checkout sessions, tax calculation, failed payment recovery, and instant payouts. Every dollar that moves through this ecosystem moves through Stripe first.

Ghost connects to Stripe natively for subscription billing. Netlify Functions call the Stripe API to create checkout sessions for one-time purchases. Stripe fires webhooks to both the Netlify webhook handler and Lindy's Operator on every payment event. The customer experience is seamless regardless of which path their transaction takes.

Commerce Layer 02 · The Bridge
Netlify Functions
Serverless Bridge · Stripe Checkout Sessions · Ghost API Access Grants

Netlify Functions are lightweight serverless JavaScript functions deployed from your GitHub repository to your Netlify infrastructure. Two functions power the entire one-time commerce layer.

The first — create-checkout-session — fires when a buyer clicks a purchase button on Ghost. It receives the product ID, creates a Stripe checkout session, and redirects the customer to a secure Stripe-hosted page. The second — stripe-webhook-handler — receives Stripe's payment confirmation, verifies the signature, and calls the Ghost Admin API to grant the correct membership tier or deliver the purchased content. Both functions are committed to GitHub before this module closes. If the code only lives in Netlify's dashboard, it doesn't exist.

Commerce Layer 03 — Already Built
Ghost Pro + GitHub
Subscription Billing · Content Gating · Access Delivery · Version Control

Ghost handles recurring subscription billing natively through its Stripe integration — no Netlify Functions required for that path. For one-time purchases, Ghost serves as the content delivery and access layer — the Netlify webhook function grants the correct membership tier via the Ghost Admin API after Stripe confirms payment.

GitHub is the connective tissue. Every Netlify Function, every environment variable, every product ID mapping lives in the sprint repository. The entire commerce architecture is reproducible from GitHub alone — no tribal knowledge, no phone calls to the consultant required.

03
Chapter 03

Everything You Can Sell

The Full Product Catalog

Organized by transaction type and which part of the architecture handles it. The consultant needs to know this before writing a single line of code.

Ghost Native — Recurring Subscriptions
Core Member — Monthly
Full content archive, premium newsletter, Causeway Nova releases. Billed monthly via Ghost's native Stripe integration. No Netlify Functions required.
Core Member — Annual
Same access at a discounted annual rate. Ghost handles upgrade, downgrade, and renewal automatically through Stripe.
Netlify + Stripe — One-Time Purchases
The Creative Companion — Full Course
Single payment. Complete access to all modules, The Navigator agent, and future course updates. Netlify Function grants Ghost tier on Stripe confirmation.
Creative Companion — Individual Modules
À la carte module access. Separate Stripe product per module. Separate Ghost tier per access grant. Buyers can complete the full course incrementally.
Methodology Frameworks & Toolkits
Standalone digital downloads — CreativeOps frameworks, reference documents, system templates. One purchase delivers gated Ghost content access automatically.
Visual Assets & Design Resources
Branded visual assets, Vonn Seacoast design resources, and ecosystem-specific creative tools. Same Netlify + Stripe pipeline. Same automated delivery. Same owned experience.
04
Chapter 04

The Full Automated Flow

Click to Content — Under Five Seconds

From the moment a buyer clicks to the moment they're inside the content. Zero manual steps. Entirely owned infrastructure.

01
Buyer clicks purchase on Ghost page
Button triggers the Netlify create-checkout-session Function with the product ID passed as a parameter.
02
Netlify Function — create-checkout-session
Calls Stripe API with product details. Returns a secure checkout URL. Buyer is redirected to Stripe-hosted payment page.
03
Stripe processes payment
Card authorized. Funds captured. payment_intent.succeeded webhook fired immediately to two endpoints — Netlify and Lindy.
04
Netlify Function — stripe-webhook-handler
Receives Stripe webhook. Verifies signature. Identifies product. Calls Ghost Admin API to assign the correct membership tier.
05
Ghost — Access granted
Membership tier updated. Content unlocked. Buyer lands on the post-purchase confirmation page on your domain.
06
Lindy Operator — Onboarding fires
Listens to Stripe in parallel. Triggers the appropriate welcome sequence, course onboarding, or asset delivery email.
07
Wave — Transaction logged
Stripe event auto-categorized. Revenue recorded. Tax amount noted. No manual accounting entry required.
08
Buyer is inside the content
Under five seconds. Zero manual intervention. Every line of code that made it happen lives in GitHub.
2
Netlify Functions power the entire one-time commerce layer
<5s
From payment confirmed to content access granted
0
Marketplace platforms between you and your buyer
100%
Of Function code version-controlled in GitHub
05
Chapter 05

Build Checklist

[ ]
Create Stripe account under Cyber Coastlines LLC
Business entity, bank account, and identity verification complete. Test and live API keys stored in GitHub secrets — never in plain text in any file.
[ ]
Connect Ghost Pro to Stripe — subscription layer
Native Ghost-Stripe integration configured. Core Member monthly and annual tiers live. Test subscription confirmed billing and cancelling correctly.
[ ]
Create all Stripe products and prices
Full course, individual modules, methodology frameworks, visual assets. Every product ID documented in GitHub. Naming consistent across all products.
[ ]
Write and deploy create-checkout-session Netlify Function
Receives product ID, creates Stripe session, returns redirect URL. Tested with every product type. Committed to GitHub before deployment to Netlify.
[ ]
Write and deploy stripe-webhook-handler Netlify Function
Receives webhook, verifies Stripe signature, calls Ghost Admin API to grant correct membership tier. Tested with simulated events for every product type. Committed to GitHub.
[ ]
Register webhook endpoint with Stripe
Netlify Function URL registered in Stripe dashboard. payment_intent.succeeded, subscription events, and refunds all wired and confirmed firing correctly.
[ ]
Embed purchase buttons in Ghost pages
Each product has a dedicated buy button calling the checkout Function. All tested. Post-payment redirect confirmed landing on the correct Ghost page.
[ ]
Connect Stripe webhooks to Lindy Operator
Welcome sequences, onboarding flows, and asset delivery emails firing automatically for every purchase type.
[ ]
Connect Stripe to Wave accounting
All transaction types flowing correctly into Wave. Revenue and fee split confirmed accurate for each product type.
[ ]
Run end-to-end test — every product type in test mode
Subscription, full course, individual module, framework, visual asset — full automated chain confirmed for all five product types.
[ ]
Switch to live mode — real transaction for every product type
Real card. Real money. Every path tested live before Module 05 closes. All Netlify Function code committed to GitHub. No exceptions.
Before Leaving This Module
Code in GitHub. Money in Live Mode.

Two non-negotiables before Module 05 closes. First — every Netlify Function is committed to GitHub. If it only lives in Netlify's dashboard it cannot be recovered, versioned, or handed off. Second — at least one real transaction per product type has cleared in live mode. Test mode confirms the plumbing works. Live mode confirms the business works. Both conditions must be true before we move to Module 06.

End of Module 05
The Register Is Open.

Module 06 builds the staff — Lindy and the full E-Suite automation layer come online, and the ecosystem starts running without you in the loop.