When a cold campaign's reply rate drops, most teams rewrite the email. Often the email was fine and the list changed underneath it: fewer of the people you targeted had an address anyone could find, more of the addresses bounced, and every bounced address still counted as someone you contacted. A useful KPI for lead generation starts before the first send, at the list, and follows the same people through reply and meeting to the pipeline they produced.
To run the numbers on your own market while you read, count the matches for your ideal customer profile. Counting costs nothing.
This post is about the numbers, not the search. Building the list is covered on people and company search, enriched and scored, and the plan around it is in our outbound lead generation strategy. Everything below assumes outbound: you chose the people, so the quality of the list is yours too.
Every KPI for lead generation, from list to meeting
Most lists of lead generation metrics start at replies. That skips the two numbers that set every rate after it. Here is the chain in the order a campaign runs, each with its formula and the one stage it isolates.
KPI | Formula | What it isolates |
|---|---|---|
Found rate | Work emails found ÷ people targeted | The list and the data sources behind it |
Bounce rate | People bounced ÷ people emailed | Whether the addresses were real and current |
Reply rate | People who replied ÷ people contacted | Targeting and the message, together |
Positive reply rate | Positive replies ÷ people contacted | The offer and the timing |
Meeting rate | Meetings booked ÷ positive replies | What you do after someone says yes |
Opt-out rate | Opt-outs ÷ people contacted | Whether the wrong people are hearing from you |
Cost per meeting | Program spend ÷ meetings booked | The whole program, in money |
Found rate is the one nobody publishes, because coverage is the thing being sold. Say your search returns 1,000 people and a work email turns up for 700. Three hundred people left the campaign before anyone wrote a word, and no rewrite of the opener brings them back.
Opt-out rate looks like a compliance number, and partly it is. The CAN-SPAM Act gives a US sender 10 business days to honor an opt-out request.
As a KPI it measures something else: how many people felt your email had no business reaching them. A climbing opt-out count beside steady replies usually means the list drifted away from the profile you wrote.
Open rate is missing from the table on purpose. Oneprofile adds no tracking pixels and rewrites no links, so there are no opens or clicks to count. We would make the same call for anyone. A number you cannot measure honestly ends up steering the copy toward whatever inflates it.
Which KPIs for lead generation predict pipeline
Not all seven carry the same weight. Some describe what happened, and a few tell you what is about to happen.
Replies on their own mix four different answers: yes, not now, wrong person, and stop. Positive replies are the closest early read on pipeline, because they strip the other three out. In Oneprofile, Replied counts anyone who answered and Positive counts only threads labelled positive, while the Email card counts Said no and Opted out on their own lines.
"Playing the numbers game in outreach is expensive and wasteful. A better tool lifts your reply rate far more than sending more ever will."
Utku Zihnioglu, CEO of Oneprofile
Bounce rate predicts the next campaign more than this one. Your sending domain carries its bounces forward, so a bad batch today is a quieter inbox next month. Oneprofile turns the bounce tile amber above 5% and calls that line the safe level.
Activity counts predict almost nothing alone. Emails sent, connection requests and profile views belong on a dashboard, not in a goal. On LinkedIn, a request still waiting and a profile view count nobody as contacted, since neither can be answered. An accepted request does count.
Meetings booked is the last number this post tracks. Whether a meeting happened and whether a deal closed lives in your CRM, and any outreach tool that claims to own that number is guessing at the link between them.
Cost per lead counted on found contacts, not lookups
Cost per lead comes from paid marketing, where it means ad spend divided by form fills. Outbound has no form. The lead is a person you found a working address for, so the honest formula is data spend divided by addresses found, never by lookups attempted.
The gap between those two is the misses. A tool that bills every lookup makes each found address dearer than its sticker price. In Oneprofile, a Find work email lookup that finds nothing costs nothing. One that finds an address costs up to 10 credits, charged at the price of the source that answered, and Verify email adds up to 0.8 credits an address.
That pricing changes what found rate means. With free misses, a lower found rate does not raise your cost per found contact. It shrinks the campaign instead, so you need a bigger search to book the same meetings.
Cost per meeting: one list, two sends
Say your search finds 1,000 people who fit, and Find work email returns an address for 700. You can send to all 700, or verify first and send to the 600 that come back valid. Say the same 30 people reply either way, since nobody whose email bounced was going to answer, and 9 of them book a meeting.
Send every address found | Verify first, send the valid ones | |
|---|---|---|
Find work email, 700 found | Up to 7,000 credits | Up to 7,000 credits |
Verify email, 700 addresses | None | Up to 560 credits |
People emailed | 700 | 600 |
Bounce rate | 12% (84 people) | 1% (6 people) |
Reply rate | 4.3% | 5.0% |
Data spend per meeting | Up to 778 credits | Up to 840 credits |
On paper the first column wins, by 62 credits a meeting. At $20 per 1,000 credits, that is about $1.24.
Read the other rows before you take that deal. The same email looks weaker in the first column, 30 replies over 700 people instead of 600, because 84 dead addresses sit in its denominator, so a team reading it would rewrite copy that was working. And its 12% bounce rate is more than twice the 5% line, carried by the mailbox into every later send.
What that costs in next month's replies, nobody can price in advance. We don't pretend to. That uncertainty is exactly why bounce rate stays its own KPI instead of a line folded into cost per meeting.
What is a good conversion rate for sales leads
This is where most posts print a benchmark table. We won't, and not only because we have no committed source for one. Published rates rarely say whether the denominator is people targeted, emailed or contacted, and plenty blend inbound form fills with cold email. Five replies per hundred people contacted and five per hundred people targeted describe different campaigns.
Anyway. Here is what a good conversion rate for sales leads looks like when you judge it against yourself:
Bounce rate under 5%, every time. Above it, fix the list before you judge anything downstream.
Spam complaints near zero. Google's email sender guidelines ask senders to keep the spam rate reported in Postmaster Tools below 0.1% and never let it reach 0.3%.
Positive replies rising batch over batch to the same ideal customer profile, from the same mailboxes, with one thing changed.
Meetings from most positive replies. A wide gap between the two points at your follow-up, not your list.
A good rate is one that moves when you change one thing, and that you can trace to the stage that moved it. Change the opener and the targeting in the same week and the numbers cannot tell you which change worked.
Tracking each KPI for lead generation in one place
The chain breaks when its numbers live in four tools: the list in a spreadsheet, addresses in a lookup tool, replies in a sequencer, pipeline in a deck. In Oneprofile the people you found are the same people a sequence enrols, so each KPI for lead generation reads off one list.
Found rate is the one to read before launch. Compare the addresses Find work email returned with the people you added, then add Verify email beside it.
Contacted, Replied, Positive and Bounced are the four tiles on Analytics, under Sequences. Contacted shows how many of the people you added were reached. Reply and positive rates are shares of contacted, and bounce rate is a share of the people emailed.
Opt-outs and refusals sit on the Email card as Opted out and Said no, beside Still on step 1 and Followed up. A LinkedIn card counts messages, connection requests and profiles viewed.
Which step and which sender come from the Steps table for one sequence and from Email senders, which ranks every sender worst performer first.
Pipeline comes from Reporting settings on the sequence's Overview tab. Switch on Track opportunities, give Positive reply and Meeting booked a dollar value each, and labelled threads add up to an Estimated pipeline figure for that sequence.
One catch on that last one: Meeting booked is matched by its name, so renaming the label quietly drops its value to zero. Leave it named as it came.
Email goes out from connected Google Workspace mailboxes, and replies from email and LinkedIn land in one inbox, where those labels get applied. The canvas and the inbox are on the email and LinkedIn outreach page.
The cheapest way to find your own baseline is one sequence, one ideal customer profile and one mailbox. The Free plan renews 200 credits a month for 1 seat, with up to 3 integrations, 3 tables and 100 rows per table, enough to measure found rate and bounce rate on a first batch. Build a first list and measure it free.

