Slice your data any way you like with a drag-and-drop pivot report builder. Back your decisions with sales funnels, team performance and custom reports, and export to CSV in one click.
Drag-and-drop pivot report builder, sales funnel, team performance and CSV export.
Reporting comes in two layers: fixed reports that answer the questions every sales team asks, and a pivot builder for the questions only yours asks. The fixed layer — sales funnel by stage, team performance per person, duplicate contacts, a permission-scoped dashboard — is on every plan. The builder lets you pick a dataset (leads, deals, tasks, calls, products), a row dimension, an optional column dimension and a measure (count, sum, average, min, max), filter with typed operators and AND/OR logic, group columns, colour the table as a heat map, chart it, export CSV and save it for next week. Nothing is queried by hand: the builder runs one whitelisted grouped query, so totals are exact and averages are averages of the underlying rows, not of the cells. The builder starts at Growth; deal profitability at Business.
Most CRM reporting is built to be looked at: a dashboard with eight tiles that all go up and to the right. A useful sales report is built to change a decision — who gets the next lead, which source to stop paying for, which salesperson needs help this week, which product is quietly losing money.
That is why the centre of this module is not a dashboard but a builder. The dashboard exists and is scoped to what each user is allowed to see, but the question that matters on a Tuesday afternoon is rarely one anyone anticipated when the dashboard was designed. It is "leads from source X, by stage, for the last 30 days, only for the Ankara team" — and that is a pivot, not a tile.
| Report | Shows | Answers |
|---|---|---|
| Sales funnel | Leads per stage and deals per stage, with the stage-to-stage conversion rate and deal value per stage, for a date range | Where do we lose people? Which stage is the bottleneck? |
| Team performance | Per person: leads owned, deals, deal value, tasks total and completed, calls made, for a date range | Who is carrying the load? Who is busy but not closing? |
| Duplicate contacts | Records whose phone numbers match on the last digits | Which leads are the same person twice? |
| Response times | Time from lead creation to first response, computed in working minutes against shift calendars | How long do new leads really wait for us? |
| Timesheets | Clock-in, clock-out and breaks per person; a manager view | Who was actually working when the leads came in? |
| Dashboard | Counts and lists scoped by the viewer's permissions | What is mine and what needs me today? |
Response times deserve a word. A lead created at 23:40 and answered at 09:12 the next morning is 12 minutes late by the shift calendar, not 9 hours 32. Measuring against working time is the difference between a number the team accepts and a number they argue with.
| Dataset | Dimensions | Measures |
|---|---|---|
| Leads | Source, stage, owner, pipeline, lead score, tag, country, created month or day | Count; average, min, max score |
| Deals | Stage, pipeline, created month or day | Count; sum, average, min, max value |
| Tasks | Completed or pending, assignee, recurrence, created month | Count |
| Calls | Disposition, direction, status, user, created month | Count; sum, average, min, max duration |
| Products (line items) | Product, deal stage, pipeline, created month | Quantity, revenue, line count; average, min, max price |
The list is a whitelist on purpose. You choose keys; the SQL behind them is fixed. That is what makes the builder safe to hand to every manager in the company without anyone being able to run a query you did not intend.
Every filter field has a type, and the operators follow the type:
Filters combine with AND or OR for the whole set. "Empty" and "not empty" on the same field add up to the total, which is a small thing that a surprising number of tools get wrong.
Two features exist for the moment a table has too many columns to read.
Column groups merge several column values under a name you choose: "Early" = New + Contacted, "Late" = Proposal + Negotiation. Groups are computed from the underlying rows, so counts, sums and averages stay correct, and they can be reordered by dragging — group order is column order. You can define groups before the first run; the picker shows every value the dimension can take.
Pipeline grouping happens automatically whenever a stage dimension is on an axis: stages are shown under their pipeline, in pipeline order, so a workspace with three pipelines reads as three sections rather than one long alphabetical list.
The builder runs a single grouped query and keeps, for every cell, the count, the sum, the minimum and the maximum. Row totals, column totals and the grand total are aggregated from those — sums add, counts add, minimums take the minimum, and an average is always sum ÷ count at that level.
That sounds like a detail until you compare it with a spreadsheet where the "average" column is an average of averages, and a salesperson with two deals weighs the same as one with forty. Here the row marked "Total" is the average of all the deals in the row, which is the number a manager actually means.
| Symptom | Most likely cause | Fix |
|---|---|---|
| Funnel rates look impossible (a later stage has more than an earlier one) | Leads were created directly in a later stage, or moved backwards | Expected; the funnel counts current stage. Use the builder with created-date filters for cohorts |
| Deal value is zero | Deals have no product lines | Value is computed from line items; add products to deals |
| Team report shows a person with leads but no deals | Deals are attributed via the linked lead's owner | Set the owner on the lead; deals follow it |
| A user sees fewer rows than an admin | Data scope: their role sees own or department records only | By design; check the role's data scope |
| "(none)" row or column | Records with no value for that dimension | Fill the field, or filter it out with "is not empty" |
| Saved report loads with different numbers | It is live, not a snapshot | Export CSV when you need a frozen copy |
| Plan | Funnel, team, duplicates, dashboard | Pivot builder + CSV + saved reports | Deal profitability | Activity log export |
|---|---|---|---|---|
| Starter | Included | — | — | — |
| Growth | Included | Included | — | Included |
| Business | Included | Included | Included | Included |
| Enterprise | Included | Included | Included | Included |
The fixed reports are on every plan. The pivot builder, with CSV export and saved reports, arrives with Growth. Deal profitability — revenue against cost of goods per deal — is a Business feature. See the pricing page for the full comparison and finance and commissions for the money side of reporting.
Set up your workspace in under a minute — free for 14 days.
Create your workspace