How to send personalized automated cold emails like a Growth Hacker?

Ankit Bagga
7 min readNov 12, 2021

Say that you are on a job hunt, or have a great idea to pitch to some investor, and if there is one marketing channel that can be as hyper-focused (but less intrusive) as cold calling, it is email.

But how do you even get started with emails?

How do you make sure that your email doesn’t get caught up in the spam or promotions? How do you even know if you are sending it to the correct email addresses?

Note: There is tons of advice on the internet on how to add some warmth to your cold email outreach, so I won’t go over that here. But remember bad emails will only hurt your reputation and will not get people to reply even if you happen to land in their primary inbox.

Before you start, if you happen to own a domain I would suggest creating a GWorkspace/Gsuite email (the ones with at the end) as they simply have a higher limit for sending emails. The default limits are 2000/day for GWorkspace accounts and 500/day for regular Gmail accounts (the ones with This will make sure that you can scale your campaigns better.

You can stick to your free Gmail account if you are not expecting the volumes to go higher than 500 emails per day. Also, note properly warmed-up GSuite email campaigns can also send emails in the tunes of 10,000/day.

Finding domain names from companies

Once you know the companies that you want to reach out to, make sure that you have the names listed in a spreadsheet.

The next step is to create domains out of these company names. There is a free Clearbit API that you can use here. Don’t worry, nothing too technical here.

Basically, the following URL will give us the website address if we just supply the company name:

(replace the company in the URL with the companies that you need the domain for).

If you go to this URL, you will see something like this.

See how the domain key spits out the domain for Fampay which is

The only part left is to add this as a function in our base sheet that creates the URLs like above for all companies and fetches their domains.

You could easily create the URLs using the concatenate function in the spreadsheet. Refer here.

Now the next step is to create an app script that creates a function called FETCH that takes into the URL as a parameter and extracts the domains from it.

To do that go to the Extensions tab and add the following piece of code. Here the response to the URL is stored in variable “out” and the domain is extracted and returned from it.

Save your code and now you should be able to use the function you created called FETCH in your spreadsheet to extract the domains.

Guessing email addresses

Now the next step is to find their website to guess the email addresses of prospective recipients of your email campaign.

If you are targeting C-level executives then first names should be enough as most of the email addresses would be in the following format. <firstname>@<domain>. This should work most of the times but you can also try with the first initials eg; Nikhil would have

But if you need to target other people in the organisation, then try the following format.


I know this is common knowledge but I thought I should cover these basics for a holistic overview of the strategy.

Note: There are great services like Lusha and that can provide you email addresses of people based on their Linkedin profiles or company names.

Once we have the email addresses with us, how do we make sure that these email addresses actually exist? Wrong email addresses could increase the bounce rates of your email campaign and hurt your domain reputation making your emails land in promotions or even worse, the SPAM folder.

To avoid that we need to do an SMTP check. But what’s that?

Just a way to know if those email addresses actually exist. For this, we will be utilizing another API from mailboxlayer.

Under a free account, you can get up to 100 emails verified but the real beauty is that you can create as many free accounts as you want. These guys don’t do any email validation on their own service which is strange. So go ahead and make a bunch of these to get multiple API keys that you might need if your recipient list is big.

Following the similar strategy, we did before, the only difference being, that we would need to swap out the API key as well in the URL post 100 calls to validate the email address.


Using the concatenate function you can plug in the email addresses we created to check if SMTP_check is true or false.

If you ping the URL, you will see something like this;

If smtp_check is true means that the email exists.

Now again go to Extensions > App scripts and paste the following code to create a new function called EMAIL which will take the url as the parameter and spit out if the SMTP check was true or false.

Now you should be able to run Email as a function in your spreadsheet post you save the above app script.

Filter out only the ones with the value as “true”.

Remember if you refresh the sheet, these API calls will trigger again and that can quickly exhaust your API limit. So once done try and copy and paste the values that the API returned in a separate column for future reference.

Setting up your email campaign

Now you have validated email addresses and a GWorkspace account which is good enough to get started with the last phase which is to set up your email campaign. For this, I recommend using the GMass plugin for Gmail. You can send up to 50 emails/day for free and access all features of the account.

Before you set up your email campaign, it is always recommended to warm up your email address if it is created recently. For that, you can go to the settings of your GMass dashboard and set up simple rules that will automatically send emails from your account and garner replies to them to build up some fake activity.

Ideally, you can give this 3 – 4 day to build up some momentum before you start your email campaign. Once you have the plugin installed, you can link your spreadsheet to automatically feed in the email addresses for your campaign. You can also configure it to dynamically take new values that you update in the spreadsheet. You can then use different columns to personalize your emails as well.

Note: It is a good practice to send emails with your own tracking domain rather than using GMass one. Read more here.

To create your email click on the compose email button. Click on the upward arrow next to GMass to configure settings like auto-follow-ups, scheduling, AB test, and much more.

Disclaimer: This post is not sponsored by GMass in any form. I recommend the plugin because I found it to be super useful.

I would recommend sending emails early in the morning at around 8 AM for best opens and gradually increasing the volume to maintain your domain reputation.

And that’s all folks.

I know this might be too much to take in but all this is an important pre-requisite for a sustainable and efficient email strategy. Compared to other third party email service providers, GWorkspace based email strategy is bound to outperform in terms of deliverability.

If you wish to learn more about growth marketing, make sure to visit my blog