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.