Analytics & Reporting
Olyron CRM turns the records you already keep — leads, deals, tasks, commissions, communications, and commerce orders — into live performance metrics. This page covers where each number comes from, how it is aggregated, and how to export the underlying data.
#Where analytics live
Reporting is spread across a few purpose-built surfaces in the dashboard. Each pulls from your tenant's own rows in Supabase, scoped by tenant_id, so you only ever see your organization's data.
| Surface | Route | What it shows |
|---|---|---|
| Analytics | /dashboard/analytics | Live KPI snapshot of leads, deals, tasks, and members |
| Reports hub | /dashboard/reports | Template gallery and the 2026 CRM reporting suite |
| 2026 reporting suite | /dashboard/reports/2026/{annual|quarterly|monthly} | Query-backed revenue, conversion, and activity reports |
| Communications analytics | /api/communications/analytics | Call and meeting volume, answer rate, completion rate |
| Commerce stats | /api/commerce/stats | Order counts and revenue by connected store |
| Commission summary | /api/commissions/summary | Pending / approved / paid payouts per agent or tenant |
#The Analytics dashboard
/dashboard/analytics is the fastest read on how the business is doing. It fetches leads, deals, tasks, and members for your tenant in parallel and computes headline metrics client-side. A date-range selector (7d / 30d / 90d / all) sits in the header.
Metrics you get
- Leads by status (new, contacted, qualified, converted) and by
source. - Deals: total count, total value (sum of
amount), and weighted value (amountxprobability/ 100). - Tasks: total, completed, pending, and overdue (pending tasks with a
due_datein the past). - Members: total, active, and expiring soon (active members whose
renewal_datefalls within 30 days). - Performance: conversion rate and task completion rate.
#The 2026 reporting suite
The Reports hub groups deeper reports into annual, quarterly, and monthly cadences. These pages query live tenant data through the Supabase client rather than showing samples.
- Annual: revenue trend, lead trend, source distribution, conversion by rep.
- Monthly: revenue and closed sales, lead source breakdown, conversion rates, rep activity, individual performance, activity log vs. targets, in-house vs. self-generated, outside advisor production.
- Quarterly: target tracking backed by the
quarterly_targetstable.
- 1Open the Reports hubGo to /dashboard/reports and filter templates by category (Sales, Marketing, Team, Operations, Finance, Productivity).
- 2Jump into the 2026 suiteFollow the 2026 CRM reporting suite link to reach the annual, quarterly, and monthly report groups.
- 3Pick a cadence and reportChoose, for example, Monthly then Revenue and Closed Sales, or Annual then Revenue Trend, to load numbers computed from your live records.
#Commissions, communications & commerce
Beyond the CRM dashboard, three domain APIs expose aggregated metrics you can pull directly. All require an authenticated tenant user.
Commission summary
GET /api/commissions/summary aggregates rows from commission_records. Non-admins always see only their own agent summary; org owners and agency admins can pass agentId for a single agent or omit it for a tenant-wide roll-up. Optional periodStart and periodEnd filter by the record period.
{
"type": "agent",
"summary": {
"agentId": "…",
"agentName": "Jane Advisor",
"totalPending": 4200,
"totalApproved": 1800,
"totalPaid": 9500,
"recordCount": 37,
"avgCommissionRate": 8.5
}
}totalPending / totalApproved / totalPaidnumber- Sum of
final_amountfor records in each status bucket. recordCountnumber- Number of commission records in the period.
avgCommissionRatenumber- Mean of
rate_appliedacross all records in the period. agentCountnumber- Tenant summaries only — count of distinct
agent_idvalues.
Communications analytics
GET /api/communications/analytics accepts period (7d, 30d, 90d, 1y — default 30d) and type (calls, meetings, all). It aggregates the daily call_analytics and meeting_analytics tables and derives answer rate, completion rate, and average durations, plus a today quick count from communications and video_meetings.
Commerce stats
GET /api/commerce/stats returns order counts and revenue (in cents) for today, this week, and this month, plus a byProvider breakdown across connected stores (for example Shopify or WooCommerce).
#Exporting data
Anywhere you see an Export button, Olyron calls POST /api/exports, fetches up to 10,000 matching rows for your tenant, and hands them to a client-side exporter that produces CSV, XLSX, or PDF. Every export is written to the audit log.
{
"type": "deals",
"format": "csv",
"filters": {
"status": "won",
"dateFrom": "2026-01-01",
"dateTo": "2026-06-30"
},
"columns": ["name", "amount", "stage", "created_at"],
"title": "H1 Won Deals"
}| Field | Accepted values |
|---|---|
| type | leads, contacts, deals, tasks, enrollments, vendors, vendor_changes |
| format | csv, xlsx, pdf |
| filters | status, vendorId, dateFrom, dateTo (all optional) |
| columns | Optional array to restrict exported fields |
#How aggregation works & limits
- Every query is scoped by
tenant_id, enforcing tenant isolation across all reports and exports. - Dashboard metrics are computed in the browser from freshly fetched rows, so they reflect the current state each time you load or change the date range.
- Communications and marketing analytics roll up pre-aggregated daily tables (
call_analytics,meeting_analytics,landing_page_events) — expect a short lag until a day's activity is fully captured. - Role matters: on the commission summary, only org owners and agency admins can view tenant-wide or other agents' numbers; everyone else is limited to their own.