White-label lead generation: an agency should buy capacity, not lists
Every agency I have watched buy data has bought the wrong thing. Not a bad list — the wrong unit. A list is an
inventory purchase: you pay for rows, you discover on the first send which ones were real, and the discovery cost
arrives as bounces on a client's sending domain. Capacity is a different unit of purchase. You buy a production run
with a known failure rate, and the failure rate is measured before the send.
That distinction is the whole partner conversation, and it is countable, so let me count it.
The file this is built on
Working file as of 19 September 2026: 7,503 company domains collected from 46 public sources, of which
1,305 have a public address on the company's own pages or in the listing itself. The file was assembled with one rule that decides everything downstream:
a domain comes from a structured field — an API website field, a hiring post's own URL, a catalogue's outbound
link — never from the body text of a post. A row without a domain is dropped rather than guessed.
The second rule is that nothing ships unchecked. Every host gets requested live and has to answer with product
signals (pricing, signup, demo, trial) before the row stays. Every address has to sit on the domain it claims. The
address is SMTP-checked before the send. In practice that pass removes roughly a third of a purchased list — and
agencies keep asking me to leave that third in, because a bigger number looks better in a proposal. It does not
look better three weeks later.
Yield by source family is the number that matters
Different source families fail at very different rates, and that difference is what an agency should be buying on:
| Source family | Rows kept | With a published address | Yield |
|---|---|---|---|
| Agency directories | 492 | 492 | 100% |
| Hiring threads ("Who is hiring", 2024 → Sep 2026) | 2,792 | 304 | 11% |
| YC company directory (website field) | 548 | 265 (pulled from the companies' own pages) | 48% |
Agency directories come in at 100% because the listing itself publishes the contact row — the directory's business
model is publishing an address. Hiring threads sit at 11% because a job post carries a domain and no mailbox; you
get a company to research, not a person to write to. The YC directory gives 548 valid companies in a single pull and ships no contact field at all — the 265 addresses
below that line were collected afterwards from those companies' own pages, which is exactly the shape of a source you
use for reach first and contactability second.
If an agency is buying volume by the row, it is buying the 11% column and calling it 100%. That is the entire reason
white-label production runs beat list purchases: the yield is measured per family, before the client sees anything.
What a partner run actually contains
The four steps are the same whether the end client is a SaaS company, an agency's client, or a local B2B:
- Segment from public structured sources. Families above, with the source column preserved so a later audit can answer "where did this row come from" without asking me.
- Verify before anything is sent. Live host check, address-to-domain match, SMTP check, and a separate file for what did not survive — so the count change can be explained to the client instead of hidden from them.
- Send under the agency's brand. Sending domains, mailboxes, throttling and warm-up belong to the client relationship, not to the vendor. Copy is written to the segment; the reply loop is worked, not just opened.
- A read-out that can be forwarded. Sent, delivered, replies, positive replies, booked conversations, per segment, with the raw rows attached as CSV and JSON.
Nothing in that list is exotic. The part agencies actually buy is that all four are already built and measured, so a
client promise that needs 2,000 more touches this month does not require hiring or a migration.
The pricing model, published
This is the part that usually stays hidden behind a "book a call" button, and it is the reason this post exists:
- $900 — one-off Sprint: one segment, verification pass, copy, sends, first read-out.
- $1,900/month — Engine: a monthly loop, new segment each cycle, replies worked, forwardable read-out.
- $2,900 — Full Build: the machinery as the deliverable, handed over so an in-house team runs it afterwards.
These are the cost basis for a white-label run, not a reseller licence fee with a markup ladder on top. An agency
invoices its client at its own price; the margin between that and the cost basis is the agency's, and there is no
separate "partner tier" priced above the public number. Exclusivity is per vertical and per sending domain, agreed in
one line before the first run, because the sending domain is the part that actually collides.
The uncomfortable honest part
Bounces are not a guarantee anybody can make. They depend on the sending domain, the daily volume and the age of the
row. What can be guaranteed is the method: check before the send, match the address to its own domain, feed every
bounce back into the file. An agency that has been sold a bounce-rate promise has been sold something the vendor does
not control — and when it fails, the agency is the one standing in front of the client.
Buy capacity with a measured failure rate. It is a smaller number and a longer relationship.
Cost basis, scope and the three plug-in modes are published here:
agency partner program
— and the engagement itself is described at
marketing engineer.
If you run an agency and want the first segment priced, the Telegram link on either page is prefilled.
Top comments (0)