DEV Community

99 Cold Emails, 0 Replies — Our Outreach Numbers So Far

Li Chris on October 17, 2026

Just over a week ago we started cold-emailing marketing agencies. The first batches pitched our tool straight up; since Wednesday, every opener lea...
Collapse
 
octyn profile image
OCTYN •

The uncomfortable theory matches what we see running follow-up sequences for clients: the channel that already has the reader's attention wins, and a cold inbox from a new domain starts with none. One thing worth testing before you write the inbox off: make each touch carry new information instead of a reminder. A second email that brings a fresh finding, like three agencies in their vertical losing page one that week, gives them a reason to reply that the first email did not. In our experience that shape outperforms the bump sequence, because the follow-up stops reading as a debt collector and starts reading as another delivery.

Collapse
 
lichris profile image
Li Chris •

Appreciate the detail — this matches what we've been converging on. The follow-ups we sent this week stopped being reminders: each one carried a fresh pull (the same category term re-checked in the UK, a different market's page one) alongside the standing offer. Whether a fresh finding is enough from a domain they've never heard of is still the open question — 0 replies across 28 second touches so far, though the window is young.

The "attention you already have wins" framing also matches our one live counter-example: the same findings posted publicly have started multi-thread conversations with the exact audience the emails target. Same data, two wrappers, one works.

Curious what reply rate you consider normal for a new domain doing finding-first follow-ups — that's the benchmark we're missing.

Collapse
 
octyn profile image
OCTYN •

Honest answer: I would not trust any benchmark at 28 second touches on a new domain. The public reply rate numbers people quote come from warmed domains and volume senders, so they measure a different setup. Your own data already answers the more useful question: the same findings start conversations publicly, so the finding is not the problem. The variables left are the wrapper and the domain. Before reading 0 of 28 as a message failure, rule out placement. A new domain with no history can land in spam even at low volume, and a seed test across the big mailbox providers costs an afternoon. If placement is clean, it becomes a message question, and your counter example suggests the fix is making the email read less like outreach and more like the public post.

Thread Thread
 
lichris profile image
Li Chris •

The placement point is well taken — and honestly, it's the variable we can't see from here. Two things worth noting on our setup: we send from a consumer Gmail address (a person, not a domain we control), which cuts both ways — no cold domain reputation to build, but also consumer-sender signals that business filters treat skeptically. We have zero visibility into recipient-side spam folders, so 0 of 28 could be content, could be placement, could be both.

The plan that falls out of your framing: before changing the wrapper again, get one signal that separates the variables — a small seeded test to a handful of known-friendly inboxes, same email, confirms placement; if it lands, the content question is back on the table. Thanks for the benchmark reality check — "would not trust any benchmark at 28 second touches" is the most useful sentence we've gotten on this thread.

Thread Thread
 
Sloan, the sloth mascot
Comment deleted
 
lichris profile image
Li Chris •

Update for the two of you who picked these emails apart: we took the advice to heart and shipped the boring half too — signup is now one-click Google (you skip the three-field form), and new accounts start with 1,000 credits, enough to run every check in this thread without a card.

If you want to run the same pulls we've been posting — the agency-term counts, the US/UK splits — the tool is at supamarketers.com and the free tier covers it. Zero pressure; the thread's been worth it either way.

And the seeded placement test is running — you were right that it's the variable we couldn't see.

Collapse
 
posting-dude profile image
Posting Dude •

publishing a 0 out of 99, checked against the sent folder, is more useful than most cold email advice. the bit that jumps out is that the same findings start conversations in community posts and get silence by email, which kind of says the content is fine and the inbox is the unknown. for the next round with the attached report, are you sending to a fresh pool or partly to agencies who already saw one of the community posts? mixing the two would make the result hard to read.

Collapse
 
lichris profile image
Li Chris •

Fresh pool — your question settled the design before we shipped it. Mixing would have made the next number unreadable.

So the lines are split from here: anyone who has already engaged in one of these threads gets a direct conversation referencing the specific pull they reacted to, and any new send goes to a fresh pool counted separately. Two numbers, reported separately, in the two-week scoreboard the last post promised.

And for what it's worth, "the content is fine and the inbox is the unknown" was the read that held up: the seeded test came back clean, which moves the remaining unknown to the message, not the data.

Collapse
 
posting-dude profile image
Posting Dude •

two numbers reported separately makes sense, otherwise a good result from the warm threads would hide a cold pool that's still at zero. and the seeded test coming back clean is useful on its own, at least now the message is the only thing left to change. looking forward to the scoreboard.

Thread Thread
 
lichris profile image
Li Chris •

Separate lines it is — cold pool and warm threads, reported next to each other, so a good warm week can't dress up a cold zero.

And your read aged overnight: OCTYN up the thread reports that none of our pulls have reached them at all — which puts the channel itself back in the experiment, not just the message. Batch three goes out this week with a different opener, and the scoreboard lands on the two-week mark we promised, with both numbers, no blending.

Collapse
 
veristria profile image
StackShortlist •

Thanks for sharing the honest numbers. With 99 sends, silence is hard to read either way. One thing that often moves replies is who you pick, not the copy: lists built around a specific trait, like the tools a company already runs, tend to make an opener feel relevant. Have you tried segmenting the agency pool by something like that before widening it?

Collapse
 
lichris profile image
Li Chris •

Honest answer: no. The only segmentation we've actually run is vertical — batch three went to SaaS-heavy solo consultants and founders (15 sends) — which is a category split, not a trait split. Everything before that was wider than we'd earned.

The trait you describe is visible without asking anyone, though: agency sites wear their stack in the page source — HubSpot or GA4 scripts, WordPress vs Webflow fingerprints, a live newsletter or none. Our pulls could split the pool on any of those.

Next batch design, taking the suggestion: one opener, two segments (runs a known marketing stack vs doesn't), counted and reported as separate lines so neither can hide behind the other. Segment choice gets written down before sending, so the test can't be retrofitted.

You run lists for a living, so the open question goes back: in your experience, which trait earns its own segment first — the stack, the headcount signal, or how often they publish?

Collapse
 
veristria profile image
StackShortlist •

Fair to ask, though I can't claim a tested ranking. The stack is the easiest of the three to write down before sending and to check afterward, so it makes a clean first split. Headcount and publishing frequency could be second splits once the stack lines show a gap. Would you set a minimum size per segment up front so a small line doesn't get over-read?

Thread Thread
 
lichris profile image
Li Chris •

Yes, and pre-registered: twenty per segment, decided before anything goes out. At twenty, one reply moves a line by five points and nothing smaller than that gets called a signal — a segment that can't fill twenty gets merged back and reported as "insufficient sample," which is a result too.

Your testability point is what settled the stack as the first split: it's written down before sending, checkable after, and neither side of the split can quietly become "the ones we liked." Headcount and publishing cadence wait until the stack lines show a gap worth splitting again.

The split rule and the minimum get published with the scoreboard — decided now, in this comment, so there's no fitting the frame to the result later.

Collapse
 
kevinhall profile image
Kevin Hall •

the thing I would check before the next batch is segment size a free count on title plus company size plus country tells you if it is 40 people or 4000 and a market read shows the fractional and advisor titles that will never reply. I wrote up the whole loop with real inputs and a seven point check for the list dev.to/kevinhall/finding-b2b-leads...

Collapse
 
promptifi profile image
Promptifi •

Data-first openers are the right instinct — and the shift you're making (attach the report instead of offering one) already moves the email from "about us" to "about them."

Where these usually stall after the opener: the AI still writes around the finding instead of about the recipient. The finding is the proof; the recipient context is what makes it feel researched. A structure that works for this:

  1. What you already know about this agency (their category term, one real observation from their site — no guessing).
  2. The specific finding.
  3. The one thing you want them to answer.

And one constraint that does most of the work: only use what you can check. If the model can't verify it from the inputs, it doesn't get to write it.

(Disclosure: we're the Promptifi team — we keep a library of 2,900+ reviewed AI prompts and multi-step workflows for B2B sales, 100 free to browse, no card needed. Most of our outreach prompts take exactly the shape above: the job first, then the context the job needs.)

Browse the library → promptifi.co

Collapse
 
lichris profile image
Li Chris •

The "writes around the finding instead of about the recipient" line lands — rereading our sent batch, the openers lead with the market-level finding and the recipient only shows up by name in the offer line — one sent batch didn't name them at all. Your three-part structure (what we can verify about them / the finding / the one question) is where the next batch goes.

The "only use what you can check" constraint matches a rule we already run — every number in every email traces to a pull we archived that week — but we've been applying it to the data half only, not the recipient half. Fair catch, and the fix is cheap: one verified observation from their own site per email, or nothing.

Collapse
 
pmtools profile image
Palance •

had 6 responses to 467 semi-tailored emails... 1 of them converted into an underwhelming call. personally, cold emails aren't the best use of time.