All articles

Send Email From Google Sheets Without Apps Script: 4 Routes

Guides·September 9, 2026·By The SendHustle Team·12 min read

There are four practical ways to send email from Google Sheets without Apps Script: Gmail's own built-in mail merge, a Workspace add-on that sends through your Gmail account, a campaign platform that sends from your own domain, and a no-code automation connector wired to the sheet. Any of them will get a personalized message to every row.

What decides between them is not the interface. It is which sending quota each route spends — because these four routes draw on three completely different pools, and the ceilings differ by more than an order of magnitude. Most guides on this topic skip that entirely, hand you a block of Apps Script code despite the question saying "without," and leave you to discover the limit when your send stops at row 100. Below are the real numbers, straight from Google's documentation, and where each route breaks.

Why people send email from Google Sheets without Apps Script

It is worth knowing exactly what you are avoiding, because the reasons people abandon Apps Script are specific and they carry over.

Apps Script has its own email quota that is entirely separate from Gmail's. According to Google's Apps Script quotas page, a script running under a consumer gmail.com account can reach 100 email recipients per day. Under a Google Workspace account, that rises to 1,500 recipients per day. A single message sent from a script can address at most 50 recipients.

That 100-a-day figure is the one that surprises people. Someone reads an article about Gmail's sending limits, sees a number in the thousands, writes a script against a 400-row sheet, and gets cut off at row 100 — because the script was never drawing on the pool that article described.

Then there is the runtime cap. Apps Script allows 6 minutes per execution. A loop that sends a few hundred messages, with each send taking a second or two plus whatever SpreadsheetApp calls you make per row, will hit that ceiling mid-list. The script stops. Some rows are sent, some are not, and unless you built a resume marker into the sheet, you cannot easily tell which is which. This is the single most common reason a Sheets mail merge script gets abandoned, and it is why this search exists.

The three quota pools these routes draw from

Here is the comparison nobody publishes side by side. Every number below is from Google's own documentation, linked under each column heading.

Apps Script (MailApp) Gmail sending limits, Workspace Gmail built-in mail merge
Recipients per day 100 (consumer) / 1,500 (Workspace) 10,000 total; 3,000 external; 3,000 unique 1,500
Messages per day 2,000 (500 on a trial account) 1,500
Recipients per message 50 2,000 (max 500 external) 1,500
Resets Daily Rolling 24-hour window Daily
Available on Any account Any Workspace account Business/Enterprise/Education Standard and Plus, and Workspace Individual

Three things to take from that table.

First, the rolling 24-hour window. Google states plainly that Workspace sending limits "are applied over a rolling 24-hour period, not a set time of day." There is no midnight reset to wait for. If you burned your quota at 3pm yesterday, capacity comes back gradually from 3pm today, not all at once. People sit refreshing at midnight for nothing.

Second, hitting the limit locks sending, not your account. Google's documentation says a user who exceeds the limit "can't send new messages for up to 24 hours" but keeps access to their account, incoming mail, and other Google services. It is a send suspension, not a ban.

Third, note what is missing from that table: a verified per-day sending figure for free consumer Gmail. Google publishes these limits for Workspace. The widely repeated consumer number is not on the page above, so it is not in this table — if you are on a free gmail.com address, plan against the Apps Script figure of 100 and treat anything larger as unverified.

Route 1: Gmail's built-in mail merge

Gmail now ships mail merge natively, and a Google Sheet is optional rather than required — you can paste recipients straight in or link a spreadsheet holding their contact details. You get merge tags like @firstname and @lastname, and a cap of 1,500 recipients per day.

The catch is eligibility and the constraints on the message itself. It is available on Workspace Individual, Business Standard and Plus, Enterprise Standard and Plus, and Education Standard and Plus. Business Starter does not have it.

And the feature deliberately refuses a lot:

  • No scheduled send, no confidential mode, no plain-text messages
  • Cannot be used on replies or forwards
  • Merge tags will not work in subject lines or inside hyperlinked text
  • An unsubscribe link is added automatically to the bottom of every email, and you cannot remove it

That last one decides the question for many people. If you are sending a genuine campaign, a forced unsubscribe link is correct and welcome. If you are sending 40 personalized invoice reminders to clients, an unsubscribe footer on each one looks wrong, and this route is not for you.

Route 2: A Sheets add-on that sends through your Gmail account

This is the large category of Workspace Marketplace add-ons that install into Sheets, read your columns, and send each row through your own Gmail. No code, and the merge fields work the way you would expect.

The important structural fact: because these send as you, through Gmail, they spend your Gmail sending quota, not a separate one. The add-on's own marketing number is not the operative limit — your Google account's is. Two add-ons running against the same account share one pool, and the mail you send by hand comes out of it too.

They also inherit Gmail's deliverability posture entirely. Every message goes out from your personal or work address, over Google's infrastructure, with your address's reputation attached. For a few hundred warm recipients, that is a feature. For a cold list, it means any complaints land on the address you use for actual work.

Route 3: A campaign tool that sends from your own domain

Rather than routing through your Gmail mailbox, this class of tool takes the sheet as the list and sends over its own infrastructure, authenticated as your domain. SendHustle sits in this category — sending campaigns from your own domain is what the product is for.

What changes structurally is the pool. You are no longer spending Gmail's per-day quota at all, so the 1,500 and 2,000 ceilings above stop applying to you. Sending reputation accrues to your domain rather than to one person's mailbox, and a bad campaign does not put the address you use for day-to-day work into a 24-hour send suspension.

