If you’re trying to work out how to generate leads for a B2B SaaS company without building a whole SDR team, buying a list and handing your reps a script won’t get you there. We’ve booked more than 150 meetings in four months for a group of B2B SaaS clients, and 70 to 75% of them came from cold calling. All of it ran through the same 13 stages, in the same order.
Here’s every stage. Stage zero is the one almost everyone skips.
Stage 0: Work out whether your sales are repeatable yet
Lead generation means two very different things depending on where you are.
In the first situation, you know who buys from you and why. You just need more of those people in your calendar. In the second, you’ve got a product and a few customers, but you still don’t know which market it’s really for.
From the outside they look identical. They need opposite plans.
One question tells you which one you’re in: of your last five closed deals, did they all come from the same channel?
Five referrals, say, or five inbound leads. That means your sales are repeatable and your only problem is volume. Five deals from five different places means you don’t know where your pipeline comes from yet, and more outbound will mostly just cost you more.
You should still do outbound in the second situation. You just set it up so every campaign tests one market, and at the end of it you know whether that market is right for your product. Booked meetings is the right scoreboard for the first situation. For the second, the scoreboard is what you learned.
Stage 1: Pick the easiest market, not the biggest
Most founders want to start with the biggest market they can find. Start with the smallest one that’s still big enough, where the problem you solve hurts the most and you have to explain the least.
The most useful exercise here is writing down who should never buy from you. The companies who’d cancel. The ones who’d be miserable using your product. The ones who’d need six months of education first. If you can’t name them, you haven’t found your market yet.
Then write your ideal customer profile as a set of assumptions, not a list of boxes. Each assumption is either right or wrong, so give each one a label and test it on its own. For a client selling video software to recruiting teams, three of ours were:
- A1: companies over 500 staff with an employer brand manager, who struggle to make video fast enough to keep up with hiring
- A2: companies hiring a lot with nobody in employer brand, where the head of talent acquisition has roles staying open too long
- A3: companies that just raised and are growing, where the head of people has a careers page that looks like everyone else’s
Every campaign gets one segment, one job title, one reason to call them now and one problem. Change three things at once and you’ll never know what worked.
Stage 2: Get the message right before you hire anyone
Every message should be about one problem for one type of person. Leave the platform and the feature list out of it.
First, explain your product with no industry terms. Most founders can do it in about 15 seconds once their usual words are taken away. Then turn that into a 30-second version with four parts: the story, the problem, the outcome and the ask. The same four parts work in a cold call opener, an email and a LinkedIn message.
Hire an SDR before you’ve done this and you’re paying them to find out the message doesn’t work. That can be two months of salary with no meetings, and you still won’t know whether it was the rep, the list or the pitch.
Stage 3: Build a list of every company that could buy
This is your total addressable market. It takes a lot longer than an afternoon in Apollo, which is why we have someone whose whole job is building lists.
Start with a kickoff that goes through the last 20 customers you closed. What do they have in common? Headcount, the title of whoever signed, the tech they use, and what made them buy when they did.
Then set a maximum company size, not just a minimum. Go too big and they’ve probably built their own version of your product.
Find three to five people at each company who own the problem. 10,000 companies turns into 40,000 to 50,000 contacts. You won’t call all of them. That’s everyone you could reach, and the next stages cut it down.
Stages 4 and 5: Check the data, then remove anyone who already knows you
Make 100 dials when half the list left their company a year ago and only about 50 of those dials could ever have gone anywhere.
Every contact has to pass four checks before anyone dials:
- A direct mobile number. We bin landlines and office numbers.
- They own the problem or the budget themselves.
- Their company is inside the size band you set.
- They’re based in the market you’re calling.
Claude can run those checks across a whole list, but nothing reaches a rep until a person has read it and approved it.
Then take out everyone you’ve already spoken to, anyone in an active email or LinkedIn campaign, existing customers, open pipeline, your do-not-contact list and any company you’ve already booked a meeting with. Skip this and your reps end up cold calling your own customers.
Stage 6: Email and LinkedIn go out before anyone calls
Cold calling books most of our meetings, but email and LinkedIn always go first. They’re cheap, and they show you who’s engaging before anyone spends time on the phone.
On email, a lot of people still follow advice from 2022. Since Gmail changed its bulk sender rules in 2024, we keep it to 20 to 30 emails per inbox per day. Push 100 to 150 from one inbox and you’ll wreck your domain’s reputation.
On LinkedIn, never ask for a meeting in the first message. Give away something their company would pay for. For us that’s 100 validated emails and phone numbers matching their market, with no ask attached. Three of our live LinkedIn campaigns are replying at 33%, 27% and 18%.
Stage 7: Score the list and only call the top slice
Every contact gets a score based on how they engaged with your emails and LinkedIn messages, plus extra points for buying signals. We call the top 30 to 40% of each segment. On lists built like that, around 20% of our dials get picked up.
Signals are different for every business. For a visa sponsorship client, it’s job ads open for 30 days that mention sponsorship. Another good one is companies using a competitor’s product.
But signals matter less than people think. One of our best performing clients doesn’t track a single signal. The only filter is whether the company uses Shopify. Signals help you decide who to call first. They can’t create demand that isn’t there.
Stage 8: Call
They can ignore your email and scroll past your LinkedIn message. Once they’ve picked up and said hello, they’re in the conversation. And most of your competitors are trying to avoid the phone altogether.
In one two-hour session we made about 240 dials to financial controllers, CFOs and finance managers at e-commerce companies and booked five meetings. That’s one per 48 dials. On a well-targeted list with validated mobiles, one meeting every 40 to 50 dials is realistic.
Stage 9: Track six numbers, in order
Dials, connects, conversations, qualified conversations, meetings booked and meetings held. The step where the number drops is the step to fix.
- Connect rate should be above 10%. 15 to 25% is really solid. Under 10% is almost always the list.
- Connect to conversation should be above 60%. We see 80 to 90%. Under 60% means the first 30 seconds of the call need work.
- Conversation to meeting falls when reps ask for too much, or ask too early.
Not every session books five. A more normal one of ours was 182 dials, 23 pickups, 14 conversations and two meetings, which is a perfectly healthy session. Then set up a confirmation process for every meeting, because a booked meeting isn’t a held one.
Stage 10: Stop, change or scale on a fixed date
Every campaign gets one of three decisions, written down on a fixed date each month.
Here’s roughly how the first 90 days go. Weeks one and two are list building, data checks and getting inboxes ready, with no meetings. Weeks three and four, email and LinkedIn go out and calling starts. Day 30 tells you whether the data or the opener is broken. Day 45 is your first proper decision on each campaign. Day 90 tells you whether outbound is working.
Make sure you have enough calls before you trust a result. 34 dials turning into seven conversations and two meetings could just be luck. You need a couple of hundred connects in a segment.
Two campaigns where the targeting was wrong
A visa sponsorship client had never done outbound. Their biggest customers were tech companies, so tech was the assumed segment and construction was expected to do worst. Within two weeks of calling, HR managers at construction companies kept bringing up the same thing unprompted: a trades shortage in Queensland, and real pressure to sponsor workers from overseas. We built a construction campaign around that shortage and it beat everything else on the list.
Another client processes and matches supplier invoices for businesses on Xero. The plan was to call all of them. Call after call, we reached businesses under 50 staff using Xero only for payroll, with no invoice software to replace. We moved to multi-entity businesses, like dental and medical practices with more than one site, where invoice volume makes the problem real. Using the tool you integrate with doesn’t make a company qualified.
Stage 11: Work the follow-ups
Every campaign builds up a list of people who said “call me in a few months” or “send me something”. They don’t count as booked meetings, so they get forgotten. If they have the problem and the timing was off, they can still book later, but only if someone calls them back.
We run a follow-ups channel in Slack that pulls in our call transcripts every morning and flags every callback that’s due. An hour blocked out each day does the same job.
Stage 12: Own the playbook
At the end of 90 days you should have pipeline and the playbook that built it: the list, the call scripts, the email and LinkedIn sequences, how objections were handled, and everything you learned about which segments respond. Your company keeps all of it, so if the person running outbound ever changes, nobody starts again from zero.