> AI agents: this is one page from PostHog's docs. Full index of Markdown docs for LLMs: https://posthog.com/llms.txt # Which onboarding steps turn trials into paying customers? – Data Stack pocket guide [](/pocket-guides.md) AA Contents - [Introduction](/pocket-guides/data-stack.md) - Ask a quick question [Features & revenue01](/pocket-guides/data-stack/features-drive-revenue.md) - [Onboarding conversion02](/pocket-guides/data-stack/onboarding-conversion.md) - [Upsell-ready accounts03](/pocket-guides/data-stack/upsell-ready-accounts.md) - [Pre-cancellation behavior04](/pocket-guides/data-stack/pre-cancellation-behavior.md) - [Tickets & churn05](/pocket-guides/data-stack/support-tickets-churn.md) - [ARR vs engagement06](/pocket-guides/data-stack/value-vs-engagement.md) - [Channels & retention07](/pocket-guides/data-stack/acquisition-channels-retention.md) - [Lead scoring08](/pocket-guides/data-stack/lead-scoring.md) - [Feature revenue impact09](/pocket-guides/data-stack/feature-revenue-impact.md) - Data modeling [Foundations10](/pocket-guides/data-stack/warehouse-foundations.md) - [Revenue11](/pocket-guides/data-stack/revenue-metrics.md) - [Conversion12](/pocket-guides/data-stack/conversion-metrics.md) - [Activation13](/pocket-guides/data-stack/activation-metrics.md) - [Usage14](/pocket-guides/data-stack/product-usage-metrics.md) - [Dimensions15](/pocket-guides/data-stack/dimension-tables.md) [](/pocket-guides.md)Aa [](/pocket-guides/data-stack/features-drive-revenue.md)[](/pocket-guides/data-stack/upsell-ready-accounts.md) # Which onboarding steps turn trials into paying customers? – Data Stack pocket guide Every onboarding flow has steps that matter and steps that don't. The trick is knowing which is which. This skill builds the onboarding funnel, flags who reached a first Stripe payment, and compares people who pay against people who don't, step-by-step. ## Example data and how to read it The Skill looks for patterns like Fig. 1: only 9% of non-payers ever create a second project, versus 52% of payers, the biggest gap in the funnel. Inviting a teammate looks important on its own, but the gap between payers and non-payers is smaller. This tells you to focus on closing the gap for people who don't create a second project. | Onboarding step | Payers who did it | Non-payers who did it | Share who paid | | --- | --- | --- | --- | | `created_second_project` | 52% | 9% | 0.61 | | `invited_teammate` | 78% | 22% | 0.41 | | `connected_data_source` | 91% | 64% | 0.24 | | `viewed_pricing` | 88% | 81% | 0.15 | Fig. 1 – Example data: onboarding actions ranked by how strongly they separate payers from non-payers. ## Get an agent to do the work Copy the Skill below and add it to your agent. The agent finds your signup-to-activation events and each user's first successful Stripe payment, joined on email. From there it either builds a funnel broken down by paid vs unpaid, or computes the completion-rate lift of each step among payers versus non-payers, whichever fits what you asked. The agent looks at the onboarding *path* in aggregate. For scoring which individual leads sales should call right now instead, that's [Lead scoring](/pocket-guides/data-stack/lead-scoring.md). posthog-onboarding-conversion/SKILL.md ```markdown --- name: posthog-onboarding-conversion description: > Rank the onboarding and activation steps that best predict a trial becomes a paying customer: build the onboarding funnel, flag who reached a first Stripe payment, and compare payers versus non-payers, saved as a reusable PostHog insight. Use this whenever someone asks which onboarding or activation steps lead to paid conversion, what converting trials do differently, which signup steps predict revenue, or where trials stall before paying. Triggers on phrasings like 'what makes trials convert', 'onboarding steps that lead to payment', 'activation actions that predict conversion', 'compare payers vs non-payers by onboarding', or 'where do trials stall'. Boundary: this analyzes the onboarding PATH to first payment in aggregate. For scoring and prioritizing which individual LEADS sales should contact, use posthog-lead-scoring. It sets up the Stripe source if needed and builds the insight end-to-end. --- # Which onboarding steps turn trials into paying customers? **Question:** Which onboarding actions best predict that a trial becomes a paying customer? **For:** Growth · **Difficulty:** Beginner · **Shape:** a funnel + a join **Data sources:** PostHog funnels (onboarding steps) + Stripe (first successful payment) ## What this produces A saved PostHog insight comparing onboarding actions completed by users who reached a first Stripe payment against those who never paid, ranked by how strongly each step predicts conversion — so the user knows which steps to push everyone toward. ## Workflow First read `references/posthog-workflow.md` for the shared setup: confirm the PostHog MCP is connected, ensure the Stripe source exists (set it up via the secure connect-link flow if not), and learn this project's real schema. Then do the question-specific part below. ### 1. Identify the pieces in this project - **Onboarding steps.** Use `event-definitions-list` to find signup → activation events. Confirm the intended step order with the user; onboarding funnels are product-specific. - **First payment.** Identify each user's first successful payment from Stripe — typically the earliest paid `stripe_invoice` or successful `stripe_charge` per customer. Join to PostHog people on `lower(email)` (see the join gotchas in the shared reference). - **Conversion label.** For each user, a boolean: did they ever reach a first Stripe payment? ### 2. Build and validate the query Two good approaches — use whichever the user prefers: - **Funnel insight split by converted vs not** (most native): build the onboarding funnel and break it down by a "paid" cohort. This shows step-by-step drop-off for payers vs non-payers directly. - **Comparison query** (ranks predictive steps): compute, per onboarding action, the completion rate among payers vs non-payers and the lift. Start from this shape and adapt names, then validate with `query-run`: ```sql -- Completion rate of each onboarding action among payers vs non-payers, with lift. -- Adapt: onboarding event names, the payment definition, and the email join key. WITH payers AS ( SELECT DISTINCT lower(email) AS email FROM stripe_invoice WHERE status = 'paid' ), user_actions AS ( SELECT e.person.id AS person_id, lower(e.person.properties.email) AS email, e.event AS action, min(e.timestamp) AS first_did FROM events AS e WHERE e.event IN ('signed_up', 'completed_profile', 'created_project', 'invited_teammate', 'activated') GROUP BY e.person.id, lower(e.person.properties.email), e.event ) SELECT ua.action, countIf(p.email != '') AS payers_who_did, countIf(p.email = '') AS nonpayers_who_did, round(countIf(p.email != '') / nullif(count(), 0), 3) AS share_of_doers_who_paid FROM user_actions AS ua LEFT JOIN payers AS p ON ua.email = p.email GROUP BY ua.action ORDER BY share_of_doers_who_paid DESC ``` Note the caveat honestly when you report: this is correlation, not proof of causation — steps that correlate with paying aren't guaranteed to cause it. ### 3. Save the insight Save as a funnel insight (if you went the funnel route) or a SQL/HogQL table insight named "Onboarding steps that predict conversion", described with the payment definition and window. Return the URL and tell the user which steps most separate payers from non-payers. ## Self-driving development (offer this) With the steps that predict conversion, the user can spot trials stalling before them. Offer to help set up in-product prompts, a lifecycle email trigger, or an experiment that moves stalled users forward — turning more trials into customers. ``` Show full example Fig. 2 – The Skill itself, copy and paste this into your agent to answer the question. ## Doing this by hand 1. **Build the [funnel](/docs/product-analytics/funnels.md) natively.** Go to Product analytics > Funnels and add your onboarding steps in order. This part needs no join; PostHog does it out of the box. 2. **Connect [Stripe](/docs/cdp/sources/stripe.md)** via [Data pipeline > Sources](/docs/data-warehouse/sources.md) to get first-payment dates. 3. **Create a "paid" [cohort](/docs/data/cohorts.md).** Under Cohorts > New cohort, match users with a Stripe invoice `status = paid` (a warehouse condition), then use it as the funnel's breakdown. 4. **Compare completion rates**, open the [SQL editor](/docs/data-warehouse/sql.md), or ask PostHog AI if you want the lift computed for you in one query instead of reading two funnels side by side. See also: [Lead scoring](/pocket-guides/data-stack/lead-scoring.md) · [Pre-cancellation behavior](/pocket-guides/data-stack/pre-cancellation-behavior.md) [‹ Features & revenue](/pocket-guides/data-stack/features-drive-revenue.md)[All guides](/pocket-guides.md)p. 2 of 15[Upsell-ready accounts ›](/pocket-guides/data-stack/upsell-ready-accounts.md)