The cost is setup. Sending as your domain means publishing DNS records to authenticate it, which is a one-time task but a real one, and it is a step the Gmail-based routes skip entirely. It is worth it once volume or the separation between your campaigns and your personal mail justifies it. Below a couple of hundred recipients a month, it usually is not.

Route 4: A no-code automation connector

Tools in the Zapier and Make family watch the sheet for a new or updated row and fire an email in response. There is no code, and the trigger model is the point: this route is built for one row at a time, not for a list.

Use it for the drip cases — a new form response lands in the sheet and one confirmation goes out. Do not use it to blast 800 rows; you will pay per task, the run will be slow, and you still land in whichever sending account you connected it to, which puts you back on that account's quota.

Which route fits the size of your sheet

Rows to send Best route Why
Under 50, one-off Gmail mail merge, or paste and personalize by hand Nothing to install, well inside every limit
50–1,500, occasional Gmail mail merge or a Sheets add-on Fits Gmail's pool; no DNS work needed
Over 1,500 in a day Own-domain campaign tool Gmail's ceiling is 1,500–2,000/day; you need a different pool
Regular campaigns to a list Own-domain campaign tool Keeps campaign reputation off your work address
One email per new row Automation connector Trigger-shaped work, not list-shaped
Under 100/day on free Gmail Any of the above except a script The Apps Script cap is 100 recipients/day on consumer accounts

Three things that bite you on every route

Your sheet is dirtier than you think. Typos, duplicated rows and long-dead addresses all become bounces, and bounces are what mailbox providers weigh. Deduplicate on the email column and drop obvious junk before you send, not after.

Merge fields fail loudly and in public. An empty cell in the first_name column becomes "Hi ," in someone's inbox. Sort by each merge column, look at the blanks, and set a fallback before sending — most tools let you define one.

Test rows do not test what you think. Sending yourself a preview proves the template renders. It does not prove your merge fields map to the right columns for row 300. Send a handful of real rows first, to addresses you control on different providers, and read them there.

FAQ

Answers to the questions people actually type alongside this one.

Can Google Sheets send emails on its own?

Not by itself. A plain Google Sheet has no sending ability. Every method described here — Gmail's built-in mail merge, a Marketplace add-on, an external campaign platform, or an automation connector — works by handing the sheet's rows to something else that does the sending. The sheet is the list, never the sender.

Can Google Sheets send an email based on a cell value?

Yes, and this is the case an automation connector handles best. You set a condition on a column — a status cell changing to "approved," a date arriving, a number crossing a threshold — and the connector fires one email when a row matches. Gmail's built-in mail merge cannot do this, because it sends a batch on demand rather than watching for changes.

How many emails can I send from Google Sheets in a day?

It depends entirely on which route you take, which is the whole point of the table above. A script under a consumer account reaches 100 recipients a day. Gmail's built-in mail merge allows 1,500. A Workspace account sending normally allows 2,000 messages and 10,000 total recipients a day. An own-domain platform does not draw on any of those pools.

Why did my Google Sheets mail merge stop halfway through?

Two likely causes. If you used a script, you probably hit either the 6-minute execution limit or the daily recipient quota, both of which stop a run mid-list. If you used a Gmail-based tool, you hit your account's sending limit — and because that limit runs on a rolling 24-hour window rather than resetting at midnight, capacity returns gradually from the time you exhausted it.

Do I need Google Workspace to send email from a Google Sheet?

No, but a free account limits you sharply. Gmail's built-in mail merge requires a paid Workspace edition — Business Standard or above, Enterprise Standard or above, Education Standard or above, or Workspace Individual — and Business Starter is excluded. On a free gmail.com account your realistic options are a Marketplace add-on or an external platform that sends from your own domain.

Frequently asked questions

Can Google Sheets send emails on its own?

Not by itself. A plain Google Sheet has no sending ability, so every method here works by handing the sheet's rows to something else that does the sending - Gmail's built-in mail merge, a Marketplace add-on, an external campaign platform, or an automation connector. The sheet is the list, never the sender.

Can Google Sheets send an email based on a cell value?

Yes, and this is the case a no-code automation connector handles best. You set a condition on a column - a status cell changing to "approved", a date arriving, a number crossing a threshold - and the connector fires one email when a row matches. Gmail's built-in mail merge cannot do this, because it sends a batch on demand rather than watching for changes.

How many emails can I send from Google Sheets in a day?

It depends entirely on which route you take, because they draw on different quota pools. A script under a consumer account reaches 100 recipients a day, Gmail's built-in mail merge allows 1,500, and a Workspace account sending normally allows 2,000 messages and 10,000 total recipients a day. A platform sending from your own domain does not draw on any of those pools.

Why did my Google Sheets mail merge stop halfway through?

If you used a script, you most likely hit either the 6-minute Apps Script execution limit or the daily recipient quota, both of which stop a run mid-list. If you used a Gmail-based tool, you hit your account's sending limit - and because that limit runs on a rolling 24-hour window rather than resetting at midnight, capacity returns gradually from the time you exhausted it.

Do I need Google Workspace to send email from a Google Sheet?

No, but a free account limits you sharply. Gmail's built-in mail merge requires a paid Workspace edition - Business Standard or above, Enterprise Standard or above, Education Standard or above, or Workspace Individual - and Business Starter is excluded. On a free gmail.com account your realistic options are a Marketplace add-on or an external platform that sends from your own domain.

Send your next campaign from Gmail

SendHustle brings mail merge, follow-ups, and tracking right into the inbox you already use.

Start free