Your recruiting firm is good at matching engineers to roles. But you're spending half your time hunting for qualified candidates instead of doing the actual recruiting work - and your pipeline is inconsistent.
Cold email works for engineering recruiting, but not the way most people do it. You can't just blast generic "we have a role" emails to engineers and expect responses. You need to structure your outreach around the specific pain points that engineers actually care about, and you need to build a list strategy that surfaces the right people at the right time in their job search.
Here's what actually works.
Who You're Actually Reaching
Most engineering recruiting firms make the mistake of trying to email employed engineers with passive candidate pitches. That's backwards. Your best responses come from three groups:
1. Recently unemployed engineers (the 2-4 month window) - These are people who just left their last role or got laid off. They're actively looking, they're checking email, and they respond to direct outreach. You can find these through LinkedIn (filter by "Open to Work"), recent profile updates, or layoff tracking sites like Crunchboard.
2. Engineers who just got rejected in interviews - These people are frustrated, still job-hunting, and more likely to listen to a recruiter. This is harder to identify systematically, but you can find them through LinkedIn monitoring for profile updates that show 2-3 month gaps between role changes.
3. Contract/freelance engineers between gigs - They're income-motivated, they respond fast, and they're often available to start immediately. Target freelancers on Upwork, Gun.io, or Toptal who haven't had activity in 2+ weeks (sign they're between projects).
The fourth group - passive employed engineers - should be maybe 20% of your volume. They respond at lower rates and take longer to move. Focus your main list on groups 1-3.
The Email Structure That Gets Responses
Here's the template that works. It's specific, it's short, and it speaks to what engineers actually care about - the role itself, not the company branding.
Subject: Python + cloud infrastructure work in [City]? Hi [First Name], I'm recruiting for a backend role that's opening next month - Python, AWS, Postgres. Fully remote, salary $180-210k. You've got the core skills they want. It's a contract-to-hire situation with a solid team (no startup chaos, they've been bootstrapped for 7 years). Worth a conversation? [Your Name] [Phone] [Company]
Why this works:
- Subject line is specific tech, not generic - "Python + cloud infrastructure" tells the engineer exactly what the role is about in 5 seconds. "Exciting opportunity" gets 15% open rates. Specific tech gets 35-40%.
- Opening acknowledges their skills directly - Not "we think you'd be great" but "you have the skills they need." It's factual and removes the fluff.
- You give the salary upfront - Engineers hate non-negotiable ranges and vague "competitive compensation." Put the number in. If they're under-qualified for your range, they self-select out. If they're interested, they know what to expect.
- You add one detail that shows you're not bulk-mailing - The "bootstrapped for 7 years" line shows you researched the company. Not hours of research - just a 30-second LinkedIn check. But it signals this isn't a blast email.
- Close is short and question-based - No "looking forward to hearing from you." Just "Worth a conversation?" It's low friction. They either reply yes or delete.
Keep the whole email under 6 lines. Engineers skim. They see the tech stack, the salary, and one differentiator, then decide in 10 seconds.
Building Your Email List - The Real Bottleneck
Most recruiting firms fail on list quality, not email copy. You need 500-1000 emails per open role to get 1-2 solid candidates. That's not optional. It's math.
Here's how to build that list without spending 20 hours manually:
Segment by tech stack and region first - If you're recruiting for a Python/AWS role in the Bay Area, don't email Java engineers in Austin. Use LinkedIn Sales Navigator with filters: Python experience, AWS, location. That gets you from 500,000 possible engineers down to 2,000.
Layer in recency signals - Export the list, then rank by:
- LinkedIn profile updated in the last 60 days (strong signal they're job searching or recently changed roles)
- "Open to Work" flag active
- Connection history (people who recently changed companies get priority)
Use email finding tools to complete the data - LinkedIn gives you names. Tools like RocketReach, Hunter, or Clearbit fill in email addresses. Budget 2-3 minutes per prospect to verify the email is correct (check if it appears on their GitHub, personal site, or company domain).
For a single role, this takes 8-10 hours upfront. For 3 open roles, you're reusing lists and it gets faster. By month 3, you're down to 4-5 hours per role because your list infrastructure is already there.
Response Rates and What to Expect
Here's what realistic performance looks like:
- Open rate: 35-45% (specific subject lines, cold email from recruiter domain)
- Reply rate: 8-12% (interested, not interested, or asking questions)
- Positive reply rate: 4-6% ("yes, tell me more")
- Phone conversation rate: 40-50% of positive replies will actually take a call
- Qualified candidates per 100 emails: 2-3
So for every 500 emails you send, you should get 10-15 conversations and 2-3 qualified candidates to present. If you're doing 3 rounds of sending to different lists, that's 6-9 viable candidates per month per open role.
If you're seeing lower numbers, the issue is usually list quality (too broad, too old) or subject line specificity (still too generic). Copy is rarely the problem.
The Scaling Problem Most Recruiting Firms Miss
One person can run cold email outreach for 2-3 open roles. Beyond that, you need a system. The bottleneck shifts from writing emails to managing replies, updating lists, and tracking who's been contacted.
You need:
- A CRM or email tracking tool that logs every send, open, and reply (Gmail alone won't scale)
- Standardized follow-up sequences (3 emails total, spaced 4 days apart)
- A process to remove bounces and unsubscribes automatically
- A way to tag candidates by role, status, and whether they're qualified
Without this, you'll spend more time on admin work than actually recruiting. If you want to scale beyond 5-8 open roles, you need infrastructure in place first.
This is also where many recruiting firms that try to run cold email themselves get stuck - knowing the strategy is one thing, building the systems to execute it consistently across multiple campaigns without losing track of candidates is another. Managing candidate pipelines, reply handling, list building, email deliverability, and campaign tracking while also closing candidates is where most teams hit a wall and stop.