🚀 Playbook: How I send cold emails to developers
Everyone hates cold emails. Developers hate them even more. Here's how I get solid open rates and CTRs
At least 2 things in life are certain:
Developers hate marketing in all its forms
Developers REALLY hate receiving cold emails
So when one of my cold email experiments performed consistently well with developers, I was thrilled.
It’s an approach that combines multiple steps and several assumptions. But the underlying keys to success really come down to doing two things well:
Identifying relevant targets before sending out any emails.
Communicating with email recipients in a normal, effective way.
Here’s the whole playbook broken down step by step.
Use GitHub to find relevant targets
This playbook revolves around GitHub, which is the world’s largest social network for technical people. I first tried it as part of the go-to-market play for Preevy - an open-source tool that we built at Livecycle.
Unlike other social networks, GitHub isn’t built for direct communication or chat. It’s designed to get people to look at projects and contribute code. GitHub users can also leave a “star” on projects they’re interested in. It’s equivalent to an “upvote” or a “like” on other platforms. And from a marketing and outreach perspective, GitHub is a powerful source of information.
So, once Preevy had reached a hundred stars or so, I used GitHub to better focus my upcoming marketing efforts. I did this by analyzing our list of “stargazers”. By understanding who was interested in our tool, I could do a better job of targeting similar people going forward.
I started by looking at commonly-starred GitHub repositories. I used a tool called Clickhouse to identify the other GitHub projects our group of stargazers had starred most frequently. These commonly-starred repositories represented an expanded pool of potential stargazers (and users) of Preevy.
Focus on the people who want to be contacted
This expanded pool of targets was a focused list of qualified personas - people who (likely) possessed the technical skill, experience, and interest to be relevant for Preevy.
My next step was to try and see if I could further focus on the people in this pool who also showed qualified intent.
In general, when you only qualify the persona, you’re just assessing if the people are technically qualified to do what you ask of them. When you qualify intent, you’re making sure the people are willing and interested to do so. Qualifying both persona + intent = you’re in really good shape.
In my case, the “intent” I needed was the willingness to open an email. To qualify this intent, I reduced my list of targets to those who had exposed email addresses on their GitHub profile page. I assumed that by publically listing their email address, these users were announcing that they were open to being contacted, out of the blue.
Exporting lists of stargazers from GitHub
Once I had my list of qualified targets in mind, I needed to export the list and their email addresses. But this was easier said than done.
Going through GitHub profiles one by one would take far too long, so I used the GitHub GraphQL API Explorer to batch the process and speed things up.
The GitHub GraphQL API provides native support for exporting lists of stargazers, and the Explorer is a convenient way for actually executing it.
It wasn’t glamorous, but it was the path of least resistance to extract the info I needed.
To see exactly how I used the API to export the user data from GitHub, check out this technical playbook with the details.
Give before asking for something in return
With the help of the GitHub API, I was able to generate a long list of qualified names and email addresses kept neatly in a spreadsheet.
But before actually reaching out to these people, I did one more thing to increase my chances for success.
I found a way to “give” before asking for something in return.
The vast majority of cold outreach is just someone asking you for something - Try this. Buy this. Subscribe to this. It’s far more uncommon for someone to offer you something. This is why many of us are pleasantly surprised when someone offers us a compliment or positive feedback. We instinctively don’t expect it.
In my experience, when you first offer and give, the recipient is more willing to listen and reply. And even if you end up asking them for something later on, they are more likely to respond positively once they’ve connected with you in this positive way.
The easiest and quickest way for me to “give” to my list of target users was to follow them on GitHub.
Like other social networks, GitHub allows you to follow other users. Unlike other social networks though, GitHub users have far fewer followers on average. When you follow someone, it means that you are taking the time to acknowledge them and their work. And chances are, they’ll see the notification and appreciate the thought.
By first following these users, I created an opportunity to focus my cold email on what I’ve given them (“just followed you on GitHub!”) and not what I want in return (“check out my open source project!”).
But once again - easier said than done.
Following thousands of GitHub users one by one, by hand, would take forever. I sped things up by using a Python script to automate this process (I’ll be posting the details in a separate, technical playbook - stay tuned).
Before long, I had a spreadsheet with my targets and I had followed them all on GitHub. Now I was ready to reach out.
Send a human-sounding email
My first few rounds of emails were sent via HubSpot. But I was soon blocked from sending more. HubSpot picked up that this was cold outreach, and while there was nothing technically (or legally) wrong with what I was doing, they weren’t into it. They didn’t love the fact that I was marking these people as “marketing contacts” (a HubSpot prerequisite when sending emails such as these) when the recipients hadn’t yet opted in.
Not wanting to compromise our HubSpot account, I moved over to other email marketing platforms.
I am currently sending most of my emails via AdRoll. I’m not thrilled with their platform, but it does the job. For now. Maybe we’ll cover some of these solutions in another post.
But for now, let’s turn to the email itself. It looked something like this:
Subject: hi - just followed you on github!
[first name] 👋
I just followed you on GitHub - Looks like you're a Docker/open-source fan, so we have that in common. I'm always on the lookout for smart people I can connect with and learn from, so I figured I'd reach out.
I also thought you’d be interested in some of the tools my team is working on:
"Preevy" - We've built an open-source CLI that makes it easy for developers to provision shareable preview environments for any Docker-Compose application the the cloud.
Docker Extension - We're launching a Docker Desktop extension that lets you share your local development environment with remote team members and Get instant feedback without the hassle of commits, deployments and CI builds. You can also create a preview environment in the cloud at any time if needed.
If it sounds interesting, we’d be thrilled to have you try it for yourself. Here are the relevant links:
Obviously, no pressure or strings attached. We're just looking for some smart people who can benefit from our tools.
And if there is anything we can do in return (star a repo, give feedback, send you free swag etc. etc.) let me know and we'll do our best to make it happen!!
Thanks for your time! 🤩 🙏
A few notes regarding the email:
It wasn’t stylized or decorated. I wanted it to look authentic and personal
I intentionally used lower-case letters for the subject line so it would look more like a real person wrote it
I started by emphasizing what we have in common, and then presented what we’re working on in a non-salesy way
I ended the email by offering to help in any way possible, with a few specific examples
This approach has been working pretty well for me:
~60% unique open rate
~30% unique click rate
Hundreds of GitHub stars
Dozens of nice replies and collaboration opportunities
Here are a few of the human responses that I’ve received. Note how some people even complimented me on my marketing!
To sum up my key suggestions for cold-email outreach:
Try to double and triple qualify your targets (look for intent, not just persona)
Give before you ask for something in return
Communicate like a human
Don’t try to sell anything, but clearly present your offering
Automate and scale the process as much as you can, but not at the expense of the above steps.