SupabaseSaaS Churn

How to Measure SaaS Churn in Supabase — Without Writing SQL

You shipped your SaaS on Supabase because it let you move fast — auth, database, and APIs in one place. But now the growth questions are piling up, and the answers are split between auth.users, your public subscriptions tables, and whatever Stripe writes back via webhooks. The Supabase dashboard shows you row counts, not churn rates, and the SQL editor still expects you to write the SQL. These five questions get you churn answers by asking in plain English instead.

Question 1

What is our monthly churn rate for the last 6 months?

The one metric that decides whether your growth is real. In a Supabase project this usually means joining auth.users (where signups live) with a public.subscriptions table (where cancellations live) — two schemas that the dashboard never shows you side by side. Asking in plain English collapses that join into one answer.

You get: A month-by-month table of churn rate with active users at the start of each month and cancellations.

Ask this free
Question 2

Which users canceled in the last 30 days, and what plan were they on?

Recent churners are the people you can still win back with a well-timed email. Pulling their emails from auth.users alongside plan data from your public schema gives you an actionable list rather than a number — something you'd otherwise stitch together manually across two Supabase tables.

You get: A list of churned users with email, plan, cancellation date, and how long they were customers.

Ask this free
Question 3

Which paying users have not signed in for more than 21 days?

Supabase auth conveniently tracks last_sign_in_at on every user, which makes silent disengagement measurable without any extra instrumentation. Paying users who stopped logging in are churn that just hasn't been invoiced yet — catch them before the renewal fails.

You get: A table of paying users ranked by days since last sign-in, with plan and account value.

Ask this free
Question 4

How does churn compare between users who signed up with Google versus email and password?

Supabase records the auth provider on every account, so this segmentation is free data most teams never look at. If one signup method churns dramatically more, you may be attracting a different quality of user through that door — useful for deciding where to spend acquisition effort.

You get: A comparison of churn rate by auth provider with user counts per segment.

Ask this free
Question 5

What percentage of users churn within the first 30 days of subscribing?

Early churn is an onboarding problem, not a pricing problem. If a big slice of cancellations happen in month one, the fix lives in your first-session experience, not your retention emails. This question separates the two failure modes cleanly.

You get: A percentage of first-30-day churn plus a breakdown of when in the first month users cancel.

Ask this free

Stop reading. Ask.

Connect Supabase or start with sample data — first answers in under 2 minutes.

Ask this on your data — free

Free plan available · No credit card required

Frequently asked questions

Can it read auth.users, or only my public schema?

It can query any schema your connection credentials can see, including auth.users. Connect with a role that has read access to both the auth and public schemas and you can join signups, sign-ins, and subscriptions in a single question.

Will Row Level Security (RLS) block these queries?

RLS applies per role. If you connect with a role that RLS restricts, you will only see permitted rows — which can silently skew churn numbers. For analytics, connect with a read-only role that bypasses or is exempted from RLS so counts reflect the whole customer base.

Is connecting my production Supabase database safe?

Yes — access is read-only by default, so no writes ever hit your project. Supabase also makes it easy to create a dedicated read-only role in the SQL editor, or you can point the connection at a read replica if you run one.