How to Define Your ICP for B2B SaaS Outbound
Learn how to define your ICP for B2B SaaS outbound with hard firmographic filters, real buying signals, how narrow to go, and a full worked example.
Learn how to define your ICP for B2B SaaS outbound with hard firmographic filters, real buying signals, how narrow to go, and a full worked example.
How to define your ICP for B2B SaaS outbound (and why most lists are wrong)
Most cold email fails before a single send. Not because of copy. Not because of deliverability. It fails because the list was built against a fuzzy idea of who should buy. If you want to know how to define your ICP for B2B SaaS outbound, start here: an ICP is not a description, it is a filter you can put into a tool and get a list back from.
"B2B SaaS founders" is not an ICP. "VP of RevOps at 50 to 500 person B2B SaaS companies in the US that raised a Series B in the last 12 months" is an ICP. One is a vibe. The other is a query. This post shows you how to get from the first to the second, how narrow to go, which buying signals to use, and what a finished definition looks like end to end.
Takeaway: if you can't paste your ICP into a list tool and get rows back, it isn't defined yet.
The two layers: firmographics first, then the person
Every workable ICP has two layers. Get them in this order.
Layer 1, the company (firmographics). This is the account you want to land. For B2B SaaS outbound, the filters that actually move results are:
- Headcount, as a hard minimum and maximum. Not "mid-market." Actual numbers, like 50 to 500. Map them to the buckets your tool uses: 1-10, 11-50, 51-200, 201-500, 501-1000, 1001-5000.
- Industry, in or out, no fuzzy. Decide which verticals are in (Software Development, Information Technology, Financial Services) and which are hard out (Non-profit, Government, Religious Institutions). A clean negative list saves you more money than a clever positive one.
- Geography. Countries at minimum. States or regions if your offer, pricing, or compliance depends on it.
- Business model. B2B only, not B2C. This one filter kills more bad leads than any other when you target SaaS.
- Funding stage, when it maps to budget. "Raised Series A or later" is a reasonable proxy for "can afford us and has a team to use us."
Layer 2, the person (the buyer). Who inside that company controls the outcome you sell? For SaaS this is almost never "the CEO" once you are above 50 employees. Name the real title, then add every synonym, because titles are not standardized:
- VP of Sales = VP Sales = Head of Sales = SVP Sales
- VP of Product = Head of Product = Director of Product
- VP of RevOps = Head of Revenue Operations = Director of RevOps
Skip the synonyms and you miss a large share of valid buyers who hold the same job under a different label.
Takeaway: firmographics pick the house, the persona picks the door. You need both, in that order.
Hard filters vs soft preferences: the mistake that shrinks your list 20x
This is the single most expensive error in how people define an ICP for B2B SaaS. They treat every criterion as required. The result is a list of 200 leads instead of 5,000, and the 200 are the most-pitched companies in your category.
Split every criterion into one of two piles. The test is one question:
"If you found someone who matched everything except this one thing, would you still email them? Yes or no?"
- No, skip them means it is a hard filter. It goes in the query.
- Yes, I'd still reach out means it is a soft preference. You log it and use it to personalize, not to filter.
Here is how the common criteria usually fall:
- Job title: usually hard. Wrong buyer, wrong campaign.
- Industry: usually hard when you target a vertical.
- Headcount: hard in the middle, soft at the edges. One company a hair over your cap is usually still fine.
- Triggers (funding, hiring, new tool installed): almost always soft. A trigger is a personalization signal, not a filter. Make "raised in the last 6 months" a hard filter and your list drops 20x, and everyone else is already in their inbox that week.
Takeaway: hard filters define who is eligible. Soft signals decide what you say. Confusing the two is what produces a list too small to run.
Buying signals worth targeting (use them to time and personalize)
Signals are how you reach the right account at the right moment. They do not replace your firmographic filter, they sit on top of it. The ones that earn their keep for B2B SaaS:
- Recent fundraise. New budget, new pressure to grow, new hires landing. A Series A or B in the last 12 months is a clean window.
- A new exec in the buying seat. A VP or Head who started in the last 90 days is hunting for quick wins and is far more open to a new tool than someone two years entrenched.
- Hiring for a role you support. An open RevOps or Product Analytics req says they feel the pain you solve right now.
- Tech stack on the site. Detecting a competitor or a complementary tool (via BuiltWith or similar) lets you lead with a switch or an integration angle.
- A recent product launch or funding-fueled expansion. Growth moments create the gaps your product fills.
Use one signal per campaign, not five. A single sharp reason you are reaching out now beats a pile of detective work the reader never asked for. And remember the rule from the section above: these stay soft. You target them where you can, you reference them in the copy, you never let them gut your volume.
Takeaway: firmographics decide who qualifies, signals decide when you knock and what you open with.
How narrow should you go?
Narrow enough that the message could only have been written to them. Wide enough that the list is worth running. Those two pull against each other, and the honest answer is a range, not a number.
A practical floor: if a tight firmographic plus persona filter returns only a few hundred matches, you are too narrow to sustain a program, and you will burn the list in a couple of weeks. If it returns tens of thousands with no real through-line, you are too broad and your copy will read generic to everyone. A few thousand well-qualified accounts is a healthy place to start for most B2B SaaS offers.
When you are too narrow, loosen the soft edges first (widen headcount, add an adjacent industry) before you touch the hard filters. When you are too broad, tighten the persona and the vertical before anything else. To pressure-test a finished list against your own criteria, run it through our free list grader and see where the weak rows are before you spend on enrichment.
Takeaway: aim for "specific enough that the email fits, broad enough to run for months." Tune the soft edges, protect the hard core.
A worked B2B SaaS example, start to finish
Here is the whole thing on one fictional company so you can see the layers connect. Call it Acme Analytics, a product-analytics platform that ties feature usage to revenue.
Company (hard filters)
Headcount: 50 to 500. Industries in: Software Development, Information Technology, Financial Services. Industries out: Non-profit, Government, Religious Institutions. Geography: US and Canada. Model: B2B only. Stage: Series A or later. Has a product team of at least 3.
Buyer (hard filter)
Titles: VP Product, Head of Product, VP Growth, Head of Analytics, Director of Product Analytics. All synonyms included.
Signals (soft, for timing and personalization)
New VP or Head of Product in the last 90 days. Currently running a competing analytics tool (detected on-site). Recent raise.
Excluded domains (hard)
Competitors. Existing customers. Active partners.
Notice what is doing the work. The hard filters produce a real, runnable list of a few thousand accounts. The soft signals then split that list into campaigns: one for brand-new Heads of Product hunting quick wins, one for companies on a competing tool where the angle is a clean switch. Same ICP, two reasons to reach out, two different opening lines. That is the payoff of separating the layers up front.
Takeaway: a good ICP is not one list, it is one eligible pool that your signals slice into sharply-targeted campaigns.
Qualify before you scale (don't pay to enrich the wrong list)
Even a clean filter returns junk. Lookalike databases and people-search tools return companies, but they do not know your business. If 30 to 40 percent of a 5,000-row pull is a bad fit, you just paid to find emails that go nowhere.
So qualify a sample before you scale the spend. The workflow we use:
- Pull a sample of 50 to 100 companies that match the firmographic filter.
- Score each one against the ICP with a clear yes or no plus a confidence number and a one-line reason.
- Eyeball the borderline cases (the 0.5 to 0.7 confidence rows) and correct the rules where they got it wrong.
- Once the rules agree with your judgment two passes in a row, scale the pull and keep only the qualified rows above a 0.6 confidence bar.
This catches the wrong fits while a mistake costs you nothing, instead of after you have enriched and sent. It is the difference between a list that looks big and a list that books meetings.
Takeaway: tune your qualification on 50 before you trust it on 5,000.
The quick checklist
- Headcount set as a hard min and max, not a label.
- Industries marked in or out, no fuzzy middle.
- Geography defined to the level your offer needs.
- Buyer title named, with every synonym added.
- Hard vs soft decided for every single criterion.
- One signal chosen per campaign for timing and copy.
- Excluded domains listed: competitors, customers, partners.
- Sample qualified before you scale enrichment spend.
If every box is checked, you have an ICP you can paste into a tool and run. If any box is a label instead of a number or a clear in/out, that is the box costing you replies.
Where this leaves you
Defining the ICP is the highest-leverage hour in the whole campaign. Get it right and average copy still books meetings. Get it wrong and the best copy in the world lands on people who were never going to buy. Most teams can do this themselves with the framework above, and if that is you, take it and run.
If you would rather have it built, qualified, and run for you, that is what we do all day. Book a call and we will walk through your ICP live, show you where the list is leaking, and tell you straight whether outbound is the right move for your stage. No pitch if it isn't.




