If you run marketing or growth for a SaaS, e-commerce, or subscription business—and you’re tired of flying blind after splashy campaigns—cohort analysis is your friend. But honestly, most analytics tools make it harder than it should be. If you’re using Metabase, you can get straight to the point: “Are my efforts actually getting people to stick around and spend?”
This guide cuts through the noise and shows you, step by step, how to do real cohort analysis in Metabase—no vague metrics, no fancy dashboards that don’t mean anything, just clear answers you can act on.
What is cohort analysis, and why should marketers care?
Let’s get on the same page: cohort analysis is about tracking groups of users (cohorts) who share something in common—like when they signed up, made their first purchase, or hit a key milestone. Instead of blending everyone together, you compare how different cohorts behave over time.
Why does it matter? Because averages lie. If you only look at your overall conversion or retention rates, you can’t tell if your new campaign brought in better users, or if last month’s promo attracted a bunch of tire-kickers. Cohort analysis helps you see the real effect of your marketing moves.
In plain English: If you want to know, “Did our May campaign actually bring us stickier customers than April?”—cohort analysis is the answer.
Step 1: Figure out what you actually want to learn
Before you even open Metabase, get clear on your question. Otherwise, you’ll end up with a fancy chart that doesn’t help you do anything.
Examples of good cohort analysis questions: - Are users who joined after our new onboarding email more likely to make a second purchase? - Do customers from our Black Friday campaign stick around longer than those from paid ads? - Does retention improve for users who hit a key milestone in their first week?
If you can’t name the action you’ll take based on the answer, rework your question.
Pro tip: Don’t obsess over the perfect cohort definition at first; you can always refine as you go.
Step 2: Make sure your data is ready
Metabase is great, but it can’t magic up data you don’t have. For cohort analysis, you usually need: - A user table with a unique user ID and a signup date (or purchase date, or whatever event you care about) - The events or actions you want to measure (logins, purchases, upgrades, etc.) with timestamps linked to those users
If your data is split across tables, make sure they can be joined by user ID or email.
Common data headaches: - Dates stored as strings instead of dates (Metabase will choke on these—fix them first) - Duplicate users or missing IDs (clean them up, or your numbers will be garbage) - Event tracking that only started last week (don’t expect magic insights from one week of data)
If you’re not sure, try running a simple query to count users by signup month. If that works, you’re probably good to go.
Step 3: Build your cohort query in Metabase
Here’s where most folks get stuck. Metabase has some built-in cohort charting, but you’ll get more control—and more useful answers—by building your own.
Option A: Use Metabase’s built-in cohort visualization (quick and dirty)
- Go to "Ask a question" > "Custom question"
- Pick your user or events table
- Click “Visualization” and select “Cohort”
- Set “Group by” to your cohort dimension (e.g., signup month)
- Set the metric (e.g., count of users who made a purchase)
- Choose the time interval (week, month, etc.)
What works: Fast, visual, and fine for high-level retention curves.
What doesn’t: Limited flexibility. You can’t do much beyond basic retention or repeat actions.
Option B: Write a SQL query for custom cohorts (more power, more work)
If you want to analyze, say, “users who made their first purchase in March and their upgrade rates over six months,” you’ll need SQL.
Example: Retention by signup month
sql SELECT date_trunc('month', users.signup_date) AS cohort, date_trunc('month', events.event_time) AS event_month, COUNT(DISTINCT users.id) AS users_retained FROM users LEFT JOIN events ON users.id = events.user_id AND events.event_name = 'login' AND events.event_time >= users.signup_date AND events.event_time < users.signup_date + interval '6 months' WHERE users.signup_date >= '2023-01-01' GROUP BY cohort, event_month ORDER BY cohort, event_month
Tweak as needed for your own events or timeframes.
What works: Total control. You can define any cohort, any metric, any time window.
What doesn’t: SQL can be intimidating if you’re not used to it. Start simple.
Step 4: Visualize the cohort data
Once you have your cohort data—either from the built-in tool or your SQL—pick a chart that actually tells the story. Don’t just accept the default.
- Line chart: Good for seeing retention or repeat actions over time by cohort. Each line is a cohort, y-axis is % retained or # of users, x-axis is weeks/months since cohort start.
- Heatmap (Cohort Table): Each row is a cohort, each column is “weeks since signup,” cells show % retained. Handy for spotting trends at a glance.
- Bar chart: Works for simple “how many users did X by month” questions, but not great for real retention analysis.
What to ignore: Overly flashy charts or anything that makes you squint to find the answer. If you wouldn’t show it to your boss as-is, don’t use it.
Pro tip: Always label your axes and explain what the chart shows. Future you (and your team) will thank you.
Step 5: Interpret the results (without fooling yourself)
Here’s where most marketing teams go wrong. Seeing a nice chart is useless unless you actually do something with it—and avoid self-delusion.
How to read your cohort charts honestly: - Compare across cohorts: Did the users from last month stick around more than those from two months ago? - Look for sudden changes: If a cohort suddenly drops off, did something change in your product or marketing? Correlation isn’t causation, but it’s a place to dig. - Segment further, if needed: Maybe your paid ad cohorts behave differently from organic. Don’t mush them together. - Ignore tiny, noisy cohorts: If you only had 10 users in a cohort, don’t read too much into wild swings.
Don’t chase perfection: Cohort analysis is for direction, not precise prediction. Use it to spot trends, not to write your next investor pitch.
Step 6: Share insights and decide what to do next
A chart alone won’t change anything. Wrap up your findings in a sentence or two: - “Users from our referral program are twice as likely to stick around after 3 months than Facebook ad users.” - “Retention dropped for the November cohort—worth looking into what changed.”
Share it with your team, discuss what you’ll try next, and plan to check back after your next experiment.
Real talk: What works, what doesn’t, and pitfalls to avoid
What works: - Keeping your cohorts simple (signup month is usually enough to start) - Repeating the same analysis after each big marketing push - Focusing on actions that tie to business outcomes, not just app opens
What doesn’t: - Overcomplicating cohorts until nobody remembers what they mean - Expecting perfect data (it doesn’t exist) - Ignoring the context—sometimes product or seasonality matters more than your campaign
Pitfalls: - Forgetting to update your data—old charts = bad decisions - Letting pretty charts lull you into thinking everything’s fine - Using cohort analysis to confirm your biases, not challenge them
Keep it simple and iterate
Cohort analysis doesn’t have to be complicated, and you definitely don’t need a “data science” team to get real insights in Metabase. Focus on answering one clear question, visualize it plainly, and act on what you see. If it’s messy the first time, that’s normal—just keep tweaking.
Most important: don’t let perfect be the enemy of done. Get your first cohort chart out, see what you learn, and build from there. That’s how you actually get marketing insights that matter.