Cross-Filtering
Click a bar and every sibling on the board re-runs with that value folded into its own conditions. The next question gets asked by pointing at the answer, and undone by clicking the same bar twice.
One click, and the board follows
1 of 32 conditions- Revenue by regionBARemittingdealsaccounts
- Deals by stageCOLUMNreceivingdealsaccounts
- Pipeline by tierDONUTlisteningdealsaccounts
- Contacts by stagePIElisteningcontactsdoes not carry accounts
ANDthe widget's own conditions, unchanged
ANDdeals.stage in (Proposal, Negotiation)accounts.region = EMEA
AND( ORaccounts.tier = Enterprisedeals.amount > 250,000)accounts.region = EMEA
ANDcontacts.lifecycle = Customeraccounts.region = EMEA
?crossFilters=eyJ… · in the client key and the server key
Two people looking at different selections of the same board never read each other's numbers.
Product figures from the platform’s own defaults - not customer averages
How it works.
The click broadcasts one leaf
State is keyed by the widget that emitted it, so a chart contributes a single condition at a time. Clicking a different point on that chart replaces its contribution. Clicking the point already selected removes it. A chip appears above the canvas for each live one, and clearing is a click on the chip.
Listening is on unless it is turned off
Every widget accepts by default and never accepts its own broadcast. On the way to the server the conditions are pruned against the receiving widget's module list, so a condition naming a table that widget does not join is dropped rather than failing the query.
The merge happens on the server, and it respects your brackets
Incoming leaves join the authored tree at the top under and. If the authored root was or, the whole of it is wrapped as a single child first, so a two-branch alternative does not silently collapse into a conjunction.
Each combination caches on its own
The encoded set travels as a query parameter and also sits in the client cache key and the server cache key. Two people looking at different selections of the same board never read each other's numbers.
One moment in every number.
Every number passes through the same seven. Cross-Filtering is the lit one, and everything either side of it is a different page in this category.
- 01Query
what is asked, and of what
- 02Shape
the measure and the dimension
- 03Draw
the visual chosen for that shape
- 04Arrange
where it sits on a dashboard
- 05Filter
narrowing it after the fact
- 06Drill
going from the number to the rows
- 07Share
who else gets to see it
The specifics.
7 facts- What a click sends
- One leaf: the dimension field the mark stands for, the value sitting on it, and the identifier of the widget it left
- Silent visuals
- Gauges and single-figure cards, which have no row under the pointer to contribute in the first place
- Operator on emit
- Equals. The wire format also accepts not-equals and in, and anything else falls back to equals
- Listening
- Accept-all by default, and a widget can instead be given the named list of fields it will take a condition on
- Dropped
- Any condition naming a module the receiving widget does not carry
- Bounds
- Thirty-two conditions, four kilobytes of encoded payload
- Not the same as
- Filter Trees, which is the condition an author wrote into the widget and which no click can remove
What this is assembled from.
A number on a dashboard was built somewhere before it was drawn. These are the parts it is made of.
More in Reporting & Analytics
11 capabilitiesSeven data shapes, twenty-two visuals, shareable without the portal.
A widget declares a data shape; the visual is a separate choice. Swap between the visuals valid for that shape and the query does not run again.
Hand a board to a team or a CRM role, at read or at edit, by the person who built it. Roles outlive people, which is why a share points at one, not a mailbox.
Cross one dimension against another with row, column and grand totals - the shape a finance team asks for when a chart will not settle the argument.
Colour a number by the rule that matters - under target, over threshold, inside a band - so a dashboard reads correctly from across the room.
Draw the target on the chart itself, so performance is read against the number that was promised rather than against the shape of the bars.
Put a window against the one before it, or against the same window a week, month, quarter or year back, on a card as a difference or a chart as a series.
Group by day through year, by equal-width bands, or by breakpoints you set, each band carrying a sort key so the axis reads in bucket order.
Six palettes including a print set, pinned per widget, each carrying eight series colours plus the axis, grid, card and tooltip colours drawn around them.
Thirty-two bytes of entropy, an expiry you choose, revocation on the spot, and only the hash kept at rest, on a board that draws its figures for a reader.
Name a slot at the call site and one authored widget answers it everywhere inside the product, computed against the records of whoever is signed in.
Total calls, answered rate, average duration and missed calls, split by direction and outcome, over the call records rather than a sampled export.
The rest of the platform.
Five more categories, all on the same record and the same bill. Each card names three of its capabilities, so you can tell from here whether it is worth opening.
Reporting & Analytics
See cross-filtering on your own floor.
Thirty minutes, your numbers and your data. We will set cross-filtering up live and you can decide from the thing itself rather than from this page.
14-day trial · no card · migration included