Stats & Product Analytics for Analysts
Back to Thinking in Product Metrics

Applying AARRR in Practice

The AARRR funnel is over-cited but still the cleanest frame for thinking about a consumer or freemium product.

3 minutesReading
🎯 Free Guest Mode: You are learning for free. Sign in to save your completion progress and quiz answers.

Dave McClure's AARRR framework (Acquisition, Activation, Retention, Revenue, Referral) forces you to examine the entire customer journey.

AARRR stage aggregation in Python

import pandas as pd

# Channel-level AARRR pipeline dataset
data = {
    "channel": ["Paid Social", "Organic Search", "Referral"],
    "acquisitions": [10000, 8000, 3000],
    "activations": [1800, 3200, 1650],      # D1 value moment
    "d30_retained": [270, 1120, 825],       # D30 retention
    "paid_converted": [120, 480, 450],      # Revenue stage
}
df_aarrr = pd.DataFrame(data)

# Calculate stage conversion rates
df_aarrr["activation_rate"] = df_aarrr["activations"] / df_aarrr["acquisitions"]
df_aarrr["retention_rate"] = df_aarrr["d30_retained"] / df_aarrr["activations"]
df_aarrr["pay_cvr_overall"] = df_aarrr["paid_converted"] / df_aarrr["acquisitions"]

print(df_aarrr[["channel", "activation_rate", "retention_rate", "pay_cvr_overall"]].to_string(index=False, formatters={
    "activation_rate": "{:.1%}".format,
    "retention_rate": "{:.1%}".format,
    "pay_cvr_overall": "{:.1%}".format,
}))

Takeaway

AARRR helps spot whether your acquisition engine is merely filling a leaky activation bucket.

Loading progress...