# Activation Funnel from PostgreSQL: Signup to First Value

- URL: https://betteranalyst.com/data-connectors/postgresql/activation-funnel
- Published: 2026-11-03
- Updated: 2026-11-03
- Author: David Bressler, Founder (https://betteranalyst.com/authors/david-bressler)

> **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.

Data source: [PostgreSQL](https://betteranalyst.com/data-connectors/postgresql)

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

## 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*

| Metric | Source field | Why it matters |
| --- | --- | --- |
| Signup | users.created_at (example schema) | Defines each user's start and their weekly signup cohort. |
| Acquisition source | users.signup_source (example schema) | Compares activation by channel. |
| Funnel step events | events.event_name, events.user_id, events.created_at (example schema) | Records when each user first completed each step. |
| Step conversion | Calculated: users reaching step N ÷ users reaching step N − 1 | Shows which step loses the most users. |
| Time to step | Calculated: first step time − signup time | Median 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)*

| Step | Users | Step conversion | From signup |
| --- | --- | --- | --- |
| Signed up | 4,800 | 100.0% | 100.0% |
| Created first project | 2,880 | 60.0% | 60.0% |
| Invited a teammate | 1,008 | 35.0% | 21.0% |
| Started paid plan | 302 | 30.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

- [PostgreSQL connector](https://betteranalyst.com/data-connectors/postgresql)
- [Conversion rate formula](https://betteranalyst.com/metrics/conversion-rate)
- [Data Context](https://betteranalyst.com/product/data-context)
- [Scheduled tasks](https://betteranalyst.com/product/scheduled-tasks)

[Try Better Analyst free](https://betteranalyst.com/signup)

## 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.

## Related reports

- [SaaS Metrics Dashboard from PostgreSQL: MRR, Churn and ARPA](https://betteranalyst.com/data-connectors/postgresql/saas-metrics-dashboard)
- [Supabase Analytics Dashboard: Signups, Actives, Retention](https://betteranalyst.com/data-connectors/supabase/user-growth-dashboard)
