How to generate B2B leads in 2026: a source-quality playbook
If you spend long enough doing outbound, you arrive at a slightly uncomfortable conclusion: the difference between a programme that works and a programme that limps is almost never the email copy. It is the source quality of the list. A perfectly written sequence against a Frankenstein list of half-stale Apollo exports converts at near zero. A merely competent sequence against a list of 300 companies that just posted a relevant hiring signal converts at three or four percent.
This playbook walks the funnel in order — segment, source, enrich, verify, send, measure — and tries to give you the realistic numbers and the legal framing in plain English. The worked example at the end is a B2B SaaS company hunting medium-sized European manufacturers, which is one of the harder segments to find by accident.
Free 1-day trialDefine the ICP narrowly enough to be useful
An ICP that says "B2B SaaS, 50–500 employees, growing" is not an ICP, it is a wish. A working ICP for outbound needs three coordinates that are queryable against a register or a register-equivalent source:
- Industry code — NACE Rev. 2 in the EU, SIC 2007 in the UK, NAICS in North America, WZ 2008 in Germany. Without an industry code you cannot dedupe, you cannot segment, and you cannot exclude. Use the codes the source actually publishes.
- Region — country plus, for larger countries, region or state. A campaign aimed at "Germany" without a Bundesland filter will mix Hamburg shipping firms with Bavarian Maschinenbau in a way that makes the copy generic.
- Size band — turnover band or employee band, taken from a filed accounts source where possible. Self-reported headcount on LinkedIn is roughly 30% wrong in the SME band; filed accounts are not.
If you can express your ICP in three lines using only those three coordinates, you are ready to source. If you cannot, the rest of the funnel will be downstream noise.
Choose primary registries over aggregators when you can
Aggregators (Apollo, ZoomInfo, Cognism, Lusha) are convenient. They are also derivative — they aggregate LinkedIn signals, scraped websites and purchased lists. Whatever is not in those upstream sources is not in the aggregator. In continental Europe specifically, that means an aggregator-only stack systematically misses the owner-led mid-market.
The first-best source for any country is the national register. These are:
- UK — Companies House, free, REST API, ~4.8M active companies, SIC-coded
- Germany — Handelsregister + Bundesanzeiger, ~3.5M GmbHs, annual filings under § 325 HGB
- France — INPI/RNE via data.inpi.fr, SIRENE database for company identifiers
- Netherlands — KvK Handelsregister
- Spain — Registro Mercantil Central
- Nordics — Norway (Brønnøysund), Sweden (Bolagsverket), Denmark (CVR), Finland (PRH)
The discipline is: registry first for entity, size and director name; aggregator second for any LinkedIn-derived behavioural signal; web analysis third for the actual email address that a human reads.
// Registry sanity check
- Industry code present and filterable
- Director or managing-director-level name reachable
- Latest filing year within the last 24 months
- Registered office or trading address present
- Legal form (Ltd, GmbH, SAS, BV, etc.) explicit
Enrich with native-language web, not English-only analysis
An English-only analysis over German, French or Italian sites will silently truncate your list. The 60-person Maschinenbau firm in Stuttgart publishes its Impressum and team page in German. The Lyonnais consultancy publishes its mentions légales in French. If your enrichment layer reads only English, you get the half of the site that is the "about us" stub and miss the people you actually want to email.
Practical enrichment targets per company: legal-notice page (Impressum / mentions légales / aviso legal), team or leadership page, contact page, careers page. From those four pages a competent engine extracts: named email addresses, role-based mailboxes, direct phone numbers, named leadership with titles, current open roles. That last one is the most underrated buying signal in B2B.
Get deliverability right before you send a single email
The order of operations matters. Send before deliverability is set up and you burn the domain. Set up takes a day, recovery from a burned domain takes months.
- SPF — published TXT record, includes all legitimate senders, ends in
-allnot~allonce you trust the list - DKIM — 2048-bit key, rotated yearly, configured per sending provider
- DMARC — start at
p=nonewithruareporting, move top=quarantineafter two weeks of clean reports, thenp=reject - Dedicated sending domain — outreach.yourdomain.com or a separate domain entirely. Never use the primary corporate domain for cold sends
- Warm-up — 20-30 sends per day per inbox in week one, climb to 80-150 by week four. Use a warm-up tool (Mailwarm, lemwarm, the built-in tools in Instantly and Smartlead)
- Mailbox provider monitoring — Postmaster Tools at Google, Smart Network Data Services at Microsoft
Verify emails through real email, not pattern guessing
The shortcut of "firstname.lastname@domain.com" is wrong about 35-45% of the time outside the US. European naming conventions, umlauts, double-barrelled surnames and married-name changes all break pattern guessing. The right approach is a two-tier verify:
- MX lookup on the domain — confirms a mail server actually exists
- email
RCPT TOprobe — asks the receiving server whether the mailbox accepts mail, without sending one
Tools like NeverBounce, ZeroBounce, Hunter Verifier and DeBounce do this, typically for $4-8 per thousand verifications. Some inbound servers (notably catch-all configurations and several large enterprise filters) reject email probes; for those, the verification result will be "unknown" and you decide your risk tolerance.
Calibrate reply-rate expectations honestly
The single biggest distortion in outbound discourse is the LinkedIn humble-brag screenshot showing a 12% reply rate. For cold B2B email, against a list that is segmented but not specifically triggered, the honest band looks like this:
Above 6% sustained, on a list larger than a few hundred contacts, is almost always one of three things: a list of warm contacts mislabelled as cold, a fit signal so tight it is effectively a referral list, or a deliverability problem where the message reads as spam to filters but humans never see it and reply numerators look inflated against suppressed denominators. None of those are repeatable.
The legal layer in plain English
The short version: cold B2B email is legal in most major jurisdictions if you are relevant, transparent and easy to opt out from. The longer version, by region:
- EU under GDPR — Article 6(1)(f) (legitimate interest) is the basis. The message must be relevant to the recipient's professional role, the sender must be identifiable, and an opt-out must be a single click. Function mailboxes (info@, sales@, einkauf@) are not personal data under Article 4 and sit outside GDPR entirely.
- UK under UK GDPR + PECR — corporate subscribers (Ltd, PLC, LLP, Scottish partnerships) do not require prior opt-in for electronic marketing. Sole traders and ordinary partnerships are treated as individuals and need soft opt-in.
- Germany under UWG + GDPR — explicitly allowed for B2B by DSK guidance; the DSK is the joint federal-state body of data protection authorities.
- France under CNIL — stricter. CNIL guidance treats named B2B addresses as needing legitimate interest plus a relevance test that is harder to meet than in Germany. Function mailboxes are clearer.
- Italy under Garante — similar to France, stricter on consent than the German line.
- US under CAN-SPAM — accurate header, no deceptive subject, physical postal address in the footer, a working opt-out. No opt-in required.
- Canada under CASL — opt-in required, with narrow business-relationship exceptions. Materially stricter than CAN-SPAM.
Worked example: B2B SaaS hunting European mid-sized manufacturers
// The brief
A B2B SaaS vendor selling production-planning software, ACV around €25k, target is manufacturers with 50–250 employees across Germany, Netherlands and Denmark. They have a one-person SDR and one AE. Quarterly target: 40 booked demos.
// The ICP, expressed in queryable terms
NACE Rev. 2 codes C25 (fabricated metal), C28 (machinery), C29 (motor vehicles, supplier tier). Headcount 50–250 from latest filed accounts. Country: DE, NL, DK. Bonus filter: at least one open vacancy in production, planning, or operations roles within the last 60 days.
// The source stack
Germany: Handelsregister for entity and Geschäftsführer, Bundesanzeiger for headcount band, German-language site analysis for Impressum and team page. Netherlands: KvK Handelsregister plus native-Dutch site analysis. Denmark: CVR plus native-Danish analysis. Hiring signals: Stepstone, Indeed.de, Indeed.nl, jobnet.dk, the company careers page.
// The expected funnel
Roughly 8,000 companies match the firmographic filter. After hiring-signal narrowing, perhaps 1,200. After dedup, web enrichment and email verification, perhaps 950 deliverable named contacts plus a few hundred function mailboxes. Sequenced over a quarter at 80 sends per day per inbox across two inboxes: well within capacity. At 2.5% positive reply (good for trigger-based DACH manufacturing outbound), that is roughly 24 conversations, of which 12-16 typically book a demo — short of the 40-target on cold alone, so they pair with LinkedIn outbound and a tightly targeted trade-show list to close the gap.
// Where AtlasForgeX fits
The first three layers — registry extraction, native-language web enrichment, and hiring-signal cross-reference — are exactly what AtlasForgeX does as a Windows desktop tool. The email verification step it does inline. From there the cleaned CSV goes into whatever sending stack the SDR already runs.