Skip to main content
SiteShi p

How-to guides

Gate content

What you'll get

Content on your site that requires a login (free or paid) to view. Members sign up with email (magic link, no password). Paid tiers integrate with Stripe — visitors see a checkout, sign up, get access. Access control is enforced server-side — gated pages aren't fetchable without a valid session, not just hidden in HTML.

In the hosted builder

Add a "Pro members only" tier for $10/month. Gate the /pro pages — anyone without a Pro subscription should see a paywall.

You'll connect Stripe (one-time OAuth) if you haven't already. The builder creates the Pro tier, sets up /pro/* as gated, generates the paywall page, and wires the Stripe checkout. Test it from an incognito tab — you'll see the paywall.

For a free members-only area:

Make /downloads only accessible to logged-in members. No paid tier needed.

Result

  • Visitors hitting a gated page without a session land on a sign-in / upgrade screen.
  • Sign-in is magic-link by default — visitor enters email, gets a link, clicks it, they're in.
  • Paid tiers get a Stripe Checkout flow before the magic-link.
  • Once a member has access, the gated page renders normally.
  • Logged-in state persists across pages on your site.
  • Your dashboard shows member list, plan, signup date, and lifetime value.

What "server-side enforcement" means

Anyone can View Source on a public site and read everything in the HTML. SiteShip's gated pages aren't rendered at all for non-members — the request hits the worker, the worker checks the session cookie, and if it's not a valid member it returns the paywall page instead. The gated content never leaves the server. This is why a "JS overlay that hides content" doesn't count as gating — it's still in the HTML.

Under the hood

Membership reference — tier definitions, magic-link flow, Stripe wiring, member dashboard, custom claims, member-only data fetched at render time, paywall customization.

Found something out of date? Open an issue. ← All docs