# How to Send Emails from Google Sheets: 3 Ways Compared

By [Stanislas Marion](https://www.linkedin.com/in/stanislasmarion/) · Published 7 November 2022 · Updated 27 October 2026

Send emails from Google Sheets with Gmail's mail merge, Google's free script or the YAMM add-on. Who each one fits, how to use it, and how to track opens.

![Spreadsheet email contacts used to send messages with personalized greetings.](https://yamm.com/images/blog/covers/send-emails-from-google-sheets.webp)

You can send emails from a Google Sheet in three ways: Gmail's own mail merge (on some paid Google Workspace plans), Google's free ready-made script, or a mail merge add-on like YAMM. Each sends every person their own email from your Gmail. Which fits depends on your account, and on whether you want to test first and see who opened.

We make YAMM. What we say about Google's two ways comes from Google's own pages, linked in each section, so you don't have to take our word for it.

## Gmail's mail merge, Google's script or YAMM: which should you use?

- **Gmail's mail merge** fits if your Workspace plan includes it and personal details in the body of the email are enough.
- **Google's Apps Script sample** fits a one-off send to a short list, if you don't mind setting it up and clicking through a security warning in each sheet you send from and don't need to know who opened the email.
- **YAMM** fits if you're on a personal @gmail.com address or a Workspace plan without Gmail's mail merge, or if you want a name in the subject line, a test email before you send, and opens, clicks and replies written back to the sheet.

|                             | Gmail's mail merge                                  | Google's Apps Script sample                                                   | YAMM                                                                                  |
| --------------------------- | --------------------------------------------------- | ----------------------------------------------------------------------------- | ------------------------------------------------------------------------------------- |
| Who can use it              | Some Workspace plans only                           | Any Google account                                                            | @gmail.com and Google Workspace accounts                                              |
| Your list                   | The first tab of a sheet, text only                 | A copy of Google's sample sheet, set up and approved again for each new sheet | Any of your sheets, with any column of email addresses                                |
| A name in the subject line  | No                                                  | Yes                                                                           | Yes                                                                                   |
| Schedule the send for later | No                                                  | No                                                                            | Yes, on [Pro plans](https://yamm.com/help/usage/launch-campaign/schedule-mail-merge/) |
| What you see after sending  | A "Sent with mail merge" banner in your Sent folder | The date sent, or an error, in each row                                       | Sent, opened, clicked, replied, bounced or unsubscribed in each row                   |

Whichever way you pick, Google caps how many emails you can send in a day. Our guide to [Gmail's sending limits](https://yamm.com/blog/gmail-sending-limits/) has the numbers.

If what you want is one email sent automatically when a cell changes, such as a status or a due date, that's a different job: see [how to send an email when a cell changes in Google Sheets](https://yamm.com/blog/google-sheets-send-emails-based-on-cell-value/).

## How do you use Gmail's own mail merge with a sheet?

Gmail's mail merge needs an [eligible Google Workspace plan](https://support.google.com/mail/answer/12921167): Workspace Individual, Business Standard or Plus, Enterprise Standard or Plus, or Education Standard or Plus. Personal @gmail.com accounts and Business Starter don't have it.

If you do have it, turn on mail merge in a new Gmail message and click **Add from a spreadsheet**. Gmail reads your contacts from the first tab of the sheet, any column can go in the email, and it sends to [up to 1,500 people a day](https://support.google.com/mail/answer/12921167). Know two limits before you start, both on [Google's mail merge help page](https://support.google.com/mail/answer/12921167): you can't schedule the email, and Gmail adds an unsubscribe link to the bottom of every email.

Our guide to [sending the same email to many people separately in Gmail](https://yamm.com/blog/how-to-send-the-same-email-to-multiple-recipients-separately-in-gmail/) covers Gmail's mail merge in more detail.

## What does Google's Apps Script sample ask of you?

Google publishes a free [mail merge script for Sheets](https://developers.google.com/apps-script/samples/automations/mail-merge). You don't write any code, but there are five things a non-coder may not expect:

1. **You start from Google's sheet.** You make a copy of their sample spreadsheet and put your list into it.
2. **Your headers must match exactly.** Each {{placeholder}} in your Gmail draft must match a column header, capital letters included, or it stays empty.
3. **You click past a warning.** The first time you click **Mail Merge > Send Emails**, Google shows a "This app isn't verified" screen, and you click **Advanced** to [approve the script](https://developers.google.com/apps-script/samples/automations/mail-merge) to use your Gmail. On a Workspace account, Google says your admin might have to approve it first.
4. **There's no test email.** The script asks you to paste your draft's subject line, then sends to every row that has no date in **Email Sent** yet.
5. **It only works in that one sheet.** The script lives inside your copy of Google's spreadsheet and [works only in the file it's attached to](https://developers.google.com/apps-script/guides/bound). To send from another sheet, you add the script to it again and approve it again, warning included. If you send to a different list every week, this gets old fast.

Afterwards, the script writes the date each email went out, or the error if it failed, in the sheet's **Email Sent** column. It doesn't show who opened or replied. Scripts can email up to [100 people a day](https://developers.google.com/apps-script/guides/services/quotas) from an @gmail.com account and 1,500 from Workspace.

It works, and it's free. So was our first version. YAMM started in 2011 as a script much like this one, so people at one company could send personalized emails from a Google Sheet through Gmail. It was shared for free online and became an add-on when Google opened add-ons for Sheets in 2014. Since then we've added what the script never had, like real-time tracking and follow-ups.

## How do you send the emails from your sheet with YAMM?

First, install YAMM from the [Google Workspace Marketplace](https://workspace.google.com/marketplace/app/yet_another_mail_merge_mail_merge_for_gm/52669349336), where it's been installed more than 16 million times and is rated 4.7/5 by more than 18,000 users. You install it once, and it's in the **Extensions** menu of every sheet you open. Then:

1. **Set up your sheet.** One row per person. One column holds the email addresses (call it anything you like), and you add a column for each detail you want in the email, such as First name.
2. **Write the email as a Gmail draft.** Put markers like {{First name}} where each person's details go, in the subject or the body. Leave the To field empty: YAMM fills it in from your sheet. Capital letters don't matter here.
3. **Start the mail merge and test it.** In your sheet, click **Extensions > Yet Another Mail Merge: Mail Merge for Gmail > Start Mail Merge**. Pick your draft under **Email Template** (click **Refresh** if it's not there yet), then click **Send test email** and open it in your inbox. It's filled in with the details from the first visible row of your sheet, so you see exactly what that person will get.

![Google Sheets Extensions menu with YAMM Start Mail Merge highlighted.](https://yamm.com/images/blog/email-for-schools/google-sheets-extensions-menu-with-yamm-start-mail-merge.webp)

4. **Send.** Check **Track emails opened, clicked or bounced**, then click **Send emails**.

![YAMM Start Mail Merge dialog with the Send 5 emails button highlighted.](https://yamm.com/images/blog/bulk-emails-for-schools-use-gmail-to-get-the-word-out/yamm-start-mail-merge-dialog-with-the-send-5-emails-button.webp)

Each person gets their own email from your Gmail. A **Merge status** column then appears in your sheet, and the tracking report opens beside it. As people open, click or reply, each row's status changes.

![YAMM Tracking Report beside color-coded email campaign statuses in Google Sheets.](https://yamm.com/images/blog/create-newsletter-from-google-sheets/yamm-tracking-report-beside-color-coded-delivery-open-click.webp)

When it's time to chase the people who didn't answer, start a follow-up from the tracking report and choose who gets it: those who didn't open, or those who didn't reply. Our guide to a [follow-up email after no response](https://yamm.com/blog/follow-up-email-no-response/) covers what to write. For a slower walkthrough with more screenshots, see [how to mail merge in Gmail](https://yamm.com/blog/mail-merge-gmail/). And if you want more than a first name in each email, read [how to send personalized mass emails](https://yamm.com/blog/how-to-send-personalized-mass-emails/).

## In short: which way fits your send?

If your Workspace plan has Gmail's mail merge and a personalized body is all you need, use it: it's already in Gmail. If you're sending once to a short list and don't mind the security warning or not knowing who opened, Google's script does the job for free. If you want a name in the subject line, a test email first, tracking, follow-ups or a scheduled send, [install YAMM](https://workspace.google.com/marketplace/app/yet_another_mail_merge_mail_merge_for_gm/52669349336) and send from the sheet you already have.
