Analytics module
The Analytics module is the cross-cutting view — KPIs from any other module, custom queries, anomaly surfacing, and the home for the cross-org benchmarks feature (cloud only).
Where CRM and Content own specific business domains, Analytics is the lens you put on top of all of them.
KPI tracker
Pre-built KPIs that work out of the box once you've connected the relevant modules:
| Category | KPI |
|---|---|
| Pipeline | New pipeline created · Win rate · Average deal size · Days to close · Pipeline by source |
| Content | Posts per week · Engagement rate · Top-performing topics · Calendar fill rate |
| Activity | Calls per AE · Emails sent · Meetings held · Response rate |
| Cross-domain | Content-to-pipeline attribution · Engagement-to-conversion lag · Churn precursor signals |
Each KPI is a typed query against the knowledge graph. You can:
- Pin to dashboard
- Set a target (numeric or percentage)
- Set an alert threshold (notify when above/below)
- Drill into the source data
Custom queries
For everything not covered by pre-built KPIs, the Custom Query builder lets you compose your own. The builder is two-tiered:
No-code
A guided form: pick an entity (deal / contact / post / etc.), filter, group, aggregate. The form translates into a typed query the platform runs against the knowledge graph. No SQL required.
SQL (admin, cloud Scale+)
For complex analyses, an embedded SQL editor with autocomplete
against the safe-read view (reporting.* schema, which excludes
PII and sensitive columns). Read-only — you can't write data this
way.
Both flavors save into the Custom Query library, addressable from dashboards.
Charts
Each KPI / custom query supports several visualizations:
| Chart | Best for |
|---|---|
| Line | Time series — KPIs over weeks/quarters. |
| Bar | Categorical comparison — win rate by segment. |
| Funnel | Stage-by-stage drop-off — pipeline conversion. |
| Heatmap | Density — engagement by time-of-day. |
| Table | Drill-in detail. |
Charts pick a default based on the query shape; you can override.
Anomaly surfacing
The Analytics module runs continuous anomaly detection on every KPI. Mechanism:
- For each KPI, fit a rolling baseline (default: 4-week trailing).
- Compute current period's value.
- If z-score > threshold (default 2.0), emit an anomaly event.
- The event becomes a Today card the next morning and a one-time in-app notification.
Anomalies are direction-aware — a sudden win-rate spike is flagged just like a drop. Each anomaly links to the underlying data + a suggested next investigation ("look at deals closed this week with stage history < 7 days").
Cross-org benchmarks (cloud Scale tier and up)
The single feature impossible to run solo: how do my numbers compare to peers in my industry?
- NAICS-segmented — you're compared against the population of consenting tenants matching your NAICS 2-digit industry code.
- k-anonymous — comparisons are only shown when there are at least 5 peers in the cohort. Below 5, the panel surfaces a "not enough peers yet" message and your data isn't aggregated.
- Opt-in — Settings → Tenant → Benchmarks → enable consent. You contribute aggregates only (never raw rows); you can revoke any time.
- Refreshed weekly — Friday cron job recomputes percentiles.
KPIs available in benchmarks: pipeline velocity, win rate, avg deal size, engagement rate, response rate. More land each quarter based on which KPIs have enough cross-cohort coverage to be meaningful.
Self-host can't run benchmarks — there's no peer cohort to compare against. The flow is gated cloud-only.
Cross-module rollups
Where Analytics gets genuinely interesting: queries that span modules.
Examples actually queryable today:
What was the average time-to-close for deals whose primary contact
engaged with our content at least 3 times during the sales cycle?
Which content topics correlate with above-baseline win rate over
the next 60 days?
Of our currently stuck deals, how many have a primary contact who
hasn't engaged with content in the last 14 days?
These work because the knowledge graph treats deals, contacts, posts, and activities uniformly — a single typed query joins them without leaving the graph layer.
Performance budget
Custom queries run against materialized views maintained by a nightly cron job. So even complex multi-module joins run in sub-second on the dashboard.
KPI tracker refreshes are incremental — only KPIs whose underlying data changed are recomputed. The cron job tracks invalidation events the same way the dashboard surface does.
For ad-hoc queries that don't have a materialized view (rare — the matview set covers ~95% of queries by request volume), the runtime falls back to direct graph queries with a generous query timeout.
Export
CSV / JSON export from any chart, KPI, or table. Exports respect the tenant's RLS contract — you only export what your role can already see.
API endpoints under /api/analytics/ mirror the same data; useful
for piping KPIs into your own BI tool.
Read next
- Cross-org benchmarks — cloud-only inventory + reasons.
- Analytics API — dashboards / reports / goals / custom metrics endpoint reference.