KPI Tracking & Goals
Monitor your loyalty program's performance with KPIs and community goals.
Setting KPIs
Create a KPI
/kpi set metric:daily_active_users target:500 period:week
With Alert Threshold
/kpi set metric:streak_retention target:70 alert_threshold:80
When the KPI drops below 80% of target (56% in this case), you'll get an alert.
Available Metrics
| Metric | Description | Typical Target | Type |
|---|---|---|---|
daily_active_users | Users who claimed in 24h | 100 | Count |
weekly_active_users | Users who claimed in 7 days | 500 | Count |
streak_retention | % maintaining streaks | 60% | Percentage |
new_user_conversion | % of new users engaging | 50% | Percentage |
voice_participation | % using voice channels | 30% | Percentage |
reward_efficiency | Avg LTZ per active user | varies | Count |
churn_rate | % becoming inactive | 20% | Percentage |
top_10_concentration | % LTZ held by top 10% | 40% | Percentage |
triggered_event_rate | Events triggered per day | varies | Count |
events_per_active_user | Average events per active user | 2-3 | Count |
time_to_first_reward | Median hours to first reward | 24 | Hours |
time_to_first_reward_pct | % rewarded within first day | 70% | Percentage |
repeat_event_rate | Average events per rewarded user | 3-5 | Count |
repeat_event_rate_pct | % triggering 3+ events | 40% | Percentage |
avg_streak_length | Average streak length | 7-14 | Days |
streak_break_frequency | % of streaks that break | 30% | Percentage |
KPI Periods
| Period | Description |
|---|---|
day | Daily targets (resets daily) |
week | Weekly targets (resets weekly) |
month | Monthly targets (resets monthly) |
quarter | Quarterly targets (resets quarterly) |
Managing KPIs
View All KPIs
/kpi list
Shows active and inactive KPIs.
Generate Report
/kpi report
Comprehensive performance report.
Enable/Disable KPI
/kpi enable metric:daily_active_users
/kpi disable metric:churn_rate
Remove KPI
/kpi remove metric:old_metric
Export Data
/kpi export format:csv
/kpi export format:json start_date:2024-01-01
KPI Alerts
Set thresholds to get notified when performance drops.
Basic Alert Configuration
/kpi alert-config metric:daily_active_users threshold:80 frequency:daily_digest severity:warning
When DAU drops below 80% of target, alert is sent based on frequency and severity settings.
Advanced Alert Settings
/kpi alert-config metric:streak_retention threshold:75 frequency:immediate severity:critical channel:#alerts escalation_days:3 escalation_role:@Admin
Alert Options:
threshold- Alert when below X% of target (0-100)frequency-immediate,hourly, ordaily_digestseverity-critical,warning, orinfochannel- Specific channel for alertsescalation_days- Days before escalating to higher severityescalation_role- Role to mention on escalation
Alert Logic
| Metric Type | Alert When |
|---|---|
| Most metrics | actual < (target × threshold / 100) |
churn_rate | actual > threshold (lower is better) |
top_10_concentration | actual > threshold (lower is better) |
View Alert Configuration
/kpi alert-config
Shows all configured alerts. Omit metric to see all, or specify a metric to see its config.
Compound Alerts
Create multi-condition alert rules that trigger when multiple KPIs meet certain conditions.
Create Compound Alert
/kpi compound-alert create name:"Low Engagement Alert" conditions:"dau<100,streak<50" logic:AND severity:critical
Conditions Format:
metric<value,metric>value(comma-separated)- Operators:
<,<=,>,>=,=,!= - Example:
dau<100,streak_retention<50,churn>20
Logic Types:
AND- All conditions must matchOR- Any condition can match
Manage Compound Alerts
/kpi compound-alert list # List all compound alerts
/kpi compound-alert view name:"Alert Name" # View details
/kpi compound-alert toggle name:"Alert Name" enable:true # Enable/disable
/kpi compound-alert remove name:"Alert Name" # Remove
/kpi compound-alert history # View trigger history
Custom Metrics
Create formula-based KPIs using existing metrics.
Create Custom Metric
/kpi custom-metric create name:"Engagement Score" formula:"(daily_active_users*0.6)+(weekly_active_users*0.4)" unit:count target:500
Formula Examples:
daily_active_users * 0.6 + weekly_active_users * 0.4- Weighted engagement(streak_retention + new_user_conversion) / 2- Average of two metricsreward_efficiency / daily_active_users- Efficiency per user
Available Base Metrics:
All standard KPI metrics can be used in formulas (e.g., daily_active_users, streak_retention, reward_efficiency).
Test Formulas
/kpi custom-metric test formula:"daily_active_users * 2"
Test a formula without creating a metric.
Manage Custom Metrics
/kpi custom-metric list # List all custom metrics
/kpi custom-metric view name:"Metric Name" # View details
/kpi custom-metric edit name:"Metric Name" formula:"new formula" # Edit
/kpi custom-metric remove name:"Metric Name" # Remove
Period Comparisons
Compare current performance against a baseline period.
Set Baseline Period
/kpi compare set metric:daily_active_users baseline_start:2024-01-01 baseline_end:2024-01-31
This sets January 2024 as the baseline. Future reports will show:
- Current value vs baseline value
- Percentage change
- Period-over-period trends
View Comparisons
/kpi compare # View all comparisons
/kpi compare metric:daily_active_users # View specific metric
/kpi compare disable metric:daily_active_users # Disable comparison
Presets & Templates
Use pre-configured KPI sets or save your own configuration.
Apply a Preset
/kpi preset list # List available presets
/kpi preset view name:"Gaming Community" # View preset details
/kpi preset apply name:"Gaming Community" # Apply to your server
Preset Types:
- Industry Templates - Pre-built for gaming, NFT, DeFi, etc.
- Alert Configs - Alert configurations
- KPI Sets - Complete KPI configurations
- Custom - Your saved configurations
Create Your Own Preset
/kpi preset create name:"My Server Config" description:"Optimized for our community" public:false
Saves your current KPI configuration as a reusable preset.
Role-Based Alert Routing
Route alerts to specific roles or channels based on severity.
Configure Role Routing
/kpi role-alerts set severity:critical role:@Admin channel:#critical-alerts mention:true
/kpi role-alerts set severity:warning role:@Moderators
/kpi role-alerts set severity:all channel:#all-alerts
Severity Levels:
critical- 🔴 Critical alerts onlywarning- 🟡 Warning alerts onlyinfo- 🔵 Info alerts onlyall- All alert types
View Role Alert Configuration
/kpi role-alerts list # View all routing
/kpi role-alerts remove severity:critical # Remove routing
KPI Snapshots
The system automatically takes daily snapshots at midnight UTC.
What's Captured
- All active KPI values
- Actual vs target
- Achievement status
- Server stats
Storage
Snapshots are stored in discord_kpi_snapshots table for trend analysis.
Use Cases
- Historical trend analysis
- Period-over-period comparisons
- Export with date ranges
Community Goals
Set server-wide goals for your community.
Create a Goal
/goals set name:"Q1 Growth" type:users target:1000 deadline:2024-03-31
Goal Types
| Type | Description | Synced With |
|---|---|---|
users | Total active users | weekly_active_users KPI |
dau | Daily active users | daily_active_users KPI |
ltz_distributed | Total LTZ given out | reward_efficiency KPI |
streak_retention | Streak retention % | streak_retention KPI |
custom | Custom metric | Not synced |
Track Progress
/goals progress
Celebrate Completion
/goals celebrate
Post a celebration message when goal is achieved!
Scheduled Reports
Automate analytics delivery.
Schedule Weekly Report
/reports schedule frequency:weekly channel:#admin-stats day:monday
Preview Format
/reports preview
Disable Reports
/reports disable
KPI Dashboard Strategy
Recommended KPI Set
For Active Communities:
daily_active_users- Core engagementstreak_retention- Habit formationnew_user_conversion- Onboarding effectiveness
For Growing Communities:
weekly_active_users- Growth metricchurn_rate- Retention trackingtop_10_concentration- Distribution health
Alert Thresholds
| KPI | Recommended Threshold |
|---|---|
| Daily Active Users | 80% |
| Streak Retention | 75% |
| New User Conversion | 70% |
| Churn Rate | 120% (alert if above) |
Database Schema
discord_kpi_configs
server_id TEXT NOT NULL
metric TEXT NOT NULL
target_value NUMERIC NOT NULL
period TEXT DEFAULT 'week'
alert_threshold NUMERIC
is_active BOOLEAN DEFAULT TRUE
discord_kpi_snapshots
server_id TEXT NOT NULL
snapshot_date DATE NOT NULL
snapshot_type TEXT DEFAULT 'daily'
metrics JSONB NOT NULL
Best Practices
Start Simple
Begin with 2-3 core KPIs:
daily_active_usersstreak_retentionnew_user_conversion
Review Weekly
Check /kpi report every Monday to:
- Assess performance
- Identify trends
- Plan adjustments
Celebrate Wins
When goals are hit:
- Use
/goals celebrate - Post in announcement channel
- Consider bonus drops