Activation Funnel from PostgreSQL: Signup to First Value

Measure your product activation funnel from PostgreSQL users and events tables: step conversion within a time window, by signup cohort and source.

Summary

An activation funnel measures how many new signups reach each step toward first value, such as creating a project, inviting a teammate and starting a paid plan, within a set number of days. Your app's PostgreSQL tables already record these steps, so Better Analyst can build the funnel directly, by week of signup and by acquisition source.

On this page
  1. Who this report is for
  2. What the report includes
  3. How to build it in Better Analyst from PostgreSQL
  4. Questions to ask
  5. Sample output
  6. Charts to use
  7. Keep it up to date
  8. Further reading
  9. FAQ

Who this report is for

Product managers, growth teams and founders who want to know where new users stall during onboarding, using the data the product already stores rather than a separate analytics tool.

What the report includes

Metrics and dimensions in this report
MetricSource fieldWhy it matters
Signupusers.created_at (example schema)Defines each user's start and their weekly signup cohort.
Acquisition sourceusers.signup_source (example schema)Compares activation by channel.
Funnel step eventsevents.event_name, events.user_id, events.created_at (example schema)Records when each user first completed each step.
Step conversionCalculated: users reaching step N ÷ users reaching step N − 1Shows which step loses the most users.
Time to stepCalculated: first step time − signup timeMedian time to activation; long gaps suggest friction.

How to build it in Better Analyst from PostgreSQL

  1. Create a read-only PostgreSQL user, and if your database restricts inbound traffic, allowlist the Better Analyst IP ranges listed in the PostgreSQL connector docs.
  2. In Better Analyst, open Connectors, choose Add Connector, then PostgreSQL, and enter host, port (5432 by default), database, username, password and SSL mode (require is recommended).
  3. Test the connection and save.
  4. List the funnel steps and their event names in Data Context, plus the window (for example 'within 14 days of signup').
  5. Ask for the funnel by weekly signup cohort for the last eight weeks, with step-to-step conversion and median time to each step.

Questions to ask

  • “Build an activation funnel: signed up, created first project, invited a teammate, started a paid plan, each within 14 days of signup.”
  • “Which step has the biggest drop-off for users who signed up from paid search?”
  • “What's the median time from signup to first project, by week?”
  • “Which users signed up in the last 7 days?”

Sample output

Sample data for illustration, not real account data.

Sample data: 14-day activation funnel, September signups (illustrative)
StepUsersStep conversionFrom signup
Signed up4,800100.0%100.0%
Created first project2,88060.0%60.0%
Invited a teammate1,00835.0%21.0%
Started paid plan30230.0%6.3%

Charts to use

  • Activation funnel (Funnel chart): Users remaining at each step with step-to-step conversion labels.
  • Activation by signup week (Line chart): Share of each weekly cohort reaching the key step, to see whether onboarding changes helped.

Keep it up to date

A weekly scheduled task can post the latest cohort's funnel to the product team's Slack channel every Monday.

Further reading

Try Better Analyst free

Frequently asked questions

Should funnel steps have to happen in order?
For activation, usually yes: count a user at step 3 only if they completed steps 1 and 2 first. Say so in your definition, because unordered funnels give higher numbers.
Why use a time window?
Without one, older cohorts always look better because they've had longer. A fixed window, like 14 days from signup, makes cohorts comparable.
What if my steps aren't logged as events?
Use the timestamps that already exist, for example projects.created_at or invitations.created_at, and take each user's first one. Better Analyst can build the funnel from several tables.