At ChartMogul, we have been long supporters of content marketing and inbound sales. So far, most of our lead generation is the result of a strong brand, word of mouth, valuable resources and blog posts, and rock-solid documentation.
However, as we started expanding into non-traditional areas of subscription companies and beyond SaaS hubs, the need to connect with our audience directly increased. We recently built our first-ever outbound team — they identify, research, and reach out to prospective clients who are in the best position to benefit from our subscription data platform.
Personalization at scale can be painstaking. It’s common knowledge that arming an outbound team with lackluster tools almost guarantees failure. To set our team up for success, we made it a priority to ensure our SDRs had the appropriate workflows and tools to execute.
We wanted to do this without tying ourselves to a solution like Salesloft or Outreach, so we stuck to our roots and opted to build our own modular solution for testing purposes. This would allow us to work out the kinks and understand how outbound sales contribute to our pipeline and revenue growth.
This post describes that process: from getting the requirements and building the workflow to selecting the tools and implementing it.
First things first: Figuring out our requirements
This is probably intuitive but important to point out nevertheless: Before you start building anything, you have to understand what you’re looking to develop.
We started by figuring out the non-functional requirements (or guiding principles, as we like to call them) for outbound sales. We wanted to introduce a process that:
- works well with our current toolset,
- is relatively simple for easy onboarding and usage by non-developers,
- and is also modular as we wanted to try things and not commit to a particular toolset.
For us, to achieve our goal, we figured out we had to work through these technical points:
- Identify the target industries/geographies/segments that we want to focus on
- Identify the right-fit accounts within our target segments
- Identify the right people/roles within each company
- Get their contact details
- Enrich with additional information about the company
- Clean up data, de-duplicate, etc.
- Send out custom messages and follow-ups on each prospect based on our research
With this list of activities in hand, we were ready to get building.
Translating the requirements into a workflow
With the above requirements in mind, we built support for the following workflow:
- Generate a target account list
- Select company from target companies
- Check if the company exists in our systems
- Find leads within the company
- Enrich with additional information (location, technology, size, etc.)
- Identify the most appropriate lead
- Assign to the appropriate campaign with the correct messaging/value proposition
- Send to outbound tool
- Personalize the messaging/value proposition
- Review before sending
- Measure the results of each campaign
This workflow applies to a specific type of outbound sales — primarily, it assumes that the target list of companies exists and is not focused on identifying the right-fit companies.
Instead, it is an operational workflow that allows an SDR to go from the target company to initial outreach very fast, without going through multiple tools or sourcing email addresses by hand, which is typically one of the most time-consuming steps in the process.
Tools selection: Implementing the workflow
As I mentioned above, we started with the intent of creating a modular workflow, where we can experiment in a low-cost fashion and replace and upgrade the services after learning and iterating.
The tools we chose to start with are the following:
- Email finder: Snov.io. Snov is a simple, easy-to-use, reliable email finder tool that works well with APIs.
- Company data enrichment: Purple Sonar. A tool that is primarily used to send signals about company changes (e.g., adding a tool to their stack). However, we used it to enrich our existing accounts with information such as technologies, location, size, etc.
- Email outreach: Lemlist — a tool that provides easy-to-use email outreach. Simple to start with, covering our initial requirements.
- Workflow tool for SDRs: Google Sheets. We used an old-fashioned spreadsheet with some dropdowns and Arrayformulas() to be the single place of controlling and monitoring this process.
- Stitching things together: Pipedream. A fantastic low-code tool, think of it as a cross between Zapier and Node.js.
The idea was to start fast with a stable workflow. These tools do the job, each of them can be easily replaced if necessary, and the whole thing is reliable.
Building the flow and connecting the tools
In this section, I will walk you through the process we followed to build our outreach tool for outbound sales.
I recorded a short video that covers the whole process if you prefer that medium over reading:
We started by creating a Google Sheet with three sheets:
- List of companies for which we’ll collect data
- People within these companies that will act as our leads
- Campaigns & other dropdowns
The SDRs start the process by clicking on a link, which is a webhook to Pipedream that triggers a workflow. We also pass some information along with link:
Once the SDR clicks this link, the workflow starts and it goes through the following steps:
- Finds the domain on Snov.io
- Finds any leads associated with that domain
- Enriches the results from Sonar
- Sends the results to the next tab in our Sheet
The first part of the process is finished, and we now need to review the leads.
On the leads tab, we now have a list of leads from the previous step. The next task is to:
- Review the leads
- Select the ones we need for the campaign
- Assign to a campaign
To do this, we use a very similar approach as before. Again a unique webhook link is created, but before that we select our campaign from a list in a dropdown:
Once the SRD clicks the Send Lead URL, it acts as a button that triggers the following actions:
- We first do a few checks:
- Does the domain exist in our CRM already? If yes, we send a Slack message to the person who sent the request with the existing lead in our CRM for manual review.
- Does the email exist in Lemlist? If yes, we send a similar message on Slack, and we stop the process.
- Assuming that these two criteria are met, we then send the lead with all its details to our CRM, the lead is added to the Lemlist campaign, and the process continues there!
Dropdowns and updating
There is a list of dropdowns used throughout the process in Google Sheets.
This is maintained in a separate tab that stores all the options we use in the first two tabs. For instance, it has a list with the Sales Reps, so they select themselves, their Slack IDs so that the notifications are sent to each of them, and so on.
This also includes the campaigns from Lemlist. Since new campaigns are added frequently, we have a 1-hour Cron job to update the campaigns and refresh the dropdowns. This is also maintained in Pipedream.
Trials and onboarding
Once we built the prototype and did a bit of debugging, we started testing with real leads. The good thing was that there is a final review step on Lemlist before we send any emails, so we were comfortable that no big disaster would happen, even if something in the workflow broke. 🙂
We were planning to start slow, fix as we identify, and continue building. Fortunately, the process was fairly straightforward and we generally did not have many iterations. Most back and forth was in error handling — what happens if the domain does not exist or is misspelled? What if there is no lead identified? How about API limits?
We also had a dedicated Slack channel for immediate feedback and fixing any critical issues, as well as a Notion board to capture feedback, feature requests, a roadmap for future improvements, etc.
After a couple of weeks of iterating, we were in a steady state and our tool was properly in production!
The results of our automation tool
It’s still early days, but the results we see from the workflow we’ve built are very promising. For one thing, our outreach volume went up by more than 50%!
Naturally, the main goal of outbound sales is not to just blast out messages but to generate high-quality leads and close deals with them. Our early results with this are making us optimistic:
- 1700 leads identified and contacted
- 26 different campaigns
- 80% open rate
- 14% reply rate
- 10 leads advanced to deal stage
- 5 won deals
Scaling outbound sales further
With an eye on continuous improvement, we keep a list of future developments we want to introduce. These are our main priorities for the future:
- Build a similar tool for inbound: We need to reach out to our inbound trials and leads in a semi-automated manner, using information that comes from our systems for customization and personalization;
- Some tools of our stack kept having issues: Thankfully, the design is modular, so we are in the process to update and potentially replace them;
- Move some of our data from Google Sheets to a database for robustness and speed.
- Better enrichment for our leads.
Overall, we created a tool that fits our needs and let us try and experiment in our outbound efforts without spending too much time evaluating and deploying a heavy sales outbound tool. It allowed us to iterate and better understand our requirements. After a while, we will surely need to move to a more robust tool. Whenever that time comes, we will know much better what we need and be able to implement it better and faster.