
Google Sheets Email Integrations (2026): Gmail, SMTP Providers and Webhooks Compared
There are exactly four ways to connect email to a Google Sheet, and one question sorts them: are you emailing colleagues, or customers? Internal notifications should use Apps Script's built-in sender — no account, no cost, no setup. Customer mail at any real volume should go through an SMTP provider's HTTP API, for the verified domain and the delivery data. Everything else is a variation on those two.
This page is the map. Each route links to a full walkthrough, and the last section does the three-year arithmetic, because that is usually what settles the argument.
The four routes at a glance
Built-in MailApp | Gmail API | Provider HTTP API | Paid connector | |
|---|---|---|---|---|
| Setup time | Minutes | An hour | An hour | Minutes |
| Daily limit | 100 / 1,500 | 100 / 1,500 | Your plan | Task quota |
| Sends from | Your Google address | Your address + aliases | Any verified domain | Varies |
| Deliverability control | None | Minimal | Full (SPF, DKIM) | Provider's |
| Bounce & open data | No | No | Yes, via webhook | Partial |
| Monthly cost | $0 | $0 | $0 free tier, then usage | $20–$30+ |
| Cost grows with volume | No | No | Slowly | Yes, per task |
| Right for | Internal alerts | Sending as an alias | Customer mail | Multi-system chains |
Route 1 — the built-in sender
MailApp.sendEmail() sends through Google's own infrastructure using the account that owns the script. No provider account, no API key, no domain verification. Add a time-driven trigger and you have a scheduled mailer that costs nothing.
Its ceiling is real and hard: 100 recipients a day on consumer Gmail, 1,500 on Workspace. Its other limit is reputational — mail inherits your personal address's standing, so a few hundred cold emails damage the account you rely on for actual work.
Use it for: overdue-invoice reminders to your own clients, daily digests, form-submission alerts, anything internal. Full walkthrough with re-run-safe code in the Google Sheets SMTP guide.
Route 2 — the Gmail API
Enabling Gmail as an Advanced Service in Apps Script buys you things MailApp will not do: sending as an alias, threading a reply into an existing conversation, and reading mail programmatically. The quotas are the same as route 1 because it is still Gmail underneath.
Worth the extra hour only when you specifically need aliases or threading. Otherwise it is more code for the same result.
Route 3 — an SMTP provider's HTTP API
The important thing first: Apps Script cannot open a raw SMTP socket. It has no TCP access, so it cannot connect to port 587 the way a Python script can. What it can do is call the HTTPS send endpoint that every provider offers alongside SMTP — same outcome, one UrlFetchApp call.
This is the route for customer mail. You get a sending domain you control with SPF and DKIM, a limit set by your plan, and — through webhooks — actual delivery data.
Pick on what you need, not on integration effort, because the code is nearly identical across providers:
| Provider | Strongest at | Free tier (at time of writing) |
|---|---|---|
| Mailjet | Generous free tier, template editor | 6,000/month, 200/day |
| Brevo | Free tier, EU data residency | 300/day |
| Mailgun | Signed webhooks, inbound email routing | Changes often — check current pricing |
| Postmark | Transactional deliverability | Trial only |
Walkthroughs: Mailjet, including the full event round trip, and Mailgun, including signature verification and inbound routing.
Route 4 — a paid connector
An integration platform will wire Sheets to a mail provider in a few clicks, and there are cases where that is the right call: when the chain also touches a system with no usable API, when nobody at your company will ever open a script editor, or when you need it working this afternoon and volume is small.
Be clear-eyed about the trade. These platforms meter by task, so every send is billable and the bill grows exactly as your list does. The integration also lives on someone else's servers, which means webhooks terminate there rather than with you — you cannot verify a signature you never see.
The inbound half: webhooks
Everything above pushes mail out. The return direction is a webhook, and it is what turns a send list into a system.
Deploy your Apps Script project as a web app (Deploy → New deployment → Web app, access Anyone), register the /exec URL with your provider, and every delivered, open, click, bounce and complaint arrives as a POST you can write into an Events tab. From there, open rate is a COUNTIF and a suppression list is a COUNTIFS guard at the top of your send loop.
Two rules, both non-negotiable:
- Verify the signature. A web app open to "Anyone" is genuinely public. Providers sign their webhooks precisely so you can reject forgeries; the Mailgun guide has working HMAC verification code, including the signed-byte quirk that makes naive implementations always fail.
- Batch your writes.
appendRowin a loop will time out under real traffic. Collect andsetValuesonce. The webhooks guide covers the patterns that survive volume.
The three-year arithmetic
Take a small business sending 2,000 customer emails a month — invoice reminders, order confirmations, a monthly update.
| Paid connector | Apps Script + provider | |
|---|---|---|
| Platform fee | ~$29/mo | $0 |
| Email sending | Included at low tiers | $0 (inside free tier) |
| Year 1 | ~$348 | ~$0 |
| 3 years | ~$1,044 | ~$0 |
| At 10,000/month | Higher tier, ~$70+/mo | Provider fee only, ~$15/mo |
The gap is not the headline number — it is the shape. Connector cost scales with volume forever; a script's does not change whether you send ten emails or ten thousand. You still pay the provider for delivery either way. What you stop paying for is the plumbing between two systems that both already have APIs.
We ran the same comparison across automation platforms generally in n8n vs Apps Script: rent or own, and the conclusion holds here: rent when the thing is genuinely hard or short-lived, own when it is a stable process you will run for years.
How to choose in one minute
- Internal notifications, under 100/day? Route 1. Stop reading, it takes fifteen minutes.
- Need to send from an alias or reply into a thread? Route 2.
- Emailing customers, or above the Gmail quota? Route 3 — and set up the event webhook on day one, not later.
- Chaining systems that lack APIs, or nobody will maintain code? Route 4, with your eyes open about per-task billing.
Most businesses we talk to end up with routes 1 and 3 side by side: the built-in sender for internal alerts, a provider for anything a customer sees. That combination costs nothing per month and has no ceiling worth worrying about.
If you would rather have the whole loop built once — send, verify, log, suppress, report — than assemble it over a few weekends, tell us what you send and to how many people. The feasibility review is free, and if one of the routes above already covers you, we will point you at it and leave it there.
Frequently Asked Questions
What is the best way to connect email to Google Sheets?
It depends on one question: are you emailing colleagues or customers? For internal notifications, reminders and digests, Apps Script's built-in MailApp is the best answer — zero setup, no account, no cost, and it sends from your own address. For customer-facing mail at any volume, use an SMTP provider's HTTP API through UrlFetchApp, because you get a verified sending domain, delivery data and a limit set by your plan rather than by Gmail. Paid integration platforms are the right answer only when the sheet is one hop in a chain that also touches systems you have no API access to.
How many emails can Google Sheets send per day for free?
Apps Script's built-in mail service allows 100 recipients per day on a free consumer Gmail account and 1,500 per day on a paid Google Workspace account. That is a hard daily cap on a rolling 24-hour window, readable in code with MailApp.getRemainingDailyQuota(). Routing through a provider instead lifts you to that provider's plan limit — Mailjet's free tier, for example, allows 6,000 a month with a 200/day ceiling at the time of writing — while also giving you SPF and DKIM on your own domain.
Do I need Zapier to send email from Google Sheets?
No, and for this specific job a connector subscription is poor value. The work — read rows, send one email each, write the outcome back, run on a schedule — is a few dozen lines of Apps Script that lives inside the spreadsheet and costs nothing to run. Connector platforms meter by task, so every email is billable and the cost rises with your volume permanently. They earn their fee when you are chaining several systems that genuinely lack APIs, not when both ends are Google and a mail provider.
What is a Google Sheets email webhook actually for?
Webhooks handle the inbound direction. After you send, your provider can POST every delivery, open, click, bounce and spam complaint to a URL, and an Apps Script web app can be that URL, writing each event into a tab of the same spreadsheet. That turns a send list into a reporting system: open rates by campaign, a bounce list you can suppress against, and a per-row answer to whether that specific customer opened that specific reminder. Verify the signature on every request — a public web-app URL is otherwise an open door.
Can I send email from a Google Sheet without any code?
Yes, with a Workspace add-on or a mail-merge extension, and for a one-off campaign that is a reasonable choice. The trade is control: add-ons need access to your spreadsheet data, most cap the free tier low enough to push you onto a monthly plan, and you cannot change what they do when your process changes. A script has a steeper first hour and no ceiling afterwards. If you will send the same kind of mail repeatedly for years, the script pays for itself quickly.
Which email provider integrates best with Google Sheets?
Any provider with a simple JSON or form-encoded send endpoint integrates in about a dozen lines, so pick on what you need rather than on integration effort. Mailjet and Brevo have the most generous free tiers for small senders. Mailgun is the strongest on signed webhooks and inbound email routing. Postmark leads on transactional deliverability. Because the Apps Script code is nearly identical across all of them, switching later is a small edit rather than a migration — which is the practical advantage of owning the integration.




