Skip to main content
In a Product-Led Growth (PLG) model, understanding user behavior is everything. To drive growth, you must identify the key “aha!” moments—the actions that signal a user has experienced the core value of your product. By correlating these moments with trial-to-paid conversions, you can focus your onboarding and product marketing on the actions that matter most. This guide provides a model for just that. It answers the question: “Which specific ‘aha!’ moments within the product are most strongly correlated with a user converting from a free trial to a paid subscription?”

The Result

The query below analyzes the conversion rates for users who have completed specific “aha!” moments and compares it against the baseline conversion rate. This reveals the actions with the highest impact on a user’s decision to convert.
aha_momentconversion_ratelift_vs_baseline
invited_teammate45%9.0x
created_first_project25%5.0x
setup_integration18%3.6x
The lift shows how much more likely a user is to convert after performing an action compared to the average user. A 9.0x lift for invited_teammate is a powerful indicator that collaborative features are a critical driver of perceived value and, ultimately, conversion.

The Queries

The query below identifies users who perform key activation events, calculates their conversion rate, and compares it to the baseline rate for all users to determine the lift.
WITH AhaMoments AS (
    -- Get the first time each user performed a key "aha!" moment
    SELECT
        customer_id,
        activity AS aha_moment
    FROM customer_stream
    WHERE activity IN ('created_first_project', 'invited_teammate', 'setup_integration')
    QUALIFY ROW_NUMBER() OVER(PARTITION BY customer_id, activity ORDER BY ts ASC) = 1
),
Conversions AS (
    -- Identify every user who converted
    SELECT DISTINCT customer_id
    FROM customer_stream
    WHERE activity = 'created_subscription'
),
BaselineRate AS (
    -- Calculate the baseline conversion rate for all users
    SELECT
        (COUNT(DISTINCT c.customer_id) * 1.0 / COUNT(DISTINCT cs.customer_id)) AS baseline_rate
    FROM customer_stream cs
    LEFT JOIN Conversions c ON cs.customer_id = c.customer_id
),
MomentConversion AS (
    SELECT
        am.aha_moment,
        (COUNT(DISTINCT c.customer_id) * 1.0 / COUNT(DISTINCT am.customer_id)) AS conversion_rate
    FROM AhaMoments am
    LEFT JOIN Conversions c ON am.customer_id = c.customer_id
    GROUP BY 1
)
SELECT
    mc.aha_moment,
    mc.conversion_rate,
    (mc.conversion_rate / br.baseline_rate) AS lift_vs_baseline
FROM MomentConversion mc, BaselineRate br
ORDER BY 3 DESC;