Why this matters
Quota pressure is an expansion signal. Underuse is a churn signal. Both are revenue moments that rarely show up in one place.
What you get
- Accounts near or over quota
- Accounts underusing paid plans
- Suggested action: upsell, enablement, downgrade risk, or no action
- A dashboard CS and revenue ops can review weekly
Walk through it
Which accounts are on the wrong plan?
I’ll rank quota usage by account and plan.
POST /v1/projects/:project_id/analytics/query {
project_id: "default",
hogql: "SELECT properties.account_id AS account, properties.plan AS plan, properties.metric AS metric, argMax(toFloat(properties.used), timestamp) AS used, argMax(toFloat(properties.limit), timestamp) AS limit, used / nullIf(limit, 0) AS utilization FROM events WHERE event = 'quota_snapshot' AND timestamp > now() - INTERVAL 14 DAY GROUP BY account, plan, metric ORDER BY utilization DESC LIMIT 50"
}
The output
The agent returns accounts grouped into expansion, risk, and healthy buckets. It should avoid treating temporary spikes as expansion without recent trend.
Setting it up
Emit a periodic quota_snapshot event from billing or usage metering. Include current plan and metric names.
Variations
- “Only show enterprise accounts.”
- “Find accounts over 80% for three days in a row.”
- “Publish a quota-health board for CS.”