Agency Math: Charging Clients For Heatmap Insights That Don't Ship

Metricuno
July 9, 2026
5 min read
Agency Math: Charging Clients For Heatmap Insights That Don't Ship — When client dev queues stall implementation, heatmap seats become sunk cost. The breakeven math for which clients get a replay seat — and which don't.
Quick answer

A breakeven model for CRO agencies: which clients justify a paid heatmap/replay seat, and which get deprioritised to free-tier observation when the dev queue can't ship the insights.

Quick answer

Provision a paid heatmap/replay seat only for clients whose dev-queue throughput ships at least one heatmap-derived change per quarter. Everyone else drops to free-tier or shared-account observation. Rule of thumb: if the seat cost exceeds 3% of the retainer, or the client hasn't shipped a CRO ticket in 60 days, kill the seat.

Definition
Agency operations

Agency Math: Charging Clients For Heatmap Insights That Don't Ship

The retainer-margin problem when an agency pays per-client heatmap seats but the client's dev queue never implements the findings.

A CRO agency typically carries one heatmap or session-replay seat per active client. That seat costs €30–€90/month depending on traffic tier. The margin problem starts when the client's engineering queue is blocked: the agency still pays the seat, still runs the analysis, still writes the recommendations — but nothing ships, so no lift materialises, and the retainer never uplifts. Over a year, ten stalled clients quietly consume €4k–€10k of gross margin. The scenario forces a triage decision: which clients get a paid seat, which get downgraded to free-tier or on-demand observation, and which get the seat cost billed through explicitly.

Most CRO agencies price retainers on strategy hours, not on tooling. Tools are bundled — you eat the seat cost and hope the lift you produce covers it several times over.

That math holds when implementation ships. It breaks when the client's dev queue is six sprints deep and your third heatmap report of the quarter is still in the backlog.

Why the seat cost becomes sunk cost

A heatmap seat only pays back when three things line up: the recording captures a real friction point, you write a hypothesis, and the client ships the change. Break any link and the seat is pure overhead.

The link that breaks most often is shipping. A Shopify apparel client with a two-person dev team, a Klaviyo migration in flight, and a peak-season code freeze will not touch your cart-page recommendation until Q2. You still paid for the seat every month in between.

The silent-churn tell

If a client stops asking follow-up questions on your heatmap deliverables — no clarifications, no Loom replies, no ticket links — the insights aren't being read. That's your 30-day signal to downgrade the seat before the next renewal.

The breakeven model

The break-even question is straightforward. A seat is worth carrying if the incremental gross profit from shipped experiments — over a 12-month window — exceeds the seat cost plus the analyst hours spent producing insights.

For a €5k/month retainer, a €60 seat is 1.2% of monthly revenue. Fine on paper. But that seat also costs 3–5 analyst hours per month to actually use. At €80/hr fully-loaded, the true carry is closer to €300–€460/month, or 6–9% of retainer.

Charge the equivalent of a 5% uplift on a €150k/year e-commerce client and you cover the seat 15x over. Ship nothing and you burn the analyst hours plus the seat with no offsetting revenue. The trigger to pull the seat isn't tool cost — it's implementation velocity.

Seat economics by client velocity tier

Benchmark

Annual gross margin per client by dev-queue velocity (assumes €60/mo seat, 4 analyst hrs/mo at €80/hr, €5k/mo retainer)

Client velocity tierTickets shipped/quarterAnnual seat + labour costAttributable lift (annual)Net margin contribution
Fast — ships weekly8-12€4,560€18,000-€36,000€13,440-€31,440
Steady — ships monthly3-4€4,560€8,000-€14,000€3,440-€9,440
Slow — quarterly1€4,560€2,000-€4,000-€2,560 to -€560
Stalled — zero shipped0€4,560€0-€4,560

The table makes the triage obvious. Slow-tier clients are break-even at best; stalled clients are pure loss. If a third of your book is in the bottom two rows, you're subsidising them with margin from the top row — and that's before you account for opportunity cost on analyst hours.

How to triage — the three moves

Move one: consolidate. Replace per-client Hotjar seats with a single agency-tier account that scopes recordings by domain. This is the play covered in the consolidated-tool math — one seat, many clients, dramatically lower per-client carry.

Move two: downgrade stalled clients to free-tier or ad-hoc observation. Turn recording on for two weeks around a specific question, pull the insight, turn it off. No permanent seat, no monthly drag.

When to charge the seat through explicitly

For clients you want to keep on a paid seat despite slow shipping velocity, line-item the tool in the SOW. €90/month passed through, marked as "CRO observability — tool cost". This converts sunk cost into a neutral pass-through and makes the shipping-velocity conversation easier at renewal.

This is also where the heatmap tool payback period math becomes a client-facing artefact, not just an internal one. If the client sees the €90 line item, they're likelier to prioritise a dev ticket to justify it.

Frequently asked

Frequently asked questions

Two triggers: the client hasn't shipped a CRO-attributable change in 60 days, or the seat + analyst-hour cost exceeds 8% of the monthly retainer. Either one warrants a downgrade conversation at the next renewal.

Yes, and for slow-shipping clients you should. Line-item it in the SOW at cost or with a modest markup. It reframes the tool from agency overhead to client observability spend and often unblocks the shipping conversation.

An agency-tier account with domain-scoped recording covers many clients on one seat. The math is worked out in the consolidated-tool play — typical savings are €2k-€6k/year for a 15-client book. It's the single highest-margin move an agency can make on its stack.

The standard payback model assumes insights ship. The agency version has to account for the shipping probability — a heatmap tool with a 12-week payback on paper has infinite payback if the client's dev queue never touches the recommendation.

GA4 behaviour flow, exit-page reports, and native Shopify or WooCommerce analytics cover most directional questions. You lose session replay and rage-click detection, but for a client shipping one ticket a quarter, that's fine.

No — you still do the quarterly review, just from aggregated analytics instead of recordings. Turn on paid recording for a two-week diagnostic window when a specific question surfaces, then turn it back off.

Show the ticket-shipped count per quarter alongside the retainer spend. Frame it as "we've identified X hypotheses, Y have been implemented". Most clients don't realise the gap exists until you show them the number.

Only if you provision it badly. Enterprise-tier tools support workspace-per-client isolation. Metricuno's agency plan scopes recordings and dashboards per domain by default, so an analyst assigned to one client can't see another's data.

That's fine — line-item it in the SOW at pass-through cost or with a 20-30% markup. The margin problem only exists when you're eating the cost silently. Explicit billing solves it either way.

A/B testing makes the seat even more valuable when clients ship, and even more wasteful when they don't. Test velocity amplifies both outcomes. Same triage rule applies — but the fast-tier margin gets larger and the stalled-tier loss gets worse because you're now paying for a testing tool too.

See Metricuno on your data

Bring your stack — Google Analytics, Stripe, a CRM, anything — and we'll walk through the metric tree that turns your funnel into one number.