Stripe Checkout Integration with Framergenie
Framergenie makes it simple to accept payments in your Framer projects by connecting your Stripe Products with Supabase. Use our Checkout Button Component to trigger Stripe Checkout, then automatically update your Supabase user tier via webhooks to control access using variants.

Framergenie’s Stripe Checkout Button is fully integrated with Supabase. It tracks authenticated users securely and automatically upgrades their access level after a successful purchase.
Why Authentication Matters
The Stripe Checkout Button is only shown to logged-in users. This ensures:
The user’s Supabase Auth ID is injected into the Stripe Checkout session
That same ID is used as the
client_reference
in Stripe metadataYou can confidently upgrade the correct user in your Supabase
users
table after purchase
How the Flow Works
Step | What Happens |
---|---|
1 | A logged-in user clicks the Checkout Button |
2 | Framergenie adds the user’s Supabase Auth ID into the Stripe session as |
3 | On successful payment, Stripe sends a webhook with that |
4 | Your system uses the ID to upgrade the user's tier in Supabase |
What You’ll Need
A Stripe account
A Supabase project
Framergenie Stripe Checkout Button component
A
tier
column in your Supabaseusers
table (e.g.free
,basic
,pro
)
Setup Overview
Step | Task |
---|---|
1 | Create a Product and Price in your Stripe Dashboard |
2 | Copy the Product ID, Price ID, and Stripe Publishable Key |
3 | Paste them into the Framergenie Checkout Button component |
4 | Ensure the user is authenticated before showing the button |
5 | Configure a Stripe webhook to trigger after checkout |
6 | Use Supabase Functions, Make.com, Zapier, or Pipedream to update |
Configure Supabase User Table
Your users
table must include a tier
column to track the user’s access level.
Recommended values:free
basic
pro
Setting Up a Stripe Webhook
After a successful checkout, Stripe should notify Supabase to update the user’s tier.
In Stripe:
Go to Developers → Webhooks
Add this endpoint:
https://<your-supabase-project>.functions.supabase.co/stripe-webhook
Listen for the following events:
checkout.session.completed
customer.subscription.updated
invoice.payment_succeeded
In your Supabase Function (
stripe-webhook
), update the correct user record based on the metadata.
Pro Tip:
When creating the Checkout Session, add metadata like:customer_reference: user.id
and product_id: xyz
How to Use the Tier Switcher Component
Drop in the Tier Switcher from Framergenie
Set which variant (Free, Basic, Pro) should show specific content
The component reads the current user's
tier
from SupabaseInstantly displays the correct version of your UI
✅ Summary
Task | Description |
---|---|
Stripe Product | Create and copy |
Supabase Setup | Add |
Framergenie | Paste Stripe details into the Checkout Button |
Supabase Function | On Stripe webhook, update the user’s tier |
UI in Framer | Use Tier Switcher to show/hide content per plan |
Optional: Use No-Code Automation Tools
You can use no-code tools to handle tier updates without writing any Supabase Functions yourself.
Tool | Use Case |
---|---|
Make.com | Trigger a scenario when Stripe checkout completes and call the Supabase API to update |
Zapier | Use prebuilt Stripe → Supabase workflows to sync user tiers |
Pipedream | Write logic to handle webhooks and update Supabase with REST |
Best Practices
Use
useSession()
in Framer to get the current Supabase Auth user IDNever show the Stripe button to guests or logged-out users
Always include a
client_reference_id
(user ID) in your Stripe session metadataAutomate tier updates using Supabase Functions or no-code tools like Make.com, Zapier, or Pipedream!
Example: Stripe checkout.session.completed
Webhook Payload
Below is a real-world example of the webhook payload Stripe sends when a checkout session is completed. You can use this to map and extract user metadata (like Supabase Auth ID from client_reference_id
) to upgrade user tiers.
Key Fields
Field | Description |
---|---|
| Use this to track the Supabase |
| Should be |
| Email of the customer |
| Charged amount in cents (e.g., 9900 = $99.00) |