Analytics
The analytics command mirrors the /analytics page — a summary of
message volume across channels and a daily trend series for charting.
Read-only. The page also has CSV export buttons; pipe the JSON through
jq -rand your own conversion of choice.
Quick start
splashify analytics # message analytics summary
splashify analytics trends # daily trend seriesCommand reference
| Subcommand | Backed by |
|---|---|
(none — default) / summary | GET /api/v1/app/analytics/summary |
trends | GET /api/v1/app/analytics/trends |
Summary shape
{
"success": true,
"summary": {
"total_sent": 18420,
"total_delivered": 17888,
"total_read": 12940,
"total_failed": 532,
"by_channel": {
"whatsapp": { "sent": …, "delivered": …, "read": …, "failed": … },
"rcs": { "sent": …, "delivered": …, "read": …, "failed": … },
"instagram": { "sent": …, "delivered": …, "read": …, "failed": … }
},
"by_template": [
{ "name": "promo_welcome", "sent": …, "delivered": …, "read": … }
]
}
}Trends shape
{
"success": true,
"trends": [
{ "date": "2026-04-22", "sent": 612, "delivered": 595, "read": 421, "failed": 17 },
{ "date": "2026-04-23", "sent": 580, "delivered": 561, "read": 398, "failed": 19 }
]
}Common patterns
# Read-rate per template
splashify analytics | jq '
.summary.by_template[] |
{name, read_rate: (.read / .delivered)}
'
# Last 7 days of sends as a sparkline-friendly CSV
splashify analytics trends | \
jq -r '.trends[-7:][] | "\(.date),\(.sent),\(.delivered),\(.read)"'
# Channel mix
splashify analytics | \
jq '.summary.by_channel | to_entries | map({channel: .key, sent: .value.sent})'Related
- Broadcasts — per-broadcast stats and cohorts
- Track expenses — wallet movements alongside volume