Automated follow ups : Make the most out of your CRM
Hey I’m back ! I figured I’d talk about one of my favorite things in growth : CRM automation.
While focusing on lead generation, it’s easy to forget that growth actually rests on people buying your product, not just sitting in your CRM.
That is what I’ll be talking about today : how to get as much “sales value” as possible of your prospects with automated follow ups.
In my previous company, when we figured out how to deliver emails consistently, we sent a lot of them. And I do mean A LOT.
So of course, our sales team was in a rush, signing leads left and right and didn’t really have the time to stick to prospects that were mildly hot or that asked to be pinged in a few days.
Once it all settled down, we found out that many leads would just sit in our “follow up” stage in our CRM for days, even weeks.
Given that nowadays, you need around 8 calls to reach a prospect (vs 3.7 in 2007 according to a TeleNet study), following up took up to 3 days a week per salesperson.
The follow up process was tedious for our sales team, so we decided to automate parts of it.
The goal of this project was to make sure the energy of the sales team was spent on closing deals rather than manually following up these leads.
In the end the project saved around two days of sales time a week.
We measured a growth in our closing rate of 35% over the course of 3 months (compared to the 3 months before the implementation).
As a positive side effect, prospects that declined to be clients gave us legitimate feedback on our offer and our product. That type of information is priceless for early stage startups.
Let us get into it :
I’ll talk first about the follow up process as a whole and then get into the tools/tech required to do so.
The follow up process
Anytime a prospect answers, the sales person takes them out of the loop and carries on, hopefully to close a deal.
The driving idea was to impersonate a classic sales follow up process as much as technically possible
In the end we settled on 3 emails sent from the sales person inbox, and if they did not answer, we would send a custom automated text as well as a ringless voicemail the same day.
After this loop, if the prospect did not answer, I would automatically label them as non-answering in the CRM.
The content can be very simple since you already know the prospect. This is still not a reason to not custom your email, since your prospect would be able to tell it’s an automated email. Here’s a sample that works well enough :
Subject : Call request
Hello *first name*,
This is Anas from myCompany where we do xyz,
We’ve talked about a potential fit between *company name* and myCompany recently, when do you have 10 minutes to talk about the next steps ?
You can go deeper in detail depending on the type of follow up. We had a CRM stage for missed meetings and missed calls so we would be able to customize the email copy even more.
You can go deeper in detail depending on the type of follow up.
We had a CRM stage for missed meetings and missed calls so we would be able to customize the email copy even more.
If the prospect doesn’t answer, send him a second email asking if they saw it.
The trick is to use block quotes to make it seem like you actually clicked on “answer” from your email client. Here’s how it looks on gmail:
To do so you have to send your emails with HTML, and use the blockquote tag to wrap the content of the previous email.
The key here is to use credible timestamps. If both your follow ups emails are sent at 16:53, all the magic is lost. When you populate your fields, make sure that the sending hours are randomized.
The third email is a copycat of the second email, they can be interchangeable in terms of content.
I made a gist if you want to see what it looks like in HTML.
As long as potential leads don’t tell you straight up “no” after being this insistent, the mentality is to continue pinging until they answer.
People are usually afraid of being this “aggressive” thinking that it turns prospects off. In reality most interested prospects tell you some version of “sorry I was busy” to carry on.
This is why to trigger an answer we move onto the text message and the direct voicemail at this point.
Again the key here is to mention at least their name, their company, have an actionable CTA and the means of contact:
Hello *first name*,
I have been trying to get in touch with you by email to talk about the fit between myCompany and *their company*.
When would you be available for a quick 10 minutes chat ?
As for the voicemail, it might sound dumb but the salesperson recording must be smiling while recording, it makes a world of difference upon hearing it back : try it for yourself !
The message should be structured the same way : introduce yourself, explain that you already talked and that you tried to join them and finish by a call to action.
A variant of the loop that works is to send the 3rd email, text and voicemail on the same day, sending the email after the text and voicemail.
That way, you can make the first sentence of your email with a variant of “I tried to call and left a message”.
There was no significant difference between the two loops but the last one felt cool and more custom.
- Your CRM (obviously) I used Streak but it can be as simple as a Google Sheet or as exhaustive as Salesforce.
- Zapier/Integromat/Any flow automation tool/AWS Lambdas : I used any of these as webhooks to trigger corresponding events. I ended up using lambdas because it scales better than any solution. It requires a bit of dev time but saving a lot of money in the long run.
- Twilio/Mailing Vox APIs to get phone numbers
Here’s an example of the setup with Streak and Zapier:
Streak presents itself as a CRM as easy to use as a spreadsheet, it’s pretty intuitive and integrates right into gmail.
The simplest of ways here is to create a stage reserved for prospects that you want to follow up with automatically so I created the Automated Follow Up stage.
Next, we want to be able to do trigger actions when “Anas Lead” is placed in Automated Follow up.
Here’s how to do it with Zapier:
- First you have to copy a Streak API key by clicking on Integrations and clicking on “Get An API key” to connect your Streak account to Zapier.
- Choose Streak and “Box Change Stage”, click on continue and paste your API Key.
- Choose your pipeline and your automation stage
- You can then choose to test the integration, which should be all good. You can choose any action after that ! You can send emails with any of these clients for instance and use the content talked about previously.
- To be more complex (i don’t recommend this) but you can create other zaps delaying them by a day to create content. You can use Zapiers delay and formatter to do so. Zapier formatter helps you create variables you can use in your email and SMS content. If you have coding experience check out the advanced example below.
Advanced example (lambdas)
This example is just an overview of how you can do super customized actions thanks to lambdas. To work with lambdas on a regular basis i would STRONGLY recommend you work with the Serverless framework.
All the CRMs use this concept to provide automation given various triggers and Streak is no different.
We are going to create our webhook with an Amazon Lambda and Streak’s webhook service.
Lambdas are functions as code, that can be triggered in different ways.
Here we can use our Lambda as an API that Streak will call when a prospect lands into a given stage.
You land on the Amazon editor, i just included the “print event” line to show us what Streak lets us work with. The important part here is that your answer must be an object containing the keys ‘statusCode’ and ‘body’ even if the body is empty.
A 200 status code will tell Streak that the request was successful.
Scroll up and click on add trigger. Create a new API and select open as your security for now and click add:
You’re now back on your dashboard, click on your new fresh trigger and copy your API Endpoint URL:
Create your webhook with Streak with whatever you like (Postman, CURL …) :
You’re going to need your API Key, your previously copied API endpoint, and your pipeline Key which is the string at the end of your url when you navigate the pipeline in question:
You’re now all set up !
Let’s move a prospect to our automated stage to see if our lambda is working properly:
Head on back to your lambda dashboard. Click on the Monitoring tab then click on view logs in Cloudwatch, there should be one line :
These are your lambda’s log, you’ll find the output of your code in these lines. When we click on it :
A request always contains the START, END and REPORT lines. Everything else is what you print out in your function. Every line here is a line from the lambda event’s body !
From here you can use anything in your code, so you can call any other route from Streak’s API. In our case here the first line we would have to add is to check if the current stage is the automated stage.
Then, you can get the contact’s email, their name, the last time they contacted you, create the HTML template and everything we talked about.
I’d say it takes less than a week to setup the whole loop with the different services for someone familiar with code, including the iterations with the sales team.
Follow up automation is an amazing bang for your buck setup so don’t hesitate pulling the trigger on these types of projects.
This article is merely a starting point, you can go so much farther : automating lead enrichment, adding Linkedin contacts and even faxing or good old post mail. In 2020 almost everything is API-fied so you can trigger any actions you wish.
You can reach me on LinkedIn or via email, I’m always open to exchange on these subjects !
Until the next article,
Anas El Mhamdi
Shout out to Saad, Adem, Cécile and Açelya for providing feedback