We have just added a new domain-level report to the main Campaign Report. The domain-level report shows a breakdown of all domains sent to for a particular campaign, along with the opens, clicks, bounces, and blocks on a per-domain basis.

Here’s an example of the domain-level report from a campaign I recently sent to all of my users:

You don’t need to do anything to get this update. Starting now, you’ll notice that new Campaign Reports that arrive under the GMass Reports –> CAMPAIGNS Label will include the domain-level report.

E-Commerce Company Founder Found that Display Ads Weren’t Getting the Results She Wanted

small business email marketingSusan Baker is proud to be an independent businesswoman and a distributor of dry-erase markers, whiteboards, and related materials for over 13 years. When she started www.GoDryErase.com her competition was tough, but not nearly as fierce as it is today. At the time, small office supply stores were still common and she competed on a level playing field. Today however, the giant big-box stores dominate the market and their internet advertising is so entrenched that it is hard to compete for space and attention.

“I used to spend part of my marketing budget on pay per click and the orders rolled in. But recently the results were more and more disappointing, and I realized it was time to be more creative and more pro-active.”

Small Business Email Marketing

Susan looked for help in the email marketing industry, and quickly found that there were a lot of big companies with glossy templates, but their prices were high and results questionable. “I heard about GMass from a colleague and decided that becoming hands-on with the process would be more my style.”

Susan started with a free trial, wrote some email copy, and learned how to insert pictures and links. She especially liked the fact that messages seem more personal with GMass, right from her to her customers. They responded.

“I sent messages to new customers as well as prospects, and I could quickly see who opened the small business email marketingemails and who clicked on my links. Those that read my email received a follow-up phone call, not high-pressure, just a hello. Hello’s turned into new sales and re-orders.”

The GMass Main Campaign Report allows users to see who opened each message and who clicked on the links inside. This allows Susan and all GMass users to immediately see the results of each campaign and is excellent feedback for possible changes to messages, timing, or targets. Email marketing is truly a reactive channel for businesses because you can track results in real time and make adjustments to boost response and sales.

Digital Marketing That Works

So far, Susan is thrilled with the results. “I’m getting more interested customers, and I’m able to decide who to target and when. I launched a ‘Start the New Year with a Clean Slate’ campaign to small colleges after New Year’s Day, and it’s a winner.”

GoDryErase is a certified Women’s Business Enterprise and their most popular product is called Whiteboard-in-a-Box, a self-stick dry-erase roll that can be placed on a wall, the front of a refrigerator, anywhere you want to express yourself. It is commonly used to resurface old dry-erase boards which is a huge savings over replacement. Susan can be reached at 941-474-1991 or www.godryerase.com






I have a love-hate relationship with Craigslist. I hate that its interface hasn’t evolved since 1995, that posting an ad is always a crapshoot, and that there’s zero support available, but I love that it’s still so highly trafficked that you can post an ad for almost anything and get flooded with responses. Whenever we have a job opening, we almost always post our job ad to Craigslist, amongst other job boards.

Using GMass, the disjointed mess of handling responses to a Craigslist ad becomes navigable and, dare I say, easy for Gmail users. No need to create a separate account to receive CL responses, and no response is left hanging. The main facets of what I’ll teach you in this article are:

  1. How to set up Gmail Labels and organize your Craigslist responses into these labels. For example, you might place your rejections into a Rejections Label, you might place your “maybes” into a Maybe Label, and the candidates you’re most excited about you might place into an Interview Label.
  2. How to then build an email list by scraping a particular Label.
  3. How to send a mass email to everyone in the Label, such that the email goes out as a reply to each person’s original message to you. That way you can send a personalized email to everyone you want to continue in your interview process, as well as a courtesy rejection email to everyone that didn’t make the cut.

Here is the Craigslist Ad

A few months ago, when hiring new editors for our other service, Wordzen, I posted a job ad on Craigslist.

As anyone who has posted on Craigslist knows, the responses can be hard to keep up with, because they come at different times, with different subject lines, and varying degrees of professionalism.

Setting Craigslist Reply Options

Craigslist gives you a few options to receive responses. The Craigslist Mail Relay system allows you to mask both your and the responder’s email address by showing alias addresses in place of your real account. It’s a great option for protecting the privacy of people selling items on Craigslist, but in the case of a job opening, I always choose “show my real email address” to convey that the job is real. Some prefer to select “no replies to this email” and include the email address in the posting – it’s a matter of personal preference. I prefer to show my email address so that candidates can easily reference the posting in their initial email to me.

Set up Gmail Labels to filter the Craigslist Responses

I created a Gmail Label called Editor Hire to store all of the applications in one place, and to get them out of my Inbox:

I created the Label “Editor Hire” where all applications would arrive, based on the Gmail filter I set. I would then manually move them into Decline, Maybe, and the other Labels after reviewing each one.
These are the Gmail filters that ensured all applications were routed to the “Editor Hire” Label.

Although there were still a few stray messages that I had to manually label, most skipped my Inbox and were filtered to Editor Hire.

As I had time to review applications, I created a few more labels for groups of applicants I would need to contact with different messages. Rejected candidates would go into Decline, people I was undecided on would go into Maybe and my favorite candidates went to Next Round.

Use GMass to respond to groups of candidates at a time

When I was ready to send my favorite applications to the first interview round, I needed to send an email with a link to all of the individuals in the Next Round Label. I opened up the label, clicked the GMass Build Email List button (magnifying glass button), and GMass built my recipient list for me and populated the To field with all of their email addresses.

I began my email with:

Hi {First Name|there}

so that most people would be greeted by their first name and at worst they would be greeted with “Hi there”. You can learn more about personalization here.

Here’s the important part: I set the campaign to Send as replies, GMass sent my email to each of the candidates not as a new thread, but in the same thread as our most recent conversation.

You can see the rest of my settings below:

What the sent emails look like

Example 1 of an email sent in response to a favored candidate
Example 2 of an email sent in response to a favored candidate

Notice that my email was sent in the same thread as the application (the most recent received message), and the Personalization Tag was replaced with the recipient’s first name.

The Rejection Letter

After I finished my assessment process and hired a couple editors, I wanted to inform everyone else that I hired someone and thank them for their time in applying to my opening. Doing so was simple. Remember the general Editor Hire Label I made at the beginning? I built a list from that label using the GMass Build Email List button – the magnifying glass – and I used suppression lists to prevent sending to the two people I hired.

Alternate way to retrieve all responses to the ad

If you used the Craigslist Mail Relay as your method of collecting replies to your ad, then building an email list of everyone that responded doesn’t even require Gmail Labels.

Craigslist Mail Relay
If you chose the Craigslist Mail Relay, a search for @reply.craigslist.org will yield all of your responses. Just click Build Email List to email everyone.

Want to get even fancier?

  1. If you’re afraid to send a mass email to a group of people because you think you did something wrong…use the Preview as Drafts feature.
  2. Use auto follow-ups to send automatic reminder emails to your YES candidates, to ensure you get a reply from them.

If you find that the GMass button in the Compose window is too big, then you can now set your account to have a smaller button. You may want to do this if you have other Gmail extensions installed which are taking space along the main button bar in the Compose window, or if you are getting a horizontal scroll bar in the Compose window.

To control the size of the GMass button:

Set the size of the GMass button to small or big.
  1. Ensure you have the latest GMass extension from the Chrome Web Store. You should have version 2.0.0 or higher. If you don’t, point Chrome to chrome://extensions and click the Update extensions now button in the upper right.
  2. Reload Gmail.
  3. Click Compose to launch a new window.
  4. Set the To field to button@gmass.co.
  5. Set the Subject to “small” or “big”.
  6. Hit the GMass button. Do not hit the Send button.
  7. Reload Gmail.

The button size will be set for your account. You will need to re-load Gmail for the change to take effect. If you set your button to “small”, this is what it will look like:

This is what the small GMass button looks like.

[January 2019 Update] Our Reply-To functionality has been updated, so that you can set an individual Reply-To address on a per campaign basis, by setting it directly in the GMass Settings box. You can still set it in your Gmail account’s settings, as shown below, but it’s much easier and more manageable to set it directly in GMass’s Settings.

In your Gmail or G Suite account, you have the ability to set a Reply-To email address. If you do so, Gmail adds a Reply-To header to all of the emails you send, and what that means from a practical perspective is that when someone replies to your email, the reply will be sent to the Reply-To address instead of your From Address. Meaning, when somebody hits Reply, the To field of their “reply” email will be set to the Reply-To address you set in your account, rather than your From Address.

I’ve set the Reply-To for my ajay@wordzen.com to the address of my assistant, maya@wordzen.com.


Until now, if you set a Reply-To address in Gmail and then used GMass to send a mail merge campaign, the Reply-To address was ignored. Replies would always be sent to the From Address used for your email campaign. Now, however, the Reply-To setting will be respected and used for your GMass mail merge campaigns.

Why wasn’t the Reply-To setting always used for mail merges?

It took some effort to get GMass to respect the Reply-To setting because of how GMass stores campaign data and how Gmail stores Drafts. GMass uses a Gmail Draft as a template of each campaign you create. A Gmail Draft itself doesn’t carry the Reply-To setting from your Gmail account. That’s because, unlike the Subject, Message, From Address, and Attachments, your Reply-To setting in Gmail is universal to your entire Gmail account, and not specific to a particular message or Draft. So, since GMass used the Gmail Draft as a means of storing campaign details, it previously didn’t have access to your Gmail account’s Reply-To setting.

Recently though, Gmail introduced a “Settings” API, which allows programmers like myself to pull the Reply-To setting from your Gmail account. So now, whenever GMass sends an email campaign for you, it queries your account to pull the Reply-To address, and if one is set, uses it in all the individual email messages it sends as part of a mail merge campaign.

Why would you want to use a different Reply-To address for a mail merge campaign?

There are lots of reasons you might want replies to your email campaign to be sent to a different address than your From Address. You might prefer to handle replies in a different email account than the one you use to send, even dare-I-say…a non-Gmail account. Doh! You might prefer to have your assistant handle replies to a mass email campaign.

For example, my email address is ajay@wordzen.com, and I send a lot of email to people from this address. But let’s say I want my assistant Maya, maya@wordzen.com, to take over the communication if somebody replies to an email I send. I would set my Reply-To to maya@wordzen.com, and then, when somebody replies to an email I send, it will go to  maya@wordzen.com instead of ajay@wordzen.com.

How do you set the Reply-To in Gmail?

Setting the Reply-To in Gmail is easy. Go to your Settings, then Accounts, and click edit info next to the email address whose Reply-To you want to set:

Then click the “Specify…” link, enter in the address, and hit Save Changes.

It’s important to note that the Reply-To setting is specific to each Address that is set up in your Gmail account. If you’ve configured Gmail to send “from” more than one address, you can specify a different Reply-To for each. Similarly, when using GMass to send mail merge campaigns, whichever From Address you use in the Gmail Compose window will determine which Reply-To address is used.

A note about timing

GMass will use whatever Reply-To address is set at the time you hit the GMass button. Let’s say you change the Reply-To to your assistant’s email address, and then you use GMass to schedule a mail merge campaign for tomorrow afternoon. After scheduling the campaign, you remove the Reply-To address because you want to continue your day responding to your person-to-person emails, and you want those replies to come back to you, not your assistant. When the mail merge campaign sends the next afternoon, it will still send with a Reply-To set to your assistant’s address, since that’s what was set in your Gmail account at the time you scheduled the campaign.

A few days ago, I noticed that bounce notifications from Gmail were no longer cryptic plain text emails with SMTP codes and headers, but instead looked far more aesthetically pleasing. So much so, that I now look forward to receiving an otherwise dreaded bounce notification. Here is an example of the new Gmail bounce notice in all its glory:

Google quietly rolled out this enhancement, as there was no mention of it on even the official Gmail blog. Still, the GMass team welcomes this enhancement. Gmail now translates the actual SMTP bounce code into a more readable message that is friendly to a non-techie email user. Additionally, if an email bounces because the email has been blocked and not because the email address is invalid, Gmail displays a “stop sign” to help you quickly identify the reason for the bounce:

Remember, if you use GMass to send a mass email campaign, GMass will find all bounces, blocks, and replies and categorize and process them for you as part of its Reply Management function. Bounces will be moved into the GMass Reports –> Bounces Label, and block notifications will be moved into the GMass Reports –> Blocks Label. Additionally, GMass stores a list of email addresses that have bounced because the address is invalid, and automatically suppresses these addresses from future mail merge campaigns.

Every year I look forward to receiving MailChimp’s Annual Report. It’s funny, pretty, and full of interesting statistics. It also lands squarely in my Gmail Promotions folder, along with other name-brand emails:

GMass can hardly be called a competitor to MailChimp, given that MailChimp is a full-service email marketing service provider that integrates with hundreds of external systems, and GMass is a Gmail extension to send low-volume mail merge campaigns. In its annual report, MailChimp states that its users sent over 246 billion emails last year. In comparison, GMass sent a paltry 67 million emails last year.

Would you rather send 246 billion emails that all land in the Promotions folder, or would you rather send 67 million emails that all hit the Inbox? Actually, you’d be wise to choose the former. Even if only 0.1% of people ever check email in the Promotions folder, that’s still 246 million eyeballs versus 67 million. Fine, MailChimp, you win because of your massive scale. But unless you, as an email marketer, have a list of 246 billion emails, you might consider GMass over a traditional email marketing service provider if you want your emails to go straight to the Inbox.

Because GMass integrates with your Gmail or G Suite account, all emails are sent from Gmail’s own servers, meaning they almost always land in the recipient’s Inbox, not the Promotions folder and not the Spam folder. And, because GMass is integrated with your Inbox, it can do things like send automatic follow-ups to people who don’t reply, a feature MailChimp will never have.

Using Gmail, Google Docs, Zapier, and GMass, you can easily set up a “series” of emails to be sent in a timed sequence to new people who sign up for your software, your email list, or indicate interest in your product or service. For example, let’s pretend you own an email proofreading service, and you want to welcome all of your new subscribers with a 5-part email series on writing more effective emails, with each of the five emails containing one important tip.

Step 1: Create the 5 individual email messages and save them into GMass

Just compose each email exactly the way you want it to look, and send it to yourself using the GMass button. This saves the template into GMass, and will allow us to select it later when we set up the series of emails.

I draft the email for “Tip 1”, and use the GMass button to send it to myself. This saves the template in the GMass system.

I then do the same for “Tip 2”, and repeat the process for each email that I want to be part of this series of emails sent to my new signups.

Step 2: Determine who will receive the automated series

Do you want to send the timed series of emails to just a static group of recipients? If so, you don’t need Google Sheets or Zapier. You can just paste the list of email addresses into the To field of the Compose window when you set up the campaign. If you want the series of emails to include personalization beyond name, then you should store your email addresses in a Google Sheets spreadsheet.

And finally, if you want to really get fancy, you can connect your in-house database to Google Sheets using Zapier, and use GMass’s capability of sending emails to new rows in your spreadsheet in an automated fashion. Using this technique, anytime you get a new signup, that signup will get added to your Google Sheets spreadsheet, which will then place them into the automated email sequence.

Step 3: Set up the campaign

The original campaign will contain the first email in the five-part series, and we’ll use the first auto follow-up to send the second email in the series, the second auto follow-up to send the third email in the series, and so on. Hit the Gmail Compose button, and configure your campaign, or if you’re connecting to a spreadsheet, click the Spreadsheet icon at the top to first connect, and then configure your campaign as follows:

Note the following in how I’ve set up this campaign:

  1. The first tip email in the series is my actual campaign, so that’s what you see in the Subject/Message area of the Compose (even though it’s hidden in the screenshot). The Stage 1 auto follow-up is set to Tip 2, the Stage 2 auto follow-up is set to Tip 3, and so on and so forth.
  2. The condition is ALL, rather than the NO REPLY or NO OPEN option, which is what you might be used to using. Since this is a sequence of emails we want sent to everyone, regardless of whether they reply or open, we set the condition to ALL. Also, because it’s set to ALL and set to use a “custom message” rather than typed out text, each Stage of the series will send as a new thread, rather than a reply to the previous email in the series. If the condition was NO REPLY or NO OPEN, then each Stage would send as a reply to the previous email in the series.
  3. I’ve spaced each stage of the series apart by 7 days. This way, my list will receive one tip per week. If I wanted them to instead receive a tip daily, then I’d change the “days” setting to 1, 2, 3, and 4, respectively.
  4. I’ve checked the Repeat daily to new Sheets addresses box. With this option checked, GMass will check daily for any new email addresses in the spreadsheet, and if found, will start sending those new people this same 5-part email series.

In Conclusion

Using Gmail and GMass, and optionally Google Sheets and Zapier, you can put everyone who signs up for your product, your email list, or your webinar into an automated drip email campaign, where every email is sent from your Gmail account. The advantages of sending the emails from Gmail are many, including the world’s highest deliverability and using a tool which with you’re already familiar and love…Gmail!

Since GMass uses the native Gmail Compose window as the basis for campaign creation, and since GMass allows you to copy/paste a list of addresses right into the To field, I thought it would be fun to see just how many email addresses the To field of the Compose window can hold. Is there a limit? Is there a connection between how many addresses Gmail will let you put in the Compose window and Gmail’s actual email sending limits? Would the Gmail anti-spam pre-crime team detect that I’ve pasted thousands of email addresses into the To field and shut down my account before I even have the chance to hit Send (or the GMass button)?

Let’s find out.

  1. First, I need a big list of email addresses I can paste in. Easy enough — I use SQL Server to store my users’ data, so I can just copy/paste email addresses from SQL Server into the Gmail Compose window.
  2. Here I’ve pasted 1,980 email addresses in the To field. Note that in the screenshots below, the Gmail Send button is hidden by GMass, to prevent a user from making the grave mistake of hitting the wrong button.
  3. Might as well keep going…6000 email addresses!
  4. As the number of addresses gets bigger, each subsequent paste into the To field gets slower, and additionally, I get an increasing number of Chrome “Page Unresponsive” alerts.
  5. A whopping 15,000 email addresses.
  6. From 15,000 I went to 20,000 with ease. I then decided to jump from 20,000 to 50,000. After clicking “Wait” on no fewer than 20 of the “Unresponsive Page” dialogs, and after waiting about 45 minutes, finally, the Compose window revived itself to life, with almost 50,000 addresses.

How do I know if the Compose box is still working?

As a Gmail expert, I’m used to the behavior of elements of the Compose window, so I would regularly test these to make sure they are still behaving normally. For example, I know if that if I type a few words in the Message area, the URL will change to reflect a new Gmail Message ID, since Gmail has just re-saved the Draft. I know that I should be able to click the X next to an email address in the To field to remove it. The count of total addresses should be accurate.

Copy/paste addresses directly into the To field, or use Google Sheets?

Even though I’ve shown that the To field can hold plenty of email addresses, it’s still more efficient to paste a large number of email addresses into a Google Sheets spreadsheet rather than into the Compose window directly. Why?  Because when you put your addresses into a spreadsheet, when GMass connects to it, it creates one single “alias” email address that represents all of the addresses in the spreadsheet. So the Compose window To field will only show one address. When the To field shows thousands of addresses, the JavaScript required to process all of that email address data slows down the inner workings of the Compose window significantly. Additionally, with the CPU resources Chrome will consume just to handle that Compose window, your entire computer is likely to slow down during a large copy/paste operation into the To field. Here is my CPU usage right now, as I attempt to go from 20,000 addresses to 50,000 addresses (so pasting 30,000 more) into the To field.

In Conclusion

While in theory it seems that the Gmail Compose window can hold an unlimited number of email addresses, it becomes impractical to paste so many addresses after the 10-20,000 address mark. The Compose window reacts too slowly, you get too many “unresponsive” dialog boxes, and the waiting time required for the “paste” operation to complete is unbearable. If you’re using GMass to send mail merge campaigns with Gmail, then I recommend using our Google Sheets integration if you’re needing to send to more than 20,000 addresses.


Using Gmail and my Gmail extension GMass, it’s easy to send a mass, personalized email to every email address in your Gmail account. You simply need to get all of the email addresses in the To field, compose your Subject and Message, and hit the GMass button (instead of the Gmail Send button). In this article, I will show you three different methods for launching that Compose window with all of your email addresses. Each has pros and cons.

1. Use the GMass “Build Email List” button

In Gmail, you can search your conversations using the Search bar at the top. Once you have a list of matching conversations, you can use the GMass Build Email List button (the magnifying glass) to scrape all the email addresses inside those matching conversations. It will find all of the email addresses in the From and To lines of those matching email messages.

For example, if I wanted to send a mass email to everyone with whom I’ve had a conversation about “iPhone”, I could search for “iPhone” in my Gmail account, and then hit the GMass Build Email List button to instantly create a list of all those email addresses.

So, if I want to search for something that will match just about every email message in my account, I just need to search for a short word like “the”. Assuming that almost every email will contain the word “the”, the Build Email List button will now create an email list of almost every single email address in your account. Note that this technique will pull all addresses in the To Line of each matching message. If you’re part of a group email to say 20 people, it will also pull those 19 other addresses, which may be people with whom you have no relationship. Once the email list is built, a Gmail Compose window will open with all of the addresses in the To line. Then just type a Subject, Message, personalize as needed, and then hit the GMass button to send individual personalized emails to each address.

Pros: Easy to do, requires no exporting/importing, and can be done via just the Gmail interface

Cons: May not find every single email address in your account, and may find some addresses of people with whom you’ve had no direct contact. Limited to searching through 5,000 messages max.

2. Use Google Contacts to select all of your contacts, then hit the Email icon

If you use Google Contacts to track your contacts, you can use the Google Contacts Interface to select all or some of your contacts, and then hit the Email button to launch a Gmail Compose window with all of those addresses in the To line.

First, from inside Gmail, choose Contacts in the upper-left menu:

Then, navigate to the list of Contacts, select all of them with the checkbox tool, and click the Email button. Note that it will only select the contacts on the current page, and you would have to go to the next page of contacts to separately select those. Therefore, this method is inherently limited because it will only allow you to select 250 contacts at a time.

Several important considerations when using Google Contacts:

  • You can launch Contacts from within Gmail, which will nest the Google Contacts interface inside Gmail. This is the preferred method, and I’ll explain why shortly.
  • Alternatively, you can launch Google Contacts in a separate window by going to https://www.google.com/contacts in a separate browser window. This is the least preferred method.
  • Google has a new “preview” version of Google Contacts that has been around for a while, but is shunned by many in favor of the classic Google Contacts interface. The classic interface is far more useful, so for this demonstration of sending a mass email to all the email addresses in your Gmail account, we will stick to the classic interface, and I’ll explain why shortly.

After composing your email message, be sure to hit the GMass button instead of the Send button to send individual personalized emails to each recipient.

Why you shouldn’t use Google Contacts outside of Gmail

If you go to https://www.google.com/contacts/ directly in the browser instead of accessing your Contacts from inside Gmail as described above, you will run into the issue of the Email button failing when you select too many contacts.

If you select too many contacts, and hit the Email button, you will see this error:

Pros: Easy to do, and Google Contacts are often broken down into logical groups of people, so you can send a mass email to just certain groups of people.

Cons: If you select too many contacts at once, you may get a “Bad request” error instead of the Gmail Compose window launching. You also can’t select Contacts across multiple pages, and only 250 contacts are displayed per page.

3. Export the email addresses from Google Contacts into a Google Docs spreadsheet

Finally, you can easily export all of your Google Contacts as a CSV file, and then upload the CSV file into Google Sheets, and then use GMass to connect to your Google Sheets spreadsheet to pull out the email addresses. Don’t worry, it’s easier than it sounds.

First, in Google Contacts, export all or some of your contacts to a CSV file.

Choose Export and then choose the Contacts you want to export. In my case, I will export all 25,005 contacts:

Then, upload the CSV file into a Google Sheets spreadsheet.

After your spreadsheet is created, you should clean it up by deleting the extraneous columns. If you don’t, your spreadsheet might have more data than GMass can process. So, just delete all the empty columns.

Then, use GMass to connect to the spreadsheet. If you’ve never used GMass before, here’s a detailed guide on connecting to your Google Sheets spreadsheet.

Finally, you’ll have a Compose window with all of the email addresses in the To line. If you have more than 1,000 addresses, GMass will consolidate the addresses into an “alias” address, as is shown in the screenshot below. This alias address is an address that represents all 24,997 addresses.

As is the case in the above screenshot, GMass may also hide the Gmail Send button in certain cases, to prevent you from clicking it accidentally and making a huge mistake. Hitting the GMass button will send a tracked, personalized email to each contact, while hitting the Gmail Send button will send one email to all of your recipients, exposing everyone in the To line to each other.

Pros: Will guarantee that you pull every single email address that is a Google Contact.

Cons: Not everybody you’ve sent email to / received email from may be a Google Contact. Requires the most effort, although it’s still pretty easy.

Stay away from the new “preview” version of Google Contacts

It’s pretty but it lacks all the important functions of the classic version.

  1. It doesn’t allow you to export.

2. You can’t select your Other Contacts, where most of your email addresses usually live.

3. There is no Email icon by which to launch a Compose window with the selected Contacts already in the To field.

Many people agree that it sucks. The “preview” version of Google Contacts is the ugly and seemingly forgotten step-child of the classic Google Contacts. Stay away!

Additional Things to Know:

  1. If you want to personalize each email with the recipient’s first name, you can use this syntax in your message:
    Hi {FirstName|auto-first|there},

    This syntax is explained in detail in our mail merge personalization guide, but what it does is looks for a First Name associated with the email address in your Gmail account, and if found, then it’s used. If not found, then GMass will attempt to auto-detect the first name from the email address. Finally, if unable to auto detect the first name, it will just use “Hey there”.

  2. If you want to track opens and clicks, just make sure the appropriate checkboxes are checked in GMass Settings.
  3. If you want to pace out your emails at say, 50 emails/day, instead of sending them all at once, to make sure you don’t anger too many people at once, use the “Spread out” feature in the GMass Settings box.
  4. Now that you know how to mass email everyone in your Gmail account, you may also want to know how to send a mass email to just your employees.
  5. You may be wondering if the technique above are free, especially with the use of GMass. Anybody can use GMass for free to extract all of the email addresses from their Gmail account and get them into the To field of a Gmail Compose window. You can also send 50 emails/day for free with GMass. You would only need to subscribe to GMass if you want to send more than 50 emails/day. Therefore, you are “free” to use the GMass “Build Email List” or “Connect to spreadsheet” functions for free to just pull the email addresses out of your Gmail account. You could then take your email list and use it with a different email marketing system like MailChimp if you don’t want to use GMass for the actual sending.

This article is geared towards software developers interested in the Gmail API.

GMass makes extensive use of two APIs — the Inbox SDK API, made by Streak, and the Gmail API provided by Google. The Gmail API manages all of the backend operations for GMass, including applying the “GMass Scheduled” Label to pending campaigns and actually sending a user’s mail merge campaign. GMass is built on the .NET platform and all backend code is written in C#. Google provides a .NET client library for the Gmail API, but recently I discovered a bug in the client library that was a show-stopper, until I figured out how to call the Gmail API using raw HTTP calls.

While the Gmail API asserts that a Draft up to 35 MB in size can be created, I was getting an error from the .NET client library anytime I attempted to create a Draft greater than 1 MB in size. The error was:

Message[Request payload size exceeds the limit: 1048576 bytes.]

I would only get this error when creating a large Draft with the .NET library. Testing the Users.drafts.create method manually using the test form provided by Google did allow me to create large Drafts, which confirmed that the issue was with the .NET library. I therefore set out to create my own function to call the Gmail API to create a Draft and bypass the functionality of the client library.

Like many popular APIs, the Gmail API has an endpoint that you can make an HTTP POST to. In the case of the drafts.Create method, that endpoint is:


where {EmailAddress} is the Gmail account address for which you want to create the Draft.

Here is the C# code I used to call service.Users.Drafts.Create manually:

string payload = "{\n\"message\": {\n" + (!string.IsNullOrEmpty(ThreadID) ? ("\"threadId\":\"" + ThreadID + "\",\n") : ("")) + "\"raw\":\n\"" + RawDraft + "\"\n}\n}";
using (var client = new HttpClient())
       var content = new StringContent(payload, Encoding.Default, "message/rfc822");

       var response = client.PostAsync($"https://www.googleapis.com/gmail/v1/users/{EmailAddress}/drafts?access_token={OAuthKey}", content).Result;
       string resultContent = response.Content.ReadAsStringAsync().Result;
       return resultContent;

Using the HttpClient object will be familiar to most .NET developers, but the differentiating part of the call is that the mediaType has to be set to “message/rfc822”, as that is what the Gmail API requires.

Also note the payload is formatted according to how the payload is formatted on the Google test form for this method. In my code it’s assumed that:

  • ThreadID is the Gmail Thread ID if the created Draft is to be part of an existing thread, or non-existent if not
  • RawDraft is a base 64 encoded string of the fully formatted email draft. If you want to see an example of a base 64 encoded Draft from your own Gmail account, use the Users.drafts.get method test form to plug in a Draft Id from your own account, set the Format to RAW, and retrieve the base 64 string.
  • EmailAddress is the Gmail account address for whom we’re creating the Draft.
  • OAuthKey is a string containing a valid unexpired OAuth 2.0 key to access the Gmail account of EmailAddress.

After calling the Gmail API, resultContent will contain a string containing the created Draft ID and its Message ID, and these values can easily be extracted with this code:

dynamic GmailDraftResult = JsonConvert.DeserializeObject(resultContent);

You can then access the Gmail Draft ID with GmailDraftResult.id and the Gmail Message ID with GmailDraftResult.message.id.

The code above can be adapted to call any Gmail API method for which the .NET client library doesn’t work.