Knowing it leaks is the easy part. Closing the loop is the job.
Name the step losing the money, watch the friction sessions from that window, ship the change behind a flag, and prove the number moved — in one system, with no exports and no handovers between four tools.
- No new instrumentation
- Reversible by default
- Nothing ships without approval
Most teams get one step in. Then the loop breaks.
“We know it leaks. We do not know where.”
Four bars on a chart and no callout, so the conversation goes round the table on instinct until somebody louder wins.
“Is it broken, or just badly worded?”
Nobody has watched anyone fail the step, so the fix is a guess — and half the guesses ship as redesigns nobody needed.
“It feels better now.”
The change went out with no measurement attached, so "better" is a vibe you cannot put in the board deck or defend next quarter.
Joint 3 sealed
0 lost here.
2,390 everywhere else.
Payment → Confirm loses more than the other two joints put together. Fixing the first two first is the mistake the drawing is there to stop.
Four steps. One system. No handovers.
This is the whole job, in the order it actually happens. Every step reads the same events as the one before it, which is the only reason the last one can prove anything about the first.
The step losing the money, named.
Build the funnel from events you already send, or open the one Flowgrid built on day one. The stage with the biggest fall-off is called out — you are not left doing the subtraction between four bars.
- Any event you already send, no new instrumentation
- The losing step flagged with its fall-off in plain numbers
- Segment the same funnel by device, plan or campaign
Biggest drop — 31% lost here · watch the friction sessions
The sessions from that window, already waiting.
The losing step opens the recordings from the window it lost in, filtered to the ones with friction in them. Rage clicks, error bursts and abandoned forms are labelled as they arrive, so you are watching the twenty that matter.
- Opened from the chart, filtered to friction — not searched by timestamp
- Friction detected for you — rage clicks, errors, abandons
- Comment on a range of the timeline and tag whoever owns it
- AKRage click
Checkout · 2m 40s
Desktop · Chrome · London
- BJForm abandon
Signup · 3m 19s
Desktop · Chrome · Berlin
- CIError burst
Pricing · 4m 14s
Desktop · Chrome · Austin
- DHForm abandon
Settings · 5m 50s
Desktop · Chrome · Toronto
Behind a flag, so it is reversible.
Change the page behind a feature flag — or let the agent open the pull request. Either way it goes out to a percentage first, and turning it off reaches users in seconds rather than at the next deploy.
- One call to flag a change, or no code at all for copy and layout
- Percentage rollouts, held back per segment or per plan
- The agent can open a PR; a person still merges it
Measured against goal · Activation
“It feels better” becomes a number.
The fix runs as an experiment against the same goal your board reads, so the result is in activation and retention rather than in clicks. Keep it only if the number agrees.
- Measured against the goal you already defined
- Significance reported plainly, corrected for multiple variants
- Roll out to everyone, or roll back in seconds
- Visited
- 100%
- Engaged
- 81%
- Checkout
- 72%
- Paid
- 37%
Moving this fast only works if every step is reversible.
Opened by the agent · merged by a person
Illustrative — the change, the approval and the way back are one record.
Nothing ships itself
The agent can open a pull request and stop there. A person reviews and merges, every time, and the approval is recorded.
Reversible by default
Every change in this loop goes out behind a flag, so undoing it is a toggle rather than an incident and a deploy.
One definition of better
The experiment reads the same goal as your dashboards, so nobody gets to declare victory against a metric they picked afterwards.
- Zero exports
- The funnel, the sessions, the flag and the experiment all read one event stream. Nothing is copied between tools.
- Seconds
- To roll a change back. The served bundle is invalidated on the flip, so undoing it does not wait for a deploy.
- One goal
- The experiment is judged against the same definition your board reads, so “it worked” means one thing.
Most of the week this loop takes is waiting for traffic. None of it is waiting for another team.
One loop, or four tools and three handovers.
The tools are not the problem — the gaps between them are. Every handover is a week and a meeting.
What you are actually trying to find out.
- Which step is costing us the most revenue right now?
- Is it broken, or just badly worded?
- What are people doing in the ten seconds before they leave?
- Did the fix actually work, or did traffic just change?
- How much is this leak worth per month?