Send emails from Google Sheets automatically: on a new row, on a date or on a status, without sending twice (free Make blueprints)

Part of: Make + Google Sheets as a free small-business database: the modules, the limits and the pitfalls

Short answer

To send emails from Google Sheets automatically, decide what should trigger each email: a new row, a date in a column, or a status someone types. A scheduled Make scenario searches the sheet once a day, sends each match from your Gmail and stamps a "sent" column so no row is emailed twice; a personal Gmail account can send up to 500 emails a day, and Make's Free plan includes 1,000 credits a month (both checked 2026-10-18).

Three ways to send email from a Google Sheet, the three triggers that decide when, and the "sent" column that stops duplicates. Free Make blueprints.

Disclosure: links marked "paid link" pay us a commission from the vendor if you sign up. Your price is unchanged, and every file here works without them. How we choose tools →

Most small businesses already keep the list in a Google Sheet: invoices, quotes, contracts, bookings. The emails that should come out of that list are still written by hand, when someone remembers. Sending them automatically is not hard. Sending each one exactly once, at the right moment, is the part people get wrong.

This guide covers the three ways to send email from a sheet, the three triggers that decide when an email goes out, and the one column that stops duplicates. The working examples are free Make blueprints you can import and point at your own sheet.

Three ways to send email from a sheet

Sending email from a Google Sheet: the three common ways (Google and Make documentation, checked 2026-10-18)
WayWho it suitsLimits worth knowing
Gmail mail mergeOne campaign to a list, sent by handEligible Google Workspace plans only; up to 1,500 recipients a day
Apps Script (MailApp or GmailApp)Someone who writes and maintains code100 recipients a day on a personal account, 1,500 on Workspace; 6 minutes per run
A Make scenarioRecurring emails triggered by the data, without codeGmail's own sending limits; each module run uses credits

Mail merge is the right tool for a one-off announcement. It is a person pressing send, not an automation. Apps Script works well if someone on the team can write and debug JavaScript, and owns it when it breaks. A Make scenario sits in between: the logic is visible as modules, and it runs every day without anyone opening the sheet. The rest of this page is about that last option.

Pick the trigger first

Every "send an email from my sheet" request is one of three triggers. Naming it first decides how the scenario starts and what it costs.

  • A new row. A lead, a booking or an order arrives. Do not watch the sheet for new rows; send the data to a Make webhook and let that scenario write the row and send the email in the same run.
  • A date in a column. An invoice due date, a contract end date, a follow-up date. A scenario runs once a day, searches for rows whose date has come, and emails each one.
  • A status someone types. A quote changes to "won", a project to "done". The same daily search, filtered on the status column instead of a date.

The date and status triggers use one Search Rows module on a daily schedule, and then a Gmail module that runs once for each row found. One search a day costs a credit whether or not it finds anything, which is about 31 credits in the longest month.

The column that stops duplicates

A daily search finds the same rows every day until something changes them. Without a change, the client whose contract ends in three weeks gets the same email every morning for three weeks. Every reliable sheet automation therefore writes something back after the email goes out, and filters on it:

  • A "sent" date column, empty until the email goes out. The search only takes rows where it is empty; the scenario writes today's date after sending.
  • Or a status that moves forward: "sent" becomes "followed up", "won" becomes "won - kicked off". The search only takes the earlier status.

The contract renewal blueprint below uses the first pattern. Thirty days before an active contract ends, it emails the client once, stamps notice_sent, and tells you on Telegram.

Contract ends in 30 days → renewal email to the client → alert to you

Every morning Make checks the contracts sheet. A contract ending within 30 days gets one renewal email to the client, the row is stamped, you get an alert.

No Make account yet?The file imports only into Make. Signing up through the link gives you one month of Core free, and us a commission. The file works without the link.
Sign up for Make →paid link · we earn a commissionPaid link. If you sign up through it we earn a commission from Make; your price is the same, and the link gives you one month of Core free.
  1. Copy the contracts sheet template from the automation page: client, email, service, end_date, status, notice_sent, notes, in that order.
  2. Write end dates as YYYY-MM-DD and keep status to plain words, such as "active" and "ended". Leave notice_sent empty.
  3. Import the blueprint into Make, connect Google Sheets, Gmail and Telegram, and choose your spreadsheet and tab in both Sheets modules.
  4. Edit the email wording and put your name in the signature. Keep the mapped fields: the service and the end date come from the row.
  5. Test with a row of your own address and an end date two weeks away. Run once, check the email, the Telegram message and today's date in notice_sent. Run once more: nothing should be sent.
  6. Schedule it for every morning and switch it on.

The same shape covers the other two triggers. The invoice reminder searches on a due date and stamps reminder_sent; the kickoff email searches on a status and moves it on.

Invoice past due → an automatic, polite reminder

Once a day it finds open invoices past their date and sends a reminder. The client no longer has to remember to chase.

Quote marked "won" → kickoff email → onboarding task → alert

Mark a quote "won" in the sheet: the client gets an email saying what happens next, a kickoff task opens in the onboarding list, and you get an alert.

Make + Google Sheets: the modules, the costs and the pitfallsSearch Rows, Update a Row, the API quota and the six mistakes that break a sheet quietly

What it costs

A daily search with one email and one stamp per row costs 31 credits a month for the searches plus 3 for each email. At the calculator's default of 3 renewal notices a month, the contract scenario uses about 40 credits; the invoice reminder at 20 reminders about 71. Both fit in Make's Free plan of 1,000 credits a month (checked 2026-10-18), which allows two active scenarios (make.com/pricing, checked 2026-10-12). Gmail is rarely the limit: a personal account can send up to 500 emails a day (Gmail Help, checked 2026-10-18).

Put your own volumes into the calculatorPick the automations, type how many emails a month, see the credits and the plan

Every scenario on this page runs on Make's free plan at small-business volume; this is our link: Sign up (one month of Core free) → paid link · we earn a commissionPaid link. If you sign up through it we earn a commission from Make; your price is the same, and the link gives you one month of Core free.

What does not work

  • Watching the sheet for new rows. Watch New Rows checks on a timer and stops at a blank row (apps.make.com, checked 2026-10-18). Send new data to a webhook instead.
  • Dates typed in different formats. The filters compare a YYYY-MM-DD text date; "31/10" or "Oct 31" may be misread or skipped without an error.
  • Replies. A client's answer lands in your Gmail, not in the sheet. Someone still changes the status by hand.
  • Switching it on over an old sheet. Every row that already matches is emailed on the first morning. Stamp or close old rows before the first run.
  • Personal @gmail.com accounts on the legacy Gmail module hit Google's "restricted scopes" error; Make's current Gmail app, which the blueprints use, connects them without a Google Cloud project (Make Help Center, checked 2026-10-18).

Fix the Gmail "restricted scopes" error in MakeWhen Make cannot connect a personal @gmail.com account

Can Google Sheets send emails automatically?

Not on its own. You need Apps Script, a mail merge in Gmail (eligible Workspace plans only), or an automation tool such as Make that reads the sheet on a schedule and sends each email from your Gmail.

How do I send an email when a date in Google Sheets is reached?

Run a scenario once a day that searches for rows whose date is today or earlier and whose "sent" column is empty, sends the email, and writes today's date into that column so the row is not picked again.

How do I stop the same row from being emailed twice?

Write something back after sending: a date in a "sent" column, or a status that moves forward. The search must filter on it, so a row that was already emailed never matches again.

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

Through Gmail, a personal account can send up to 500 a day before Gmail blocks sending for up to 24 hours. Apps Script on a personal account is limited to 100 recipients a day (both checked 2026-10-18).

Do I need a paid Make plan?

Not for small volumes. A daily search with a few emails a month uses tens of credits, inside the Free plan's 1,000 a month. A third active scenario is where a paid plan becomes necessary.

  1. Gmail Help — Gmail sending limits (more than 500 emails a day blocks sending for 1 to 24 hours; checked 2026-10-18)
  2. Gmail Help — Send personalized emails with mail merge in Gmail (eligible Workspace plans; up to 1,500 recipients a day; checked 2026-10-18)
  3. Google for Developers — Apps Script quotas (email recipients per day: 100 consumer, 1,500 Workspace; 6 minutes per execution; checked 2026-10-18)
  4. Make Apps Documentation — Google Sheets modules (Search Rows filters and limit; Update a Row needs the row number; Watch New Rows and blank rows; checked 2026-10-18)
  5. Make Help Center — The new Gmail app (no Google Cloud project needed for personal Gmail accounts; checked 2026-10-18)
  6. Make Help Center — Schedule a scenario (daily, weekly, monthly; minimum interval depends on the plan; checked 2026-10-18)
  7. Make — Pricing (Free: 1,000 credits a month, checked 2026-10-18; 2 active scenarios, checked 2026-10-12)

What will it cost? Make cost calculator →Build your automation plan →