Link Leads Blog · August 10, 2026

Cost per contact spreadsheet: track aged insurance lead campaigns batch by batch

Cost per lead is fixed the moment you buy — it's the same $0.015 whether the batch pays off or not. Cost per contact and cost per bound policy are the numbers that actually tell you whether to buy that state and vertical again. Here's the tracker.

Cost per lead isn't the number that matters

Every agent working aged data knows their cost per lead — it's on the invoice, and it doesn't change once you've bought the file. What it doesn't tell you is anything about the batch itself: whether the Florida auto pull outperformed the Texas ACA pull, whether last month's texting sequence beat this month's, or whether a given vertical is worth buying again next quarter. That information only shows up if you log it, and most agents don't — they buy a list, run a campaign, and move on to the next one with nothing but a gut feeling about how it went.

A tracker fixes that. It doesn't need to be complicated — one row per batch, six or seven columns, updated as spend and results come in. What it buys you is a real answer to "should I buy this state and vertical again," instead of a guess.

The columns a tracker needs

Two formulas do the real work

Once those columns are filled in, two calculated columns turn raw numbers into a comparison:

For the cost side of these formulas — what a list, a texting sequence, and a scrub actually run — see the math on texting 10,000 aged leads, which breaks down a single campaign's spend line by line. That post models one batch in detail; this tracker is what turns a series of those batches into a comparable record over time.

Count a contact correctly, or the sheet lies to you

The most common mistake in a tracker like this is logging sends or dials in the contacts column instead of actual replies and connected calls. A batch that sent 10,000 texts and got 100 replies has a very different cost per contact than one credited with 10,000 "contacts" because that's how many went out. Keep the definition strict: a contact is a two-way exchange, not an outbound action. If you're also tracking how many calling attempts a record takes before it's retired from the queue, the day-by-day calling schedule post covers how many attempts is reasonable before a record is dead — that attempt count belongs in a separate column if you want it, but it isn't a contact until someone answers.

Compare batches, not totals

A single row tells you almost nothing — one batch's cost per bound policy can swing wildly on two or three closes either way. The tracker earns its keep once you have four or five batches sitting side by side and can sort by cost per contact or cost per bound policy. Patterns that don't show up in any one campaign show up fast across a handful: a state that consistently contacts cheaper than the others, a vertical that converts contacts to bound policies at a noticeably higher rate, a texting sequence that outperforms the calling-only batches on the same list.

Use that comparison to decide the next order, not the current one. If auto in one state is consistently landing a lower cost per contact than ACA in another, that's the signal to size the next pull toward the winner — not to abandon the loser after one batch, but to weight future spend toward what the sheet actually shows working.

Review monthly, not campaign by campaign

Weekly or per-batch review is too noisy to act on — a slow week doesn't mean a state is dead, and a hot week doesn't mean it's guaranteed. Roll batches up into a monthly view instead: total spend, total contacts, total bound policies, blended cost per contact and cost per bound policy for the month. That's the number that should actually change how you buy next month — which states to request again, which vertical to lean into, and how big the next pull should be.

Build the tracker around lists you can actually compare

A tracker only works if the batches in it are comparable — same $0.015/lead pricing, same field layout, pulled the same way each time, so the only thing changing row to row is state, vertical, and volume. Every list from Link Leads comes filtered by state and age band in the order builder, so a batch is exactly what you asked for and nothing else to normalize before it goes in the sheet. 10,000 leads is $150, and code PACT takes 20% off your first order. Start with the free 100-row sample to see the fields before you build your first row, or head to the order builder to pull the batch that starts the tracker.

These are aged data leads (not consented insurance-form leads) and are not DNC-scrubbed. Buyers are responsible for DNC scrubbing and dialing/texting compliance.