How to Write Recruiting Outreach That Developers Actually Reply To
Every working developer receives outreach constantly, and almost all of it is deleted within seconds. Not because they're never open to moving — many are — but because the messages are interchangeable, obviously mass-sent, and ask for a lot while offering almost nothing.
The bar is genuinely low. A message that shows one minute of actual attention stands out dramatically, and reply rates reflect that.
Why the standard message fails
The typical outreach opens with "I came across your profile and was impressed by your background," names a "fast-growing, well-funded company," describes an "exciting opportunity," and asks for a 30-minute call. Every clause is interchangeable with every other message they received this week.
Worse, it asks the recipient to do all the work: to be curious enough to ask what the company does, what the role is, and what it pays. Busy people don't. They delete.
What a good first message contains
Five things, in about 150 words:
- Something specific to them. A project, a talk, a repository, a post, or the actual technology they work in. One sentence, and it must be genuine — false specificity is worse than none.
- What the company does, in plain language. Not the tagline.
- What the role actually is — the problem they'd own, not the title.
- The compensation range. This is the single biggest lever on reply rate, and most recruiters omit it.
- A small, clear ask. Not "are you interested in a call," which requires a decision. "Worth a quick look?" or "Want me to send the details?" is easier to say yes to.
An example
Hi [name] — I saw your work on [specific thing] and the [technical detail] approach you took. We've got a similar problem at [company].
We build [what the product does, plainly]. We're hiring a [role] to own [the specific problem] — right now that means [the concrete near-term work].
Range is [$X–$Y] plus equity, [location or remote policy]. Stack is [three things].
If it's not the right time, no problem at all. Want me to send more detail?
That's it. Short, specific, answers their questions before they ask, and makes it easy to say no.
What to cut
- "I was impressed by your profile." Says nothing and everyone uses it.
- "Exciting opportunity," "rockstar," "unicorn," "disruptive." Empty adjectives.
- The company boilerplate paragraph. They'll look you up if they're interested.
- A long list of requirements. This is an invitation, not a job post.
- "Are you free for a quick 30-minute chat this week?" as the entire message. You're asking for thirty minutes before giving them thirty seconds of substance.
- Flattery that could apply to anyone.
Include the salary range
Recruiters resist this more than anything else, and it's the change that most reliably moves reply rates.
Someone happily employed has no reason to spend time discovering that your role pays less than their current job. Including the range removes the main cost of engaging. It also filters out the conversations that would have ended in week three anyway, which saves you far more time than the occasional candidate who'd have accepted less.
If you genuinely can't publish a number, say something useful instead: "we benchmark at the [n]th percentile for [market]" or "the band for this level is [X]." Silence is the worst option.
Personalisation that scales
Genuine personalisation takes two to three minutes per candidate. That's the actual cost, and it's worth it: a smaller, well-researched batch consistently outperforms a large generic one.
Practical approach: template the middle (what the company does, the role, the range, the stack), and write the first sentence fresh every time. Look at one thing they've made or written and reference it accurately. If you can't find anything specific to say, that's a signal they may not be well-targeted.
Following up
- Follow up once, roughly a week later, briefly. Add something new — a detail about the team, a link to something relevant.
- Then stop. A third and fourth message converts almost nobody and reliably annoys people who talk to each other.
- Take "not right now" as a real answer, and ask if they'd like to hear from you in six months. Many will say yes, and that list is more valuable than a cold one.
- Never contact someone who has asked you not to. It's the fastest way to build a reputation among exactly the people you want.
The details that quietly matter
- Get the name and the pronouns right. Errors here end the conversation.
- Read their profile before claiming you did. Pitching a backend role to someone who has done frontend for six years is a common and fatal tell.
- Don't contact people who just started somewhere. Two months in, the answer is no and the message is irritating.
- Reply fast when they respond. Interest decays in days. A three-day gap after "sure, tell me more" wastes the whole effort.
- Be a person. Outreach that reads as human, with a name and a real signature, outperforms polished template voice.
Measure it
Track reply rate — not messages sent. If you're below roughly one reply in ten on a well-targeted list, the message is the problem, not the market. Change one thing at a time: add the range, cut the boilerplate, rewrite the opening line. The differences are large and quick to see.
The takeaway
Developers ignore outreach because it's generic, vague about the work, and silent about pay. Fix those three and you're ahead of nearly everyone contacting them. One specific sentence, a plain description of the problem, an actual number, and an easy way to say no — around 150 words, personalised in the parts that matter. Then follow up once and leave it there.
Prefer candidates who come to you? Post your role on JobsList.dev and reach developers who are already looking.