Skip to content
Revenue operations

Cost per opportunity, with a denominator you can defend

How do I work out what B2B contact data costs per opportunity?

RevOps owns two numbers here: what the data costs, and whether it is clean when it lands. Cuvy charges one credit when it hands over an address for a person, and nothing for a miss, a retry or a role mailbox — so the count on the invoice is the count of people reached. One shared balance, no overage, and no seat arithmetic to maintain.

Billing unit
One person, once, ever
Charged for a miss or a retry
Nothing
Reconciles against
People added that month
API access
Pro and above

50 addresses free every month · no card

Three numbers

Unit price, volume curve, pooling

The three things that decide what this line item does to a quarterly forecast.

$0.0098
an address on the $49 plan

5,000 addresses a month. Advertised and realised are the same figure here, because the people we cannot find are not on the bill.

5.8×
cheaper per address on Scale than on Starter

The ladder is priced on volume rather than on headcount, so moving up is an arithmetic decision rather than a licence negotiation.

1
balance, whatever the seat count

Growth carries 2 seats, Pro 3, Scale 5 — all drawing on the same pool, so utilisation is one number instead of five.

The model, not the vendor

Per person, against per attempt

Same thousand people, same search, two ways of counting what happened.

Per-person billing compared with per-attempt billing over one run of a thousand people
RowCuvyPer-attempt billing
A run of 1,000 people, 740 of whom have a findable address740 charged1,000 charged
The other people on that run260 returned, named, unbilled260 spent lookups
Three addresses found for one personOne creditPriced per record returned
The same person again next quarterFreeAnother lookup
Going past the planThe run pauses and asksAn overage line
What finance ends up dividing byPeople reachedLookups attempted
Per-attempt billing is a pricing shape rather than a particular product: anywhere the unit is a lookup instead of a person, the arithmetic behaves like the right-hand column. The left-hand column is the four rules on the billing page, and 740 is a thousand people at the published hit rate of 74%.
Hygiene

What keeps the CRM worth reporting on

Cost is half the job. The other half is what the spend puts into the database.

One credit, one person, one record
The number on the invoice and the number of humans your team was handed a way to reach are the same number. That is the only version of this line item that survives being divided by anything.
Stale is a cost too
Job-change monitoring flags the contacts who have moved, and the address at the new company is found once rather than billed as a fresh person. The alternative is learning your bounce rate from a campaign report.
Unused is not written off
Monthly credits carry into the next month up to twice the allowance, and packs bought outright never expire — so a procurement cycle that lands in the wrong month does not become wasted budget.
The ops surface

The parts nobody in a sales seat ever opens

The API arrives on Pro. It carries the same credit rules as the extension and the same cost preview before a batch spends anything, which means a job you schedule against the API cannot behave differently from a run a rep starts by hand — the thing that usually turns a small automation into an unexplained invoice.

Export history, also on Pro, keeps the runs themselves, so a reconciliation is a lookup rather than an archaeology exercise. Team roles decide who in the workspace may spend, which is the control worth setting on day one rather than after the first surprise. And where a finance team needs paperwork instead of a card, that goes through sales.

None of this requires a data warehouse project. An API call per finished run and a CSV per list is the whole integration for most teams, and the deduplication against contacts your CRM already holds happens on the way out rather than in a job you have to write.

Questions

What operations asks that nobody else does

How do I reconcile the invoice to the contacts we actually added?

One credit is one person, so the credit count on the invoice is the number of people the team was handed an address for. Export history on Pro keeps the runs that produced them, which is the join between an invoice line and a set of records. Misses, retries and role mailboxes never reach the invoice at all, so there is nothing to subtract before the numbers agree.

Two reps look up the same person in the same month. How many credits?

One. The charge is recorded against the person and the workspace, so the second lookup returns the address and adds nothing to the invoice. That is what makes the line reconcilable: credits spent in a month equals people added in that month, with no adjustment for how many reps touched each one.

What is the most this line item can cost us in a month?

The plan price, plus any top-up pack somebody chooses to buy. There is no overage, so the ceiling is the credits already paid for rather than an open line on the card, and nothing tops itself up on its own. What does not exist is a per-person cap: roles decide who may spend at all, and every credit records who spent it, so a heavy month has a name on it rather than a limit that stopped it.

What does the invoice line actually say?

One monthly subscription line for the plan, plus a line for each top-up pack bought that month. There is no overage line, because there is no overage, and no per-seat line, because the seats come with the plan. The credits the plan granted are the number you reconcile against people added.

Does the API cost extra per call?

No. An API lookup bills exactly like one from the extension: one credit for a person we hand an address for, nothing for a miss, and no per-call fee or separate API plan. A batch tells you what it would cost before it spends, the same as a run in the browser. The API is on Pro and above.

How do we stop single-source addresses entering the CRM as though they were confirmed?

They arrive in their own file, labelled with the one sighting that produced them, and the confirmed set exports separately — so what you point at the CRM is a decision rather than a default. Teams that want them anyway usually land them as leads with the source carried through, which keeps the distinction visible downstream.

What denominator should we use for cost per opportunity?

Credits spent over opportunities created in the same window. It works here because the numerator counts people rather than attempts: no retries inflating it, no charge for people nobody could find, and no second charge when two reps reach the same person. Cost per usable address is simpler still — plan price divided by allowance, with no wastage factor to apply.