How to Mail Merge in Google Sheets: A Step-by-Step Guide
GuidesAugust 21, 202612 min read
Learn how to mail merge in Google Sheets using Gmail, Apps Script, or Mailvern. Personalize emails and send messages based on spreadsheet data and conditions.
How to Mail Merge in Google Sheets: A Step-by-Step Guide
Sending the same email to dozens or hundreds of people one by one is slow, repetitive, and easy to get wrong.
A mail merge lets you keep your recipient information in Google Sheets and use that data to create personalized emails for each recipient.
For example, instead of sending:
Hi there,
you can automatically send:
Hi Sarah,
to one person and:
Hi James,
to another.
You can also use spreadsheet data such as company names, order numbers, payment status, appointment dates, or other custom fields.
In this guide, you'll learn how to mail merge in Google Sheets, the different ways to do it, and how to use Mailvern when you need more control over which rows receive an email.
What Is a Mail Merge in Google Sheets?
A mail merge connects a spreadsheet containing recipient information with an email template.
Your Google Sheet might look like this:
| Name | Company | Payment | |
|---|---|---|---|
| Sarah | sarah@example.com | Acme | Paid |
| James | james@example.com | BrightCo | Pending |
| Emma | emma@example.com | Northstar | Paid |
Instead of manually creating three emails, a mail merge uses the spreadsheet data to generate personalized messages.
For example:
Subject: Payment reminder for {{Name}}
Email:
Hi {{Name}},
This is a quick reminder that your payment for {{Company}} is currently {{Payment}}.
Thanks,
Your Team
The mail merge replaces the placeholders with the corresponding information from each row.
Google's own mail merge tools support connecting a spreadsheet to Gmail and using spreadsheet columns as merge information.
What Do You Need for a Google Sheets Mail Merge?
Before starting, prepare:
- A Google account
- A Google Sheet containing your recipients
- Email addresses for your recipients
- The information you want to personalize
- Gmail or another email-sending method
Your spreadsheet should have clear column headers.
For example:
| First Name | Company | Order ID | |
|---|---|---|---|
| Sarah | sarah@example.com | Acme | ORD-1024 |
| James | james@example.com | BrightCo | ORD-1025 |
| Emma | emma@example.com | Northstar | ORD-1026 |
Each row represents one recipient.
The column headers become the fields you can use to personalize your emails.
Method 1: Mail Merge With Gmail and Google Sheets
If you have an eligible Google Workspace account, Gmail has its own built-in mail merge functionality.
Google currently supports adding recipients from a spreadsheet and using spreadsheet columns as merge information. Availability depends on the Google Workspace plan.
Step 1: Prepare your Google Sheet
Create a spreadsheet containing your recipient information.
At minimum, you'll generally need an email column and any personalization fields you want to use.
For example:
| First Name | Company | |
|---|---|---|
| sarah@example.com | Sarah | Acme |
| james@example.com | James | BrightCo |
| emma@example.com | Emma | Northstar |
Keep your headers simple and make sure the email addresses are valid.
Step 2: Open Gmail
Open Gmail and create a new email.
In eligible accounts, Gmail provides a Use mail merge option next to the recipient field. Turn on mail merge.
Step 3: Add your Google Sheet
Choose the option to add recipients from a spreadsheet.
Select the Google Sheet containing your recipient information.
Gmail lets you select the spreadsheet columns containing recipient details such as email address, first name, and last name.
Step 4: Add personalization
You can then insert merge tags into your email.
For example:
Hi @firstname,
Gmail replaces the merge tag with the appropriate recipient information when the message is sent.
Your final email can therefore look different for every recipient even though you created only one template.
Step 5: Send the mail merge
Review your message and recipients before sending.
Gmail's current mail merge documentation says standard Gmail accounts have a daily sending limit of 500 outgoing messages, while eligible Workspace accounts have higher limits. Gmail mail merge itself has additional recipient limits.
Always check Google's current limits before planning a large campaign because sending limits can change.
Method 2: Use Google Apps Script
If you want more control, you can build a mail merge directly inside Google Sheets using Google Apps Script.
Google provides an official Gmail + Google Sheets mail merge example.
The official workflow uses a Gmail draft as the email template, reads recipient data from Google Sheets, replaces placeholders with spreadsheet values, and sends the resulting emails through Gmail.
A simplified spreadsheet could look like:
| Recipient | First Name | Company | Email Sent |
|---|---|---|---|
| sarah@example.com | Sarah | Acme | |
| james@example.com | James | BrightCo | |
| emma@example.com | Emma | Northstar |
The script reads each row and uses the data to personalize the email.
Why use Apps Script?
Apps Script is useful when you want to create your own automation.
For example, you could build logic to:
- Read data from Google Sheets
- Create personalized emails
- Send emails through Gmail
- Record when an email was sent
- Skip rows that have already been processed
- Add custom conditions
- Create your own buttons and menus
Google's official example demonstrates exactly this type of spreadsheet-driven mail merge.
The downside
You need to maintain code.
That means dealing with:
- Apps Script setup
- Permissions
- Triggers
- Gmail quotas
- Errors
- Code maintenance
- Customization
For someone comfortable with JavaScript, this can be a good option.
For someone who simply wants to send personalized emails from a spreadsheet, a Google Workspace add-on can be considerably easier.
Method 3: Use Mailvern for Google Sheets Mail Merge
If your recipients already live in Google Sheets and you want more than basic personalization, Mailvern is designed specifically for this workflow.
Mailvern — Mail Merge for Google Sheets
Mailvern works inside Google Sheets and lets you create personalized Gmail campaigns from your spreadsheet. It also adds a key capability that basic mail merge doesn't focus on:
conditional sending.
For example, imagine your sheet contains:
| Customer | Amount | Payment | |
|---|---|---|---|
| Sarah | sarah@example.com | $500 | Paid |
| James | james@example.com | $750 | Pending |
| Emma | emma@example.com | $320 | Paid |
| David | david@example.com | $900 | Pending |
You might want to send a payment reminder only to customers whose payment is pending.
Instead of manually selecting James and David, you can create a condition:
Payment = Pending
Mailvern then sends the personalized email only to matching rows. Its current product positioning is specifically built around conditional mail merge in Google Sheets.
How Mailvern Mail Merge Works
The basic workflow is:
Google Sheet → Email Template → Personalization → Conditions → Send
1. Keep your data in Google Sheets
You don't need to export your spreadsheet to another format.
Your customer, lead, student, employee, or order data can remain in the sheet.
Mailvern's documentation describes the workflow as running campaigns directly from a Google Sheet.
2. Create your email
Use the Mailvern email editor to create your message.
You can personalize the email using information stored in your spreadsheet.
For example:
Hi {{First Name}},
Your order {{Order ID}} is ready for pickup.
The values come from the corresponding row.
3. Add a condition
This is where conditional mail merge becomes useful.
Suppose you have:
Payment
- Paid
- Pending
You can configure:
Payment = Pending
Now only the rows matching that condition are selected for sending.
This is particularly useful for:
- Payment reminders
- Customer follow-ups
- Lead follow-ups
- Order updates
- Application updates
- Appointment reminders
- Employee communications
- Status-based emails
Mailvern's documentation currently lists conditional sending, personalization, templates, scheduling, tracking, and analytics among its campaign features.
4. Send the campaign
Once your recipients, template, and conditions are ready, send the campaign from your Google Sheet.
Rows that don't match the condition can be skipped rather than receiving an unnecessary email.
Google Sheets Mail Merge vs Apps Script vs Mailvern
Which method should you choose?
| Method | Best for | Coding required | Conditional sending |
|---|---|---|---|
| Gmail Mail Merge | Simple personalized campaigns | No | Limited |
| Apps Script | Custom automation | Yes | Yes, if you build it |
| Mailvern | Spreadsheet-based email automation | No | Yes |
Choose Gmail mail merge if:
You need a straightforward way to send personalized messages and your account supports Gmail's mail merge feature.
Choose Apps Script if:
You are comfortable coding and want to build a highly customized workflow.
Choose Mailvern if:
You want to work directly from Google Sheets and need features such as conditional sending, personalization, scheduling, tracking, and campaign management without building the automation yourself.
What Is the Difference Between Mail Merge and Conditional Mail Merge?
This distinction is important.
Traditional mail merge answers:
Who is on my list?
Conditional mail merge answers:
Who on my list should receive this email right now?
Imagine you have 1,000 customers.
A traditional mail merge might send an email to all 1,000 customers.
But your spreadsheet says:
- 400 customers have paid
- 250 payments are pending
- 150 orders are ready
- 200 customers need follow-up
You don't necessarily want to email everyone.
You want to select recipients based on the information already stored in your spreadsheet.
That's where conditional mail merge becomes useful.
For example:
Payment = Pending
or:
Status = Follow Up
or:
Order Status = Ready
This turns your spreadsheet from a simple recipient list into a decision-making source for your email campaign.
Common Google Sheets Mail Merge Use Cases
Mail merge isn't limited to newsletters.
You can use Google Sheets mail merge for many everyday workflows.
1. Payment reminders
Keep customer payment information in Sheets and send reminders only when:
Payment = Pending
2. Sales follow-ups
Use a status column such as:
Status = Follow Up
and send emails only to those leads.
3. Order updates
Send different emails based on:
- Processing
- Shipped
- Delivered
- Delayed
4. Appointment reminders
Store appointment dates in Google Sheets and use them to organize reminder campaigns.
5. Student communications
Use spreadsheet fields such as:
- Student name
- Course
- Score
- Result
- Submission status
to personalize emails.
6. Employee communication
Create personalized emails using employee information stored in Sheets.
7. Customer onboarding
Send different messages depending on the customer's onboarding status.
Mail Merge Best Practices
Before sending a large campaign, check your spreadsheet carefully.
Keep one recipient per row
Each row should represent one person or recipient.
Use clear column headers
For example:
First Name
Email
Company
Status
Order ID
Clear headers make personalization easier.
Test before sending
Always send a test to yourself before sending a campaign to a large list.
Check:
- Recipient address
- Subject
- Personalization
- Links
- Formatting
- Conditions
- Missing values
Don't email everyone by default
If your campaign depends on a particular status or condition, use that information to determine who actually needs the message.
Keep your data clean
Remove invalid email addresses, duplicate records, and outdated recipients before sending.
Respect sending limits
Gmail and Google Workspace impose sending limits. These limits vary by account type and product functionality and can change over time, so check Google's current documentation before planning high-volume campaigns.
Frequently Asked Questions
Can I mail merge directly from Google Sheets?
Yes. You can use Gmail's built-in mail merge where available, Google's Apps Script mail merge workflow, or a Google Sheets add-on such as Mailvern.
Google also provides an official Apps Script example for creating a mail merge using Gmail and Google Sheets.
Can I personalize emails using Google Sheets columns?
Yes. Spreadsheet columns can provide information used to personalize each message. Gmail's mail merge supports spreadsheet data as merge information, while Apps Script can also populate templates using spreadsheet values.
Can I send emails only to certain rows in Google Sheets?
Yes, but the exact method depends on the tool you're using.
With custom Apps Script, you can write conditions that determine which rows should receive an email.
With Mailvern, you can create conditions such as:
Payment = Pending
and send the campaign only to matching rows.
Can I mail merge without Apps Script?
Yes.
Gmail provides built-in mail merge for eligible accounts, and Google Workspace add-ons can provide spreadsheet-based mail merge without requiring you to write Apps Script.
What is the easiest way to mail merge from Google Sheets?
For a simple campaign, Gmail's built-in mail merge can be enough.
If your workflow depends on spreadsheet conditions—for example, sending payment reminders only to customers whose payment is pending—a dedicated Google Sheets email automation tool such as Mailvern can be more suitable.
What is conditional mail merge?
Conditional mail merge is a mail merge workflow where spreadsheet conditions determine which recipients receive an email.
Instead of simply sending an email to every row, you can create rules such as:
Status = Approved
Payment = Pending
Score > 80
or other conditions supported by your email automation tool.
Final Thoughts
Google Sheets is already a useful place to store your recipients and the information you want to use in personalized emails.
A basic mail merge takes that data and turns it into personalized messages.
But many real-world workflows require another step:
deciding who should receive the message.
That's where conditional mail merge becomes useful.
If you only need basic personalization, Gmail's built-in mail merge or Google's Apps Script approach may be enough.
If you want to keep your workflow inside Google Sheets while adding conditional sending and campaign automation, Mailvern provides a purpose-built solution.
Try Mailvern for Google Sheets
Your spreadsheet already knows who needs the email. Mail merge simply turns that data into action.
