WisyLink Blog

Membership siteSubscriptionsStripePaywallCreators

How to Build a Membership Site With AI and Stripe

Build a membership site with AI and Stripe: tiers, member logins, gated pages, webhook-confirmed subscriptions, failed payments and member admin.

12 min read
How to Build a Membership Site With AI and Stripe

A membership site is a website where paying members unlock content or features behind a login. To build one with AI, describe your tiers, prices and what each tier sees. The builder creates sign-up and login, gated pages, Stripe subscription checkout confirmed by webhooks and an admin area. Payments start once you add your Stripe keys.

  • Decide tiers, prices and exactly what each tier unlocks before you prompt. The access rules are the core of the build.
  • Members sign up with the site's own accounts, and access is checked on the server, so locked content never reaches a non-member's browser.
  • Subscriptions run on your own Stripe account. Payment is confirmed by a verified webhook, never by the success page, and the status is stored on each member's record.
  • Host video on a video platform and embed it. Uploads are capped at 25 MB per file and count toward your storage.
  • Plan for failed payments and cancellations from day one; Stripe's events tell the site when to warn, retry or remove access.
  • A membership must stay online, so run it on a paid WisyLink plan. The free plan is for building and testing the first version.

What a membership site needs

Memberships are often assembled from five tools: a site builder, a membership add-on, a payment processor, an email service and a community app. Each one has its own login, its own fees and its own idea of who is a member. Built as one app, the parts are:

Public pages
A sales page, pricing and teasers of the content. These are what search engines and new visitors see.
Accounts
Sign-up, login, password reset and a member account page.
Access rules
Which tier sees which pages, downloads and features, checked on every request.
Billing
Checkout, renewals, plan changes, cancellations and failed payments, through your payment provider.
Content
Articles or lessons, downloads, embedded video and, optionally, comments or chat.
Admin
A member list with plan and status, manual access grants and a content editor.

WisyLink builds all of these as one app from your description, on its own address with HTTPS. The trade-off is ownership: the access logic is your app's logic, so you test it as carefully as you'd test a checkout.

Choose your model: tiers, monthly vs annual, trials

Keep it to three tiers or fewer; every extra tier is another column in your access rules and another decision for a visitor on the pricing page.

  • Free and paid. A free tier with an account and a few lessons works as a lead magnet; paid tiers unlock the rest. Free members are still accounts you store and protect, and they count toward your database.
  • Paid only. Simpler to run and explain. Good when your audience already knows you.
  • Two paid tiers. Content in the lower tier, access to you in the upper one: live Q&A, feedback, a members' chat.

Can you charge monthly and yearly prices? Yes. In Stripe each tier simply gets two prices, one billed monthly and one yearly, and the site stores which one each member chose. Monthly suits a steady stream of new content; yearly suits a library people work through at their own pace, and a discount for paying upfront improves your cash flow and keeps members for a full year.

Stripe also supports free and discounted trials. If you offer one, decide whether members must enter a card to start it, and what happens at the end. Stripe sends a trial-ending event, three days before by default, which the site can use to send a reminder.

Build it: steps and a prompt template

  1. Write a one-page access matrix: tiers down the side, content and features across the top, a tick where access is allowed.
  2. Open a new WisyLink chat and paste the prompt below, edited with your tiers, prices and content.
  3. When the build finishes, read its final note. It says how to reach the admin area and which Integrations to fill: typically your Stripe keys and webhook signing secret, plus SMTP for emails. Payments and emails stay inactive until you do. Never paste keys into the chat.
  4. Enter your Stripe test-mode keys first. Integrations shows step-by-step setup instructions, including the webhook address to register in Stripe.
  5. Run the whole journey with Stripe's test cards: sign up, subscribe, open a locked lesson, switch plans, cancel, and simulate a declined renewal.
  6. Swap in your live keys, buy your own cheapest tier with a real card, then refund it.
  7. Move to a paid WisyLink plan before you invite members. Free links last 30 days plus a week marked for deletion, member accounts included.

Build a membership site called The Sourdough School for my online baking courses.

Public: a homepage that sells the membership, a pricing page, and a lesson library where everyone sees each lesson's title and a two-paragraph teaser.

