How to Track Lead Generation Results (4 Simple Metrics)
Most small teams track lead generation the same way: not at all, until someone asks how the quarter is going and there is nothing to point at except a vague feeling that things are "picking up". Then comes the overcorrection — a CRM with fourteen custom fields, a dashboard nobody opens, and three hours a week feeding a system that answers questions you never asked.
You need four numbers. They fit in one spreadsheet, they take twenty minutes a week to maintain, and together they tell you whether to keep going, change the message, or change the market. Everything else is decoration until you are doing several hundred outreach touches a month.
The four numbers that matter
Pick metrics that map to a decision you can actually make on Friday afternoon. These four do:
1. Leads added per week
How many new, contactable companies entered your list this week. "Contactable" is the load-bearing word: a company with a name and no email, phone, or social handle is not a lead, it is a note. Count only rows you could message today.
This is your input volume, and it is the metric most people skip because it feels like busywork rather than results. It is not. When pipeline dries up eight weeks from now, the cause is almost always that list building stopped six weeks ago. Watching this number lets you see the drought before it arrives.
A realistic target for a solo founder: 50–150 new contactable leads a week, depending on how tight your niche is. If you are pulling 400 a week and your reply rate is 1%, you are not scaling — you are wasting effort on the wrong people.
2. Reply rate
Replies divided by first-touch messages sent, measured per channel. Not opens. Not clicks. Replies — a human typed something back, even if it was "no thanks".
Count negative replies. This is the single most common tracking mistake I see: people log only positive responses, which means a message that generates 20% "not interested, wrong timing" looks identical to a message that generates total silence. They are completely different situations. Silence means your targeting or your subject line is broken. Rejection means you are reaching the right people with the wrong offer — a much cheaper problem to fix.
Rough benchmarks for cold B2B outreach in 2026, first touch, small volumes, personalized: email 3–8%, WhatsApp in markets where it is the business channel 15–30%, LinkedIn DMs 5–12%. If your email reply rate is under 2%, stop sending and fix the list or the message. Volume will not save you.
3. Meetings booked per week
A meeting is a scheduled call with a decision maker. Not "they asked for a brochure". Not "we're chatting on WhatsApp". A slot on a calendar.
This is your one honest output metric before revenue arrives, and it lags your outreach by one to three weeks — which is exactly why you need the two metrics above. Meetings tell you what happened; leads and replies tell you what is about to happen.
4. Cost per meeting
Total spend for the period divided by meetings booked. Include tool subscriptions, data or lead sourcing costs, any freelancer hours, and — this is the part everyone omits — your own time at a realistic hourly rate.
Omitting your own time is how people convince themselves that a channel costing $40 a month in tools is "basically free" while eating twelve hours a week. At even $50/hour, that channel costs roughly $2,440 a month. Price your hours and the ranking of your channels changes overnight.
Once you have cost per meeting, you can compare things that otherwise look incomparable: manual LinkedIn outreach against a paid list against a lead search tool against referral asks. And you can sanity-check the whole operation — if a closed deal is worth $3,000 and you close one in five meetings, any cost per meeting above $600 means you are working for free.
What to stop tracking
- Email open rates. Privacy proxies and image blocking made them noise years ago. A 60% open rate on a campaign with two replies tells you nothing useful.
- Impressions, followers, page views. Fine as long-term direction indicators, useless for a weekly decision.
- Total leads in the database. A cumulative number that only goes up cannot tell you whether this week was good.
- Elaborate lead scores. Below a few thousand leads you can eyeball fit better than any weighted formula you invent.
The spreadsheet, tab by tab
Two tabs. That is the whole system. Google Sheets or Excel — it does not matter.
Tab 1: Leads
One row per company. Columns, in this order:
- Company — name.
- Contact — email, phone, or profile URL. One primary channel per row.
- Channel — email / whatsapp / linkedin / phone. Use a dropdown so it stays clean.
- Source — where the lead came from: maps search, registry, referral, inbound, event. This is what lets you kill unproductive sources later.
- Date added — the date you added the row, not the date you contacted them.
- First touch — date of your first message. Blank means not contacted yet.
- Follow-up 1 / Follow-up 2 — dates. Two follow-ups, then stop; the third rarely earns its cost.
- Reply — blank / positive / negative. Three values, no more.
- Meeting — date, or blank.
- Outcome — blank / won / lost / nurture.
- Notes — one line. If you need a paragraph, you need a CRM, and you are not there yet.
Filling this by hand is where most systems die. If you are building lists from maps, directories and the open web, export the contact data straight into these columns instead of retyping it — this is exactly the job a lead search tool should do for you, and JustLeadIt exports search results in a shape you can paste into this sheet without cleanup. Whatever tool you use, the rule stands: if adding a lead takes more than ten seconds, you will stop adding leads.
Tab 2: Weekly rollup
One row per week, seven columns: Week starting, Leads added, Messages sent, Replies, Reply rate, Meetings, Spend. Add two calculated columns: Cost per meeting and Meetings per 100 messages.
Formulas, assuming your Leads tab is named Leads and dates live in the columns above:
- Leads added: =COUNTIFS(Leads!E:E,">="&A2,Leads!E:E,"<"&A2+7)
- Messages sent: the same COUNTIFS over the First touch column, plus the two follow-up columns.
- Replies: COUNTIFS on the Reply column for anything not blank, within the week.
- Reply rate: =IFERROR(D2/C2,0), formatted as a percentage.
- Cost per meeting: =IFERROR(G2/F2,"—").
That is it. Twelve columns on one tab, nine on the other, and roughly five formulas. If you find yourself building a pivot table, you have gone past the point where this system helps.
A worked example
A two-person agency selling website work to dental clinics. Month one:
- Leads added: 420 across four weeks.
- First-touch messages: 380 (email 240, WhatsApp 140).
- Replies: 41 — email 12 (5%), WhatsApp 29 (21%).
- Meetings: 9.
- Spend: tools $90, plus 30 hours at $50 = $1,590 total.
- Cost per meeting: $177.
The rollup makes the decision obvious: WhatsApp produces four times the reply rate at a fifth of the volume. Month two, the plan is not "send more of everything" — it is shift the mix toward WhatsApp, cut email volume in half, and test one new email subject line on the remainder. That is a real decision made from four numbers, and it took twenty minutes to reach.
Note what would have happened without tracking: a general sense that "outreach is working", 380 more undifferentiated messages next month, and no idea which half of the effort produced the nine meetings.
The Friday review, twenty minutes
- Minutes 1–10: update the Leads tab. Log replies, meetings, and outcomes from the week. Do this once weekly, not continuously — batching beats context-switching.
- Minutes 11–15: fill in the rollup row. Leads added, messages, replies, meetings, spend.
- Minutes 16–20: compare against the previous three weeks and pick exactly one change for next week.
One change. Not four. If you change the list, the message, the channel, and the volume in the same week, you will never learn which one moved the number. Change one variable, run it for two weeks, keep or discard.
Reading the numbers when they go wrong
- Low reply rate, high negative share. Targeting is fine, offer is wrong. Rewrite the pitch; keep the list.
- Low reply rate, near-total silence. Wrong people, wrong channel, or you are landing in spam. Check deliverability first, then targeting. Do not touch the copy yet.
- Good replies, few meetings. Your call-to-action is vague or your booking friction is too high. Ask for a specific 15-minute slot instead of "let me know if you'd like to chat".
- Good meetings, bad cost per meeting. The channel works but is too manual. Automate the list building, not the messages.
- Everything fine, pipeline flat. Check leads added per week eight weeks back. You almost certainly stopped feeding the top.
Start this week
Build the two tabs today — it takes fifteen minutes. Backfill last week from your sent folder, even roughly; an approximate baseline beats no baseline. Then log four consecutive weeks before you draw any conclusions, because a single week of B2B outreach data is mostly noise.
After a month you will know your reply rate per channel, your true cost per meeting, and how many leads a week you need to add to keep the calendar full. That is enough to run a lead generation operation deliberately instead of hopefully, and it beats any dashboard you would have built instead.