Open the last report your agency or SDR sent you and count the rows.
A weekly outbound report should show seven counts: people contacted, bounces, replies, positive replies, calls booked, calls held and deals signed. Each channel gets its own column, every rate says what it was divided by, and one line covers sending health. Open rate does not belong on it.
In my list of questions for any lead gen agency you are about to hire, the short version reads: "Three things should appear in every report: how many people were contacted, how many replied, and what happened next."
Below is the long version, with a real report filled in.
Smirnov Consulting Group is a Prague-based B2B outbound lead generation agency that runs cold email and LinkedIn campaigns for founder-led B2B companies and books qualified sales calls. So I sit on the producing side of these reports, which is also why I know where they tend to go quiet.
Which metrics belong on the report, and what each is divided by
A count without a base is hard to judge, and a rate without a count is easy to dress up. So each row carries both.
| Row | What it counts | Rate to show, and its base | Why it is there |
|---|---|---|---|
| People contacted | New people who got a first message this week | Against the weekly plan | Every other row depends on it |
| Bounced | Emails that came back undelivered | Per person contacted, or per email sent, as long as the report says which | A rising number means the list or the setup is slipping |
| Replies | Any human answer | Per person contacted | Tells you the market is reading |
| Positive replies | Replies showing interest in a call or the offer | Per reply | Separates interest from "remove me" |
| Calls booked | Meetings on your calendar | Per positive reply | Shows whether interest turns into time |
| Calls held | Meetings that actually happened | Per call booked | Booked hides the no-shows |
| Deals signed | Contracts | Per call held, judged monthly or quarterly | The only row that pays for the rest |
Then the health line. Google's sender guidelines, checked September 2026, tell anyone sending to Gmail users to keep the spam rate in Postmaster Tools below 0.3%, and the same page's monitoring section says to stay under 0.1%.
Ask your agency whether they track it for your sending domains. If they do, it goes on the page.
If you run email and LinkedIn together, every row gets a column per channel. The reason becomes obvious in the booked-and-held example further down.
An optional eighth row: conversations, meaning replies that became a real back-and-forth. Why I set goals in conversations rather than calls is in the post on building a follow-up sequence.
A real report with the numbers filled in
This is the analytics dashboard for one of our US B2B clients: 28 campaigns, running from Oct 9 to Dec 9, 2025. What was rebuilt before any of it went out is in my post on blaming the email when the list is at fault. Here I only care about how the numbers are reported.
I added two columns. One says what each rate on the screen was divided by. The other is the average week, which is the total divided by the 8.7 weeks in that date range.
| Row | Total, Oct 9 to Dec 9, 2025 | Rate | Divided by | Average week |
|---|---|---|---|---|
| Emails sent | 123,430 | - | - | about 14,160 |
| People contacted | 71,724 | - | - | about 8,230 |
| Bounced | 1,229 | 1.71% | people contacted | about 140 |
| Replies | 1,806 | 2.52% | people contacted | about 207 |
| Positive replies | 335 | 18.55% | replies | about 38 |
| Calls booked | 141 | about 42% (calculated) | positive replies | about 16 |
Three things show up here that a blank template never shows you.
The same numbers carry two honest reply rates. 1,806 replies over 71,724 people is 2.52%. The same replies over 123,430 emails is about 1.5%. Neither is wrong, but a report that prints a rate without its base can make one set of results look like two different ones.
Most replies are not interest. Here, fewer than one reply in five was positive. In a campaign report I posted in April 2025, one row read 12,503 emails sent, 557 replies and 207 positive, so about 37% of those replies were positive.
Compare those two reports on total replies alone and you miss the biggest difference between them. It sits in the positive row.
The dashboard stops at calls booked. Calls held and deals signed happen in your calendar and your CRM, so somebody has to add those rows by hand and match each deal back to the call it came from. That is exactly where reports go quiet.
Why open rate should not be on the report
I leave open rate off the report, even when the sending tool shows it first.
Apple's own support page, checked September 2026, says Mail Privacy Protection stops senders from seeing whether you opened their message.
Once some of your prospects read mail that way, an open count stops meaning "a person opened this", and you cannot make a decision on it.
Every one of the seven rows above can be counted. A reply exists or it does not. A call happened or it did not.
The one job I would still give opens is an alarm.
A sudden week-over-week collapse in opens, with the list and sequence unchanged, probably means something in the sending broke: a flagged domain, a throttled mailbox, an edited authentication record. If that happens, start with how the sending setup is built.
Booked, held, signed: the rows that go quiet
Calls booked is the easiest row to like. On its own it flatters everyone.
In that list of hiring questions I mentioned one campaign where fewer people turned up than had booked, by a margin of several calls. A gap like that deserves a conversation with the client about reminders and timing. It should never be tucked into a monthly summary.
A cleaner example comes from one month, May 2023, with a German software development company. Cold email booked 21 calls and 16 people showed up. The LinkedIn arm, which also sent email follow-ups, booked 13 and 12 showed up. Four contracts were signed inside that month.
I went through what that split means in the post on the gap between booking a call and closing it.
For a report, the lesson is mechanical. If only the totals had been reported, 34 booked and 28 held, the report would not have shown that one channel lost 5 of 21 and the other lost 1 of 13. Held goes next to booked, per channel, every week.
The same post ends with a check you can run on any report history: "Pull last quarter. Count how many calls were booked, how many people actually showed up, and how many signed. Two ratios fall out of that, and they tell you where the money is going."
What a week can tell you, and what needs a quarter
Weekly numbers can be small. The average week in the real report above had about 38 positive replies and 16 booked calls. At that size a few calls either way swing a weekly percentage hard, so the weekly page is for counts and alarms, and rates get judged over longer windows.
| Window | What to look at | Why this window |
|---|---|---|
| Every week | People contacted against plan, per channel. Bounces and spam rate. Replies and positive replies. Replies still waiting for an answer. Calls booked. Calls held from earlier bookings. | Quick to check, and a problem here can be acted on the same week |
| Every month | Reply rate and positive share per campaign or segment. Held per booked, per channel. Cost per held call. | Enough volume for a rate to mean something |
| Every quarter | Signed per held. Contracts that came from calls booked in earlier months. | Deals lag the calls that produced them |
The "waiting for an answer" row is there because of a question I tell buyers to ask any agency: who reads the replies, how fast, and where they get recorded. Many replies are a question or a "talk to me in March". Leave those unanswered and you lose more than mediocre copy would.
The quarterly row exists because signed deals trail the calls. After that German month, my expectation was about two further contracts within 9 to 12 months, from calls that had produced nothing yet. Judge a campaign only on what signed in month one and you can end up canceling something that was working.
A template you can send your agency
Copy this and ask for it every Monday, one column per channel plus a total.
Week of: ____ Columns: email | LinkedIn | total
New people contacted: ____ (plan: ____)
Bounced: ____ (% of people contacted)
Spam rate, Postmaster: ____
Replies: ____ (% of people contacted)
Positive replies: ____ (% of replies)
Replies not yet answered: ____
Calls booked: ____ (% of positive replies)
Calls held: ____ of ____ booked for this week
Deals signed this month: ____
What went wrong: ____
What changes next week: ____
The two free-text lines at the bottom are there for the reason I gave in the hiring questions: "A good partner volunteers the gaps. If every report is a highlight reel, you are being managed rather than served."
Six signs the report is a highlight reel
- Rates with no counts, or counts with no base. "Reply rate 9%" without the number of people behind it is a headline.
- Booked with no held. Or held reported only as a monthly total, where a bad channel disappears into a good one.
- No bounce or spam line, week after week. If it never appears, you cannot tell whether anyone is watching it.
- Only the best campaign on the page. The real dashboard above counted all 28 campaigns by status: 5 active, 3 paused, 18 completed and 2 stopped. Paused and stopped campaigns are part of the story.
- Open rate as the lead number. For the reason Apple gives above.
- The "what went wrong" line is always empty. A running campaign involves decisions about targeting, timing and copy most weeks. An empty line means you are not hearing about them.
If you are not sure, ask for the raw export from the sending tool for a single week and rebuild the numbers yourself. How the agency reacts to that request is part of the answer.
FAQ
Should a weekly outbound report include cost per meeting?
Keep cost on the monthly view. Divide what you paid that month by the calls held, not booked, because a no-show cost just as much to produce. Payback over a full sales cycle is a separate calculation.
What reply rate should I expect to see on the report?
First ask what the rate is divided by. In the real report above, the same replies came to 2.52% per person contacted and about 1.5% per email sent. Compare like with like, and look at positive replies before you celebrate the total.
What if the agency does not report calls held?
Held calls happen in your calendar, so agree up front who logs them, you or the agency. After that the row goes on the report every week. An agency that pushes back on showing held next to booked is telling you which number it wants to be judged on.
Should LinkedIn and email be reported separately?
Yes. In the German campaign above, email kept 16 of 21 booked calls and the LinkedIn arm kept 12 of 13. A single combined total would have hidden that.