Tiers: Free (account only, first 3 lessons), Baker ($12/month or $120/year: all lessons and PDF recipe cards), Pro Baker ($29/month or $290/year: everything in Baker plus monthly live Q&A pages and a members' chat).

Accounts: email and password sign-up, login, password reset by email, and an account page showing plan, status, renewal date and a "Manage subscription" button that opens the Stripe customer portal.

Payments: Stripe Checkout for subscriptions, confirmed only by a verified Stripe webhook. Store plan, status and current period end on the member. If a payment fails, show a banner asking the member to update their card; remove paid access when the subscription is canceled or unpaid.

Content: lessons are saved records with title, slug, tier, teaser, body and an optional embedded video URL. Recipe cards are private PDF downloads for Baker and above.

Admin: a login-protected area to add and edit lessons, see members by plan and status, and grant free access with an end date.

Email: welcome and payment-failed emails through my SMTP account. Design: warm, editorial, easy to read on phones.

On the free Community plan, one build fills the 5-hour usage window and builds aim for a working first version. A membership is a large app, so build it in stages: accounts, tiers and gated lessons first; payments second; chat and extras last. Paid plans allow fuller builds and shorter waits between them. See AI website builder prompt templates for structuring bigger requests.

Accounts, roles and gated pages

WisyLink sites run their own accounts. Passwords are stored hashed, sessions live in a secure cookie, and roles such as member and admin are part of your app. There's no shared platform login for your visitors; your members belong to your site. Social sign-in with Google or similar providers is possible with your own OAuth credentials under Integrations. Single sign-on for companies isn't something to plan on.

Gating is decided on the server for every request. A non-member opening a Baker lesson gets the teaser and an upgrade prompt; the full text is never in the page they receive. That matters: paywalls that only hide content with styling leave it in the page source for anyone to read. Member pages are also marked so they're never served from a shared cache to someone else.

Two practical notes. First, the admin login: the build's final note tells you how to get in, either with credentials it created or by making the first account registered the admin. In the second case, register yours before you share the link. Second, search engines see what a logged-out visitor sees, so write teasers that stand on their own and are worth ranking.

If each customer should see only their own documents, invoices or project files, rather than a shared library, you're building a portal instead; see how to build a client portal without code.

Stripe subscriptions: webhooks, cancellations, failed payments

Subscriptions run on your own Stripe account; WisyLink never holds your money or your Stripe account. The flow the build sets up:

  1. A member picks a plan. The site records the attempt with the member's ID and opens Stripe Checkout.
  2. Stripe takes the payment on its own hosted page.
  3. Stripe sends a webhook to your site. The site verifies its signature with your signing secret, finds the member and stores the plan, status and renewal date.
  4. Pages check that stored status. The success page a member lands on after paying proves nothing by itself, because anyone can open that URL.

Stripe's guide to subscription webhooks describes the events to handle. The ones that matter most:

Stripe subscription events and what the site should do
EventWhat happenedWhat the site does
invoice.paidA first payment or renewal succeededExtends access once the subscription is active
invoice.payment_failedA payment was declinedEmails the member and shows an "update your card" banner
customer.subscription.updatedPlan change, renewal or a status change such as past dueUpdates the stored plan and status
customer.subscription.deletedThe subscription endedRemoves paid access and keeps the free account
customer.subscription.trial_will_endA trial ends soonSends a reminder

Cancellations and plan changes. Can members cancel or change plans themselves? Yes: ask for a "Manage subscription" button that opens Stripe's customer portal. It's a Stripe-hosted page you switch on in your Stripe Dashboard, where customers update cards, switch plans, view invoices and cancel, immediately or at the end of the period. Changes there come back to your site as the events above.

Failed payments. When a renewal fails, the subscription becomes past due and Stripe can retry; enable Smart Retries in your Stripe settings. Decide your grace policy in advance. A common policy is to keep access during the retry period with a visible warning, and remove it when Stripe marks the subscription canceled or unpaid, as Stripe's guide recommends.

Refunds and disputes. Decide whether a refund ends access immediately and whether a dispute freezes the account. If you change your domain later, check that the webhook address registered in Stripe still reaches the site.

Selling one-off products alongside memberships works the same way, with one-time Checkout payments; see the online store guide.

Delivering content: articles, downloads and video

Where to host each kind of member content
Content typeWhere to host itWhy
Articles and lessonsSaved records in the site's databaseEach gets its own page and appears without a rebuild; a record holds up to 256 KB, plenty for long text
PDFs, worksheets, templatesPrivate files in the site's storageOpened through short-lived links only for members whose tier allows it; up to 25 MB per file, and each download counts toward bandwidth
Images inside lessonsPublic files, or images you attach to the buildFast to serve, and reading public files doesn't count toward bandwidth; anyone with the image URL can view it
Video coursesA video host that supports private or domain-restricted embeds, embedded in the lesson pageThe 25 MB file cap makes video uploads impractical, and video hosts handle streaming quality on every device
Audio and podcastsA podcast host for public episodes; private files for short member-only clipsSame file cap and bandwidth logic as video
Live sessionsA meeting link shown only on the right tier's pageThe link is part of the gated page, so only that tier sees it

Storage, database and bandwidth caps depend on your WisyLink plan, and the Resources panel shows how full each one is. Accounts that stay over capacity risk having links suspended, so keep heavy media on the platforms built for it.

Community features: comments and live chat

Community is often why people stay subscribed after they've consumed the content.

  • Comments on lessons are saved records tied to the member who wrote them. Ask for posting to be limited to members, a per-member rate limit, and hide and delete buttons for you.
  • Live chat uses realtime channels. Private channels require a signed-in member, and the site only grants chat access to tiers that include it. Live messages are momentary, so ask for each message to be saved too, which gives members a scrollback.
  • Threads work like a small forum: topics, replies and member profiles. "Community forum" is one of WisyLink's listed use cases.
  • Notifications of replies go by email through your SMTP account.

Decide who moderates before you open the doors. A report button feeding an admin queue costs one sentence in your prompt and saves hours later.

Running it: member admin, emails, churn and privacy

  • Member admin. Filter members by plan and status, and look someone up by their exact email; there's no free-text search across large member lists. Ask for manual grants with an end date, for scholarships, partners or goodwill gestures.
  • Emails. Welcome, password reset and payment-failed emails go through your SMTP account. Stripe can send receipts and invoices itself, so don't duplicate them.
  • Churn. The Stripe portal can collect cancellation reasons and offer a coupon to people about to cancel. On your side, store each member's last login, list the members who haven't been back in 30 days, and reach out before they cancel. A background job, which runs every 30 to 60 minutes, can email you a weekly summary.
  • Privacy. You're collecting names, emails and payment status, so publish a privacy notice. Running the membership someone paid for and sending marketing emails rest on different legal grounds; the European Commission's overview of legal grounds explains contract and consent. Ask for a separate, unticked box for newsletters and a way for members to delete their account. This is general guidance, not legal advice.
  • Costs. Budget for your WisyLink plan, Stripe's fees, a video host and any email service, and compare them with what you'd pay a developer; see how much it costs to build a web app.

To grow the free tier, pair the membership with a lead magnet; a quiz that collects emails works well for courses.

Write your access matrix, then describe your tiers, prices and content in one message. WisyLink builds the accounts, gated pages, Stripe subscription flow and admin area as one hosted app, and you keep refining it by chat. Test the whole journey in Stripe's test mode before a single member pays.

Start free on the Community plan, no card required, and build your first version. Before you invite members, compare the paid plans: they keep the site live while you're subscribed and allow fuller builds, and your own domain works on any plan.

F.A.Q.

Frequently asked questions

Can I charge monthly and yearly prices?
Yes. Create a monthly and a yearly price for each tier in Stripe and list both on your pricing page. If you allow plan switching in the Stripe customer portal, members can move between monthly and yearly themselves. Show the yearly price as a monthly equivalent next to the real yearly total, so nobody feels surprised by the charge on their statement.
Can members cancel or change plans themselves?
Yes, through Stripe's customer portal. Ask for a Manage subscription button on the account page; it opens a Stripe-hosted page where members cancel, switch plans, update cards and download invoices. You configure what's allowed in your Stripe Dashboard, for example cancel at period end only. WisyLink doesn't provide its own billing portal, so the portal and its settings live in your Stripe account.
Where should I host my videos?
On a video platform that supports private or domain-restricted embedding, then embed each video in its lesson page. Site uploads are capped at 25 MB per file, which rules out most course videos, and streaming platforms adjust quality to each viewer's connection. Store the embed URL on the lesson record, so changing a video never needs a rebuild of the site.
Can I offer a free trial?
Yes. Stripe supports free and paid trials on subscriptions, and the site treats a trialing member like an active one. Decide whether a card is required up front: requiring one filters out casual sign-ups, while skipping it lowers the barrier but means more trials end without paying. Ask the build to email a reminder when Stripe signals that a trial is ending, and test the end-of-trial path in Stripe's test mode.
What happens when a payment fails?
Stripe sends an invoice.payment_failed event and the subscription becomes past due. The site emails the member, shows a banner with a link to update their card, and keeps or limits access according to the grace policy you chose. Stripe can retry the charge automatically. If every retry fails, the subscription becomes canceled or unpaid, or stays past due, depending on your Stripe settings, and the site removes paid access.
Can members talk to each other?
Yes. Ask for comments under lessons, discussion threads or a live members' chat. Chat uses realtime channels that only signed-in members of the right tier can join, and each message is also saved so history loads when someone arrives. Plan moderation from the start: a report button, a moderation queue and the ability to mute or remove a member.
Share