Tips & Tricks · 14 min read

Mail Merge from Google Sheets: 8 Tips for Better Gmail Campaigns

Learn how to mail merge from Google Sheets to Gmail with 8 practical tips. Cleaner data, smarter personalization, and fewer bounces for your next campaign.

Mathias Gilson

Written by

Mathias Gilson

CEO, Qualtir

Mail Merge from Google Sheets: 8 Tips for Better Gmail Campaigns

On this page

Google Sheets is the most popular data source for Gmail mail merge, and for good reason. It lives where your contacts already are, it syncs across your team in real time, and it connects directly to Gmail without any extra software. But most people use only a fraction of what Google Sheets can do when sending personalized email campaigns.

This guide goes beyond the basics. If you already know how to mail merge in Gmail, these eight tips will help you get significantly better results: cleaner sends, fewer bounced emails, smarter personalization, and campaigns that feel genuinely tailored rather than template-filled.

What Makes Google Sheets the Right Data Source for Mail Merge

Before diving into the tips, it is worth understanding why Google Sheets works so well as a mail merge data source. Unlike CSV files, which are static and easy to corrupt, a Google Sheet is a live document. You can update it right up until you send, share it with a colleague for review, and filter it without losing your original data.

Mail Merge for Gmail reads your spreadsheet data at send time, pulling the latest values from each row. This means you can fix a typo, add a column, or remove a recipient and the change takes effect immediately, no re-importing needed.

Mail Merge logo Try Mail Merge for Gmail

Send personalized emails at scale directly from Gmail using your Google Sheets data. No coding, no third-party platforms, just Google.

Get Started →
Mail Merge screenshot

Tip 1: Name Your Columns Like Placeholder Variables

The column headers in your Google Sheet become the placeholder names in your email template. If your column is named First Name, the placeholder is {{First Name}}. That extra space makes templates harder to read and easier to mistype.

A better approach: use camelCase or simple lowercase names with no spaces.

Column Naming: Harder vs Easier

Harder to Work With

First Name
Last Name
Company Name
Job Title

Template: {"{{First Name}}"}

Easier to Work With

firstName
lastName
company
title

Template: {"{{firstName}}"}

Short, predictable column names reduce template errors significantly, especially when you reuse templates across multiple campaigns.

Tip 2: Add a Dedicated “Status” Column

Before you run a mail merge from Google Sheets, add a column called status at the far right of your sheet. Mail Merge for Gmail writes back to this column after sending, marking each row as EMAIL_SENT or logging any errors.

This gives you a permanent audit trail inside your spreadsheet. You can filter by status to see exactly who received the campaign, who was skipped, and whether any addresses triggered delivery errors. For follow-up campaigns, you can filter out rows marked EMAIL_SENT and send only to the remainder, avoiding duplicates entirely.

Tip 3: Use a Fallback Value for Empty Cells

Empty cells break personalization. If a recipient’s company field is blank and your email says “I wanted to reach out to your team at {{company}}” the result looks unprofessional or confusing.

Fix this in Google Sheets with the IF and ISBLANK functions. Create a computed column next to your original data column:

=IF(ISBLANK(B2), "your organization", B2)

Name this column companyClean and use it in your template instead of company. Now every recipient gets a sensible value even when the original field is empty.

The same pattern works for any field where blank values would look awkward:

  • firstName fallback: =IF(ISBLANK(A2), "there", A2) produces “Hi there” instead of “Hi ,”
  • title fallback: =IF(ISBLANK(D2), "your team", D2) for “forward this to your team”
  • city fallback: removes location-based personalization when city data is missing

Tip 4: Clean Emails Before Sending

Bad email addresses cause bounces. Bounces hurt your Gmail sender reputation, and a poor sender reputation means your future campaigns land in spam. Cleaning your list before every send is a non-negotiable step.

In Google Sheets, add a validation column that flags suspicious addresses:

=IF(ISNUMBER(FIND("@", C2)), "valid", "check")

This is a basic check (it confirms there is an @ symbol), but combined with visual scanning it catches the most common problems: typos like name@gmailcom, addresses with extra spaces, and rows where the email field contains a name instead of an address.

For a more thorough review, use Google Sheets conditional formatting to highlight cells that do not match the pattern *@*.*:

  1. Select your email column
  2. Go to Format, then Conditional formatting
  3. Set the rule to “Text does not contain” and enter @
  4. Apply a red background to flag those cells

Remove or fix every flagged row before running the merge.

Tip 5: Segment with Filters Instead of Separate Sheets

Many people create a separate Google Sheet for each campaign segment: one sheet for leads, another for customers, a third for trial users. This leads to version fragmentation, where you update one sheet but forget the others, and your data falls out of sync.

A better approach: keep all contacts in one master sheet and use Google Sheets filter views to create virtual segments. Each filter view is a saved combination of column filters that you can activate with one click.

How to Use Filter Views for Segmentation
  1. Click Data in the top menu, then Filter views, then Create new filter view
  2. Apply column filters for your segment (e.g., status = "trial", region = "US")
  3. Name the view something memorable, like "US Trial Users - June"
  4. Save the view. It is now accessible from the filter views dropdown any time
  5. When running your mail merge, activate the filter view so only matching rows are visible

Mail Merge reads only the visible rows, so activating a filter before sending automatically targets that segment.

This approach keeps your source of truth centralized while giving you flexible segmentation without duplicating data.

Tip 6: Use a Test Row at the Top

Before sending to your full list, send a test email to yourself first. The most reliable way to do this is to add a test row at the very top of your data (row 2, just under the header) with your own email address and realistic-looking placeholder data.

Run the merge with only this row visible (hide all other rows temporarily, or use a filter), confirm that the email looks correct in your inbox, and then show all rows and send the full campaign.

This catches:

  • Broken placeholder syntax (e.g., {{FirstName}} instead of {{firstName}})
  • Line breaks that render incorrectly
  • Links that point to the wrong URL
  • Personalization fields that pulled the wrong column

A single test email takes 30 seconds and can prevent sending a broken template to thousands of recipients.

Tip 7: Pace Large Sends with the Daily Limit in Mind

Gmail imposes daily sending limits: 500 emails per day for free accounts, and 2,000 per day for Google Workspace accounts. Mail Merge for Gmail respects these limits and pauses automatically when you approach the cap, but knowing the limits helps you plan campaigns in advance.

For large lists, break your send across multiple days using the status column from Tip 2:

  1. Sort your sheet by any column to get a natural order
  2. Send the first 1,800 rows on day one
  3. On day two, filter to rows where status is blank (unsent) and send the remainder

This approach works cleanly because the status column tells you exactly where you left off. You never have to guess whether someone already received the email.

If your list is under 500 contacts and you have a free Gmail account, pace your sends by time of day instead. Research consistently shows that business emails sent between 9 and 11 AM local time see higher open rates than those sent at other times. A single morning batch outperforms split sends for small lists.

Tip 8: Connect Email Tracking to Your Spreadsheet Workflow

Sending is only half the process. Knowing who opened your email, and when, tells you which leads are warm and which need a different approach.

Mail Merge for Gmail includes built-in open tracking. When a recipient opens your email, the open is logged and you can view it directly in the add-on interface. Pair this with your status column to create a complete feedback loop: you can see who received the email, who opened it, and build a follow-up segment for everyone who did not.

For teams that need open tracking and link click data across all their Gmail outreach, not just mail merge campaigns, Mail Tracker works alongside Mail Merge to provide real-time open notifications and a full read history for every email in your sent folder.

Mail Merge logo Send Smarter with Mail Merge

Run your entire campaign from Google Sheets to Gmail with personalization, open tracking, and automatic status logging. No switching apps.

Start for Free →
Mail Merge screenshot

Putting It Together: A Pre-Send Checklist

Before you run any mail merge from Google Sheets, run through this checklist:

  • Column names: short, no spaces, consistent casing
  • Status column: present and empty (no leftover values from a previous send)
  • Fallback values: computed columns covering every field that might be blank
  • Email validation: flagged and fixed, no bounces in the queue
  • Filter view: active for your target segment only
  • Test row: sent to yourself and confirmed in your inbox
  • Send volume: within daily limits, batched across days if needed
  • Tracking: open tracking enabled for the campaign

Following this checklist adds about 10 minutes to your setup time and saves you from the most common mail merge failures: broken personalization, accidental duplicate sends, and deliverability issues from dirty data.

Frequently Asked Questions

How do I do a mail merge from Google Sheets to Gmail?
Install Mail Merge for Gmail from the Google Workspace Marketplace, open your Google Sheet, and run the add-on from the Extensions menu. The add-on reads your column headers as placeholder names and sends one personalized email per row using your Gmail account. See the complete mail merge Gmail guide for a full walkthrough.
How many emails can I send with mail merge from Google Sheets?
Gmail limits free accounts to 500 emails per day and Google Workspace accounts to 2,000 per day. These limits apply to all outgoing email, not just mail merge. Mail Merge for Gmail stops automatically when you approach the daily cap and resumes the following day. For large lists, plan your campaign across multiple days and use the status column to track progress.
Can I send attachments with mail merge from Google Sheets?
Yes. Mail Merge for Gmail supports attachments. You can attach the same file to every email, or use a column in your Google Sheet to specify a unique Google Drive file URL for each recipient, useful for sending personalized PDFs, contracts, or reports. See the mail merge with attachments guide for setup steps.
What happens if I accidentally send a duplicate campaign?
Mail Merge writes an EMAIL_SENT status back to your spreadsheet after each send. If you start a second send on the same sheet, the tool skips rows that already have a status value, preventing most duplicate sends automatically. This is why maintaining an accurate status column is so important for every campaign.
Can multiple team members use the same Google Sheet for mail merge?
Yes, but only one person should run the merge at a time. Because Mail Merge reads and writes to the spreadsheet during the send, simultaneous sends from the same sheet can cause conflicts. Use Google Sheets sharing to let teammates add or edit contact data, but coordinate sends so only one person triggers the merge at any given time.

The Google Sheets Advantage

Running a mail merge from Google Sheets is faster, more flexible, and more reliable than any alternative when you set it up correctly. The tips in this guide, from clean column names and fallback values to filter-based segmentation and status tracking, are the difference between a campaign that sends cleanly and one that requires manual cleanup after the fact.

For more on building effective Gmail campaigns, see how to send personalized bulk emails from Gmail and explore the real-world use cases for Google Sheets mail merge to find the workflow that fits your team.

Related Articles