Track SaaS subscription metrics in Zenovay - MRR, churn, expansion, and recurring revenue analytics.
SaaS Revenue Metrics
Key Metrics
| Metric | Description |
|---|---|
| MRR | Monthly Recurring Revenue |
| ARR | Annual Recurring Revenue |
| New MRR | From new customers |
| Expansion MRR | From upgrades |
| Churn MRR | Lost from cancellations |
| Net MRR | New + Expansion - Churn |
MRR Dashboard
MRR Overview
Current MRR: $85,400
New MRR: +$8,200
Expansion: +$3,400
Churn: -$2,100
Net Change: +$9,500 (+11%)
ARR: $1,024,800
Tracking Subscriptions
Subscription Events
Track subscription lifecycle:
// New subscription
zenovay('track', 'subscription',{
action: 'new',
plan: 'pro',
value: 49,
interval: 'monthly',
subscription_id: 'sub_12345',
user_id: 'user_789'
});
// Upgrade
zenovay('track', 'subscription',{
action: 'upgrade',
from_plan: 'pro',
to_plan: 'scale',
value_change: 50, // Additional MRR
subscription_id: 'sub_12345'
});
// Downgrade
zenovay('track', 'subscription',{
action: 'downgrade',
from_plan: 'scale',
to_plan: 'pro',
value_change: -50,
subscription_id: 'sub_12345'
});
// Cancellation
zenovay('track', 'subscription',{
action: 'cancel',
plan: 'pro',
value: 49,
subscription_id: 'sub_12345',
reason: 'too_expensive'
});
Event Types
| Action | MRR Impact |
|---|---|
| new | + New MRR |
| upgrade | + Expansion |
| downgrade | - Contraction |
| cancel | - Churn |
| reactivate | + Reactivation |
MRR Breakdown
MRR Components
View MRR by component:
| Component | Amount | % |
|---|---|---|
| New | $8,200 | 10% |
| Expansion | $3,400 | 4% |
| Reactivation | $900 | 1% |
| Churn | -$2,100 | -2% |
| Contraction | -$800 | -1% |
| Net Change | +$9,600 | +11% |
MRR by Plan
| Plan | MRR | Customers | ARPU |
|---|---|---|---|
| Basic | $12,400 | 620 | $20 |
| Pro | $42,800 | 856 | $50 |
| Scale | $24,700 | 247 | $100 |
| Enterprise | $5,500 | 11 | $500 |
Trial Tracking
Trial Events
Track trial lifecycle:
// Trial started
zenovay('track', 'trial',{
action: 'start',
plan: 'pro',
duration_days: 14,
user_id: 'user_789'
});
// Trial converted
zenovay('track', 'trial',{
action: 'convert',
plan: 'pro',
trial_id: 'trial_123',
days_to_convert: 7
});
// Trial expired
zenovay('track', 'trial',{
action: 'expire',
plan: 'pro',
trial_id: 'trial_123'
});
Trial Metrics
| Metric | Value |
|---|---|
| Trials Started | 450 |
| Trials Converted | 135 |
| Conversion Rate | 30% |
| Avg Days to Convert | 8.2 |
| Trial Revenue | $6,750 |
Churn Analysis
Churn Metrics
| Metric | Value |
|---|---|
| MRR Churn | $2,100 |
| Churn Rate | 2.5% |
| Customers Churned | 42 |
| Avg Churned ARPU | $50 |
Churn by Reason
| Reason | Count | MRR Lost |
|---|---|---|
| Too expensive | 15 | $850 |
| Switched competitor | 12 | $620 |
| No longer needed | 8 | $380 |
| Poor experience | 5 | $200 |
| Other | 2 | $50 |
Churn by Cohort
| Cohort | Month 1 | Month 3 | Month 6 |
|---|---|---|---|
| Jan 2025 | 5% | 12% | 18% |
| Dec 2024 | 4% | 11% | 20% |
| Nov 2024 | 6% | 14% | 22% |
Expansion Revenue
Expansion Tracking
// Seat expansion
zenovay('track', 'expansion',{
type: 'seats',
from: 5,
to: 10,
mrr_change: 25,
subscription_id: 'sub_12345'
});
// Plan upgrade
zenovay('track', 'expansion',{
type: 'plan',
from_plan: 'pro',
to_plan: 'scale',
mrr_change: 50,
subscription_id: 'sub_12345'
});
// Add-on
zenovay('track', 'expansion',{
type: 'addon',
addon: 'extra_storage',
mrr_change: 10,
subscription_id: 'sub_12345'
});
Expansion Metrics
| Type | MRR | % of Expansion |
|---|---|---|
| Plan Upgrades | $2,100 | 62% |
| Seat Additions | $900 | 26% |
| Add-ons | $400 | 12% |
Attribution for SaaS
Trial to Paid Attribution
Track which sources drive converting trials:
| Source | Trials | Conversions | Rate | MRR |
|---|---|---|---|---|
| Organic | 180 | 63 | 35% | $3,150 |
| Content | 120 | 42 | 35% | $2,100 |
| Paid | 90 | 18 | 20% | $900 |
| Referral | 60 | 12 | 20% | $600 |
LTV by Source
Enterprise Plan| Source | Avg LTV | Churn Rate |
|---|---|---|
| Organic | $850 | 2.1% |
| Referral | $920 | 1.8% |
| Content | $780 | 2.4% |
| Paid | $620 | 3.2% |
Cohort Analysis
Revenue Cohorts
Enterprise PlanTrack revenue retention by cohort:
| Cohort | Month 0 | Month 3 | Month 6 | Month 12 |
|---|---|---|---|---|
| Q1 2025 | $10,000 | $9,200 | $8,800 | - |
| Q4 2024 | $8,500 | $7,900 | $7,500 | $7,100 |
| Q3 2024 | $9,200 | $8,400 | $8,000 | $7,600 |
Net Revenue Retention
Calculate NRR:
NRR = (Start MRR + Expansion - Churn) / Start MRR × 100
Example:
Start: $80,000
Expansion: $5,000
Churn: $3,000
NRR = ($80,000 + $5,000 - $3,000) / $80,000 = 102.5%
Integration with Billing
Stripe Integration
Pro PlanConnect Stripe for automatic tracking:
- Go to your domain settings → Integrations tab
- Connect Stripe
- Map plans
- Data syncs automatically
Webhook Setup
Receive billing webhooks:
// Handle Stripe webhook
app.post('/webhooks/stripe', (req, res) => {
const event = req.body;
switch (event.type) {
case 'customer.subscription.created':
zenovay('track', 'subscription',{
action: 'new',
// Map Stripe data
});
break;
// Handle other events
}
});
SaaS Dashboard
Custom Dashboard
Create SaaS-specific view:
- MRR trend widget
- Churn rate gauge
- Trial conversion funnel
- Revenue by plan chart
Key Widgets
| Widget | Shows |
|---|---|
| MRR Trend | Monthly MRR over time |
| Net MRR | Breakdown of changes |
| Churn Rate | Monthly churn trend |
| Trial Funnel | Trial to paid conversion |
Alerting
MRR Alerts
Set up alerts for:
- MRR drops below threshold
- Churn rate increases
- Trial conversion drops
- Revenue targets
Example Alert
Alert: High Churn Day
Trigger: Daily churn > $500
Action: Email + Slack
Best Practices
Track Everything
Capture all subscription events:
- New subscriptions
- Upgrades/downgrades
- Cancellations
- Reactivations
Segment by Plan
Analyze each plan separately:
- Different churn rates
- Different LTV
- Different acquisition costs
Monitor Leading Indicators
Watch for:
- Trial conversion changes
- Time to value
- Feature adoption
- Support tickets