/analytics/whatsapp/{channelId}).
Data source: Vendschat message database — updated by outbound sends and WhatsApp status webhooks (sent → delivered → read / failed). This is not the same as opening Meta Business Manager analytics, though numbers should be close.
Message lifecycle & statuses
Outbound status progression
Timestamps stored per message:
sent_at, delivered_at, read_at, failed_at. The log Updated at column uses the latest meaningful status time.
Inbound messages
Inbound (customer → you) messages appear in Message logs with direction inbound. They are not included in summary Sent/Delivered/Read/Failed totals (those measure your outbound performance).Summary metrics (formulas)
All summary and trend metrics use outbound, non-internal messages unless noted.Period-over-period deltas
When the selected range has a defined previous window (e.g. last 7d vs prior 7d):
Formula:
round((current - previous) / previous × 100, 1) — null if previous = 0.
Time range parsing
Dashboard dropdown offers Today, 7d, 30d, 60d, 90d, Custom — not 14d. The API and Co-Admin
get_channel_analytics / get_contact_analytics do accept 14d.
Previous period for deltas = equal-length window immediately before current start.
Timeseries (daily chart)
Days with zero activity still appear (zero values) when using daily rollup tables.
Performance: Aggregates prefer
channel_message_stats_daily rollup; falls back to raw messages table if rollup unavailable.
Conversation type segments
Scope: Outbound, non-internal messages in range.
Each segment includes
count and pct (% of total outbound in range).
Top countries
Scope: All non-internal messages (inbound + outbound) in range.
Limited to top 10 countries by count.
Data quality: Country depends on contact profile — enrich contacts for accurate geo reports.
Template performance metrics
Scope: Outbound template sends in range (type = template OR template_name set).
Caveat: Button tracking infers clicks from inbound message text matching button labels — not separate Meta click IDs in all cases.
Message log filters
|
status filter | Matches messages.status exactly |
| phone | Case-insensitive partial match on contacts.phone_number |
Pagination: Default per_page=10, max 50. Ordered by latest status timestamp descending.
CSV export (message-logs): Uses the same query params but defaults to page 1, per_page 10 — the dashboard Export button does not pass page, so you get at most 10 rows unless you build the export URL with a higher per_page (max 50).
CSV export kinds
Exports require workspace membership and a WhatsApp channel.
REST API endpoints (WhatsApp channel)
Base path:GET /workspaces/{workspaceId}/channels/{channelId}/analytics/...
Caching:
summary and timeseries responses are cached in memory for 10 minutes per process (withAnalyticsCache). Other endpoints are uncached.
Client: Dashboard uses React Query (staleTime 60s, refetchOnWindowFocus: false) under AnalyticsQueryProvider in the app layout.
Meta WABA analytics (backend capability)
The product backend also exposes Meta Graph API analytics for WhatsApp Business Accounts when channel credentials include a valid WABA token. The current dashboard UI does not call these routes — it uses database-powered analytics described above.
Capabilities endpoint documents:
- Optional filters on Meta summary/timeseries (when used):
country_codes,product_types, phone number slice vs whole WABA - Template analytics via Meta: max 90-day lookback, max 10 template IDs per request
- Limitations: BSP-billed WABAs may omit cost; Meta data can differ from invoices; template read/click metrics follow Meta’s 7-day rules
template-performance) measures reply rate and button text breakdown from Vendschat threads — different from Meta template sent/delivered/read.
Customer guidance: Trust Analytics dashboard for day-to-day ops; reconcile Meta billing in Meta Business Manager for conversation charges.
Co-Admin contact analytics metrics
When Co-Admin looks up a contact by phone/email:
Also returns: thread list, labels, assignees (user/team/AI agent), daily inbound/outbound series, support agents ranked by outbound count.
Default range: 30 days for contact analytics (vs 7 days for channel tool).
WhatsApp vs other channels
Related
- Analytics overview
- Analytics & message performance — navigation & workflows
- Analytics FAQ