Skip to content
Reports

Using the Sales Matrix pivot table for cross-tab analytics

Cross-tab your shop's quotes and revenue two dimensions at once, drill into the quotes behind any cell, and save snapshots to compare over time.

4 min read

Watch: How to build a sales pivot table in SalesThumb (0:42)

The Sales Matrix pivot table — grouped under Reports and titled "Sales analytics" in the command palette, live at /app/reports/sales-analytics — lets you slice your shop's numbers two ways at once instead of reading one report at a time. Pick a row dimension, a column dimension, and a metric, hit Compute matrix, and you get a heat-mapped grid where every cell shows that row/column pairing's value for the time window you picked. Click any cell to see exactly which quotes are behind the number.

One naming note up front, since it can trip people up: this is a different "Sales Matrix" from the in-store kiosk presentation flow, which uses the same Good/Better/Best tiering to sell window tint, ceramic coating, PPF, and flat glass (plus any shop-defined "Additional Services" categories) to a customer in person. Same name, unrelated tool — this one is a pure analytics view under Reports. Nothing you do here changes pricing or presents anything to a customer. You'll find it on the Reports page under Sales as "Sales Matrix," from the command palette (search "sales analytics" or "matrix"), or from a "Recent matrix" card that appears on your main dashboard once you've saved at least one snapshot.

Picking your axes

You choose four things before computing anything: a Rows dimension, a Columns dimension, a Metric, and a Window. The four dimensions available for rows and columns are Service category, Customer segment, Channel, and Vehicle type — you can't put the same one on both axes; the picker greys out whichever dimension is already selected on the other side, and the Compute matrix button stays disabled too if you somehow land on a match. Metrics are Quotes, Invoices, Revenue, Close rate, Avg ticket, and Margin %. Window options are Last 7 days, Last 30 days, Last 90 days (the default), and Last 12 months.

Reading the grid

Each cell shows the metric value in bold with a small "n=" count underneath (the number of quotes behind that cell), shaded on a green heat scale relative to the highest-value cell currently on screen — the darkest cell is your best-performing pairing at a glance. Click a cell (empty cells aren't clickable) to open a drill-down dialog listing up to 10 quotes for that intersection, sorted by total, each linking straight to the quote record with its quote status, invoice status, and totals. If nothing computes for your window, you'll see "No data in this window. Try widening to 90 days or 12 months."

Saving and comparing snapshots

Once you've computed a matrix, a second control row appears letting you optionally label and Save snapshot, which persists that exact grid. Saved snapshots show up in a "Recent snapshots" list at the bottom of the page, each with its own Compare button; picking one in the Compare to dropdown overlays it on your current grid, and every cell then shows a green "+" or red "–" delta versus that saved point in time. Once you've saved at least one snapshot, a "Recent matrix" card also shows up on your main app dashboard with a shortcut back into this page.

Gotchas worth knowing before you trust a number

Revenue only counts line totals from invoices that are PAID or PARTIAL — a cell can show a healthy quote count and still read $0 revenue if none of those quotes were ever invoiced, or the invoice never got paid. Margin % is currently a placeholder: there's no cost-of-goods tracking wired in yet, so every cell's margin is calculated as a flat 40% of its revenue rather than your shop's actual cost-adjusted margin — treat it as a stand-in, not a real number, until that's built out.

Customer segment buckets are: VIP (lifetime spend of $5,000 or more, computed live from completed payments), REPEAT (2 or more orders), NEW (customer record created within the last 90 days), and everything else falls into DORMANT. Channel buckets are derived by keyword-matching your customer's recorded source text — blank sources land in UNKNOWN and anything that doesn't match a known pattern lands in OTHER (the grid shows these as the plain, all-caps bucket keys, not a friendly label). Vehicle type always buckets fleet customers as FLEET regardless of make; otherwise it maps a short hardcoded list of makes to TRUCK/LUXURY/EXOTIC/EV, and anything else falls back to a model-year bucket (MODERN/MIDLIFE/STANDARD) or UNCLASSIFIED if there's no make on file.

Like the rest of Reports, computing, saving, and drilling into the matrix requires the "View financial reports" permission (Owner, Admin, and Manager by default).

Need more help?

The in-app help widget routes directly to our team.

General product and business information, not legal, tax or financial advice.