Use cases at a glance
Engagement is the leading indicator of churn. Before a customer cancels, they stop using your product. By monitoring daily active users, tracking feature adoption, and flagging usage anomalies, you catch disengagement 30-60 days before it becomes a churn problem.
📊 DAU/WAU/MAU Monitoring
Track daily, weekly, and monthly active users per account. Alert if an account's DAU drops >50% vs baseline (strong churn predictor).
🎯 Feature Adoption Tracking
Monitor which features are being used, adoption rates by cohort, and feature gaps in at-risk accounts.
⏹️ Zero-Login Alerts
Flag accounts with zero logins in the last N days, segmented by plan tier and product type (API vs UI).
🚀 Onboarding Completion Monitoring
Track activation milestones (first API call, first report generated, first team member added) and alert on drop-offs.
⚠️ Usage Anomaly Detection
Automatically flag accounts whose event volume deviates >2x from their baseline (signal of integration change or product incident).
Connecting your analytics platform
OpenClaw supports Mixpanel, PostHog, Amplitude, and custom Postgres. Choose based on where you already track events. Each requires a different credential type:
|
| | Platform | Auth Method | Credential | Best For |
| Mixpanel | Service Account | Service Account API token | Behavioral cohort analysis, user-level queries |
| PostHog | Personal API Key | API key (Team Settings) | Privacy-first, built-in heatmaps, open source |
| Amplitude | API Key + Secret | API key and secret key | Retention funnels, large-scale event processing |
| Postgres | Read-only DB User | Connection string + table/column names | Self-hosted events, full data control |
✅ Recommended: If you don't have an analytics platform yet, start with PostHog. It offers free-tier event tracking, self-hosted option, and best-in-class OpenClaw integration. Mixpanel and Amplitude require paid plans for service accounts.
DAU/WAU/MAU monitoring
Track active user counts per account per day/week/month. Compare against baseline and alert when DAU drops >50% — a strong early warning signal for churn.
agents:
dau-monitor:
description: "Monitor daily active users per account"
tools:
- analytics-api
config:
platform: "mixpanel" # or posthog, amplitude, postgres
mixpanel_token: "${MIXPANEL_SERVICE_ACCOUNT_TOKEN}"
event_name: "any_event" # counts any tracked event as engagement
groupby: "account_id" # aggregate per account
metrics:
- daily_active_users
- weekly_active_users
- monthly_active_users
baseline_days: 30 # compare to 30-day rolling average
alert_on:
- dau_drop_threshold: 0.5 # alert if DAU < 50% of baseline
- wau_drop_threshold: 0.4 # alert if WAU < 40% of baseline
exclude_inactive_accounts: true # ignore accounts with 0 DAU
output:
format: markdown
include_affected_accounts: true
include_trend: true
heartbeats:
daily-dau-check:
schedule: "0 7 * * *" # 7am daily
agent: dau-monitor
Feature adoption tracking
Monitor which features are actively used, adoption rates by plan tier, and feature gaps in at-risk accounts. Use this to identify training gaps and guide product roadmap.
agents:
feature-adoption-tracker:
description: "Track adoption of key product features"
tools:
- analytics-api
config:
platform: "posthog" # or mixpanel, amplitude, postgres
posthog_api_key: "${POSTHOG_API_KEY}"
features_to_track:
- event_name: "report_generated"
display_name: "Report Generation"
adoption_target: 0.80
- event_name: "api_called"
display_name: "API Integration"
adoption_target: 0.60
- event_name: "team_member_invited"
display_name: "Team Collaboration"
adoption_target: 0.40
- event_name: "automation_created"
display_name: "Automations"
adoption_target: 0.25
segment_by:
- plan_tier: ["starter", "growth", "enterprise"]
- product_cohort: ["api_users", "ui_users", "hybrid"]
lookback_days: 30
alert_on:
- adoption < 0.20 and plan == "enterprise" # enterprise accounts should adopt
output:
format: markdown
include_segment_breakdown: true
include_at_risk_adoption_gaps: true
heartbeats:
weekly-adoption-report:
schedule: "0 9 * * 1" # Mondays at 9am
agent: feature-adoption-tracker
Zero-login account alerts
Flag accounts that haven't logged in for N days. Useful for identifying inactive trials and dormant accounts ripe for reactivation outreach.
agents:
zero-login-alert:
description: "Alert on accounts with zero logins in N days"
tools:
- analytics-api
config:
platform: "amplitude" # or mixpanel, posthog, postgres
amplitude_api_key: "${AMPLITUDE_API_KEY}"
amplitude_secret_key: "${AMPLITUDE_SECRET_KEY}"
event_name: "login" # or "session_start", "app_opened", depending on your schema
thresholds:
warning_days: 14 # yellow flag if no login 14d
critical_days: 30 # red flag if no login 30d
filter_by_plan:
exclude: ["free"] # don't alert on free tier (normal to be inactive)
output:
format: markdown
include_account_age: true
include_previous_activity: true
heartbeats:
zero-login-watch:
schedule: "0 8 * * *" # 8am daily
agent: zero-login-alert
Onboarding completion monitoring
Track activation milestones and alert when accounts get stuck in onboarding. This helps identify customers who need extra help before they give up.
agents:
onboarding-completion-monitor:
description: "Track onboarding completion milestones per account"
tools:
- analytics-api
config:
platform: "postgres" # or mixpanel, posthog, amplitude
db_connection: "${ANALYTICS_DB_CONNECTION_STRING}"
milestones:
- event_name: "signup_completed"
display_name: "Account Created"
position: 1
- event_name: "first_login"
display_name: "First Login"
position: 2
- event_name: "first_api_call"
display_name: "API Integration"
position: 3
- event_name: "first_report_generated"
display_name: "First Report"
position: 4
- event_name: "team_member_invited"
display_name: "Team Added"
position: 5
completion_tracking:
window_days: 14 # measure milestones within first 14 days
alert_on_dropoff: true
dropoff_threshold: 0.30 # if 30% more accounts drop at a milestone vs prior
output:
format: markdown
include_stuck_accounts: true
heartbeats:
onboarding-health:
schedule: "0 10 * * *" # 10am daily
agent: onboarding-completion-monitor
Usage anomaly detection
Flag accounts whose event volume deviates significantly from their baseline. Common anomalies: sudden drop to zero (churn risk), sudden spike (new team member or integration), or gradual decline (disengagement).
agents:
usage-anomaly-detector:
description: "Alert on usage deviations from baseline"
tools:
- analytics-api
config:
platform: "mixpanel" # or posthog, amplitude, postgres
mixpanel_token: "${MIXPANEL_SERVICE_ACCOUNT_TOKEN}"
groupby: "account_id"
baseline_window_days: 30 # compute baseline from last 30 days
anomaly_detection:
type: "standard_deviation"
threshold_multiplier: 2.0 # alert if today > (baseline * 2.0)
lookback_hours: 24 # check daily
exclude:
- low_volume_accounts: true # accounts with <10 events/month are noisy
output:
format: markdown
include_direction: true # flag as "drop" vs "spike"
include_affected_features: true
heartbeats:
anomaly-watch:
schedule: "0 * * * *" # every hour
agent: usage-anomaly-detector
HEARTBEAT templates
heartbeats:
# Daily DAU monitoring
dau-watch:
schedule: "0 7 * * *"
agent: dau-monitor
# Weekly feature adoption report
adoption-report:
schedule: "0 9 * * 1"
agent: feature-adoption-tracker
# Daily zero-login check
login-check:
schedule: "0 8 * * *"
agent: zero-login-alert
# Daily onboarding health
onboarding-health:
schedule: "0 10 * * *"
agent: onboarding-completion-monitor
# Hourly usage anomaly detection
anomaly-watch:
schedule: "0 * * * *"
agent: usage-anomaly-detector
FAQ
Which analytics platform should I use?
Mixpanel excels at user-level behavior tracking and cohort analysis. PostHog offers a privacy-first alternative with built-in event tracking and no third-party tracking. Amplitude is strongest for retention and funnels at scale. For most SaaS teams under $5M ARR, PostHog (self-hosted or cloud) offers the best price-to-feature ratio. Pick whichever platform you already send events to, since switching is expensive. If you haven't chosen, use PostHog's free tier to experiment.
What counts as a 'usage anomaly'?
A usage anomaly is when an account's event count deviates significantly from its baseline. Common anomalies: (1) an active account suddenly drops to zero events (signal of switching or churn), (2) an account that's been inactive suddenly spikes to high usage (signal of new team member), (3) a cohort's average DAU drops >25% week-over-week (signal of product regression or feature breakage). Set anomaly thresholds based on your volatility: low-churn products tolerate small drops, while volatile products (trials, SMB) need higher multipliers (>2.5x baseline deviation).
How do I connect a custom Postgres database?
Create a read-only database user with SELECT permissions on your analytics or events table: CREATE USER analytics_reader WITH PASSWORD 'secure_password'; GRANT SELECT ON events TO analytics_reader; Store the connection string in secrets.env as ANALYTICS_DB_CONNECTION_STRING. In the agent config, set platform: 'postgres' and provide table_name (events), event_column, user_id_column, and timestamp_column names. Queries run with SELECT privileges only and cannot modify data. Postgres is ideal if you self-host events without a SaaS analytics tool.