Google Sheets: Send an Email Based on a Cell Value
Updated 7 min read

Table of contents
Google Sheets can email people when a cell changes, and you can email every row that has a certain value. For a change, Google sends a short notice, or your own script sends your message. For a value, filter the sheet, then run a mail merge with Yet Another Mail Merge (YAMM): each person on the filtered rows gets their own email from your Gmail.
| You need | Use | Watch out |
|---|---|---|
| An alert when a cell changes | Conditional notifications | Only on some work or school accounts, and people get Google's notice, not your own message. |
| Your own email when a cell changes | Apps Script with an installable trigger | You paste a short script and set up the trigger yourself. |
| A personalized email to every row with a value | A filter, then a YAMM mail merge | It sends when you start it or at a time you set, not each time a cell changes. |
Can Google Sheets send an email when a cell value changes?
Yes, with Conditional notifications, which are built into Sheets and need no code. What people receive is a notice from Google, not a message you write. Depending on how much access each person has to the file, it shows the new value, the cells next to it, who made the change and the old value. It's a good fit for "tell the team when a status turns to Completed".
To set it up:
- Open your spreadsheet and click Tools > Conditional notifications. You can also right-click any cell.
- Click Add rule.
- Choose the column or the range of cells to watch.
- Click Add condition and set it, for example Text is exactly "Completed".
- Choose who gets the email: type the addresses, or pick a column of your sheet that holds email addresses.
A few things to know:
- It's only on some work or school accounts. If you don't see it, ask your administrator.
- It emails individual Google accounts only, not group addresses or Outlook and Yahoo addresses.
- The email may not arrive right away, and several changes can come in one email.
- It doesn't react to data pulled in from another sheet with IMPORTRANGE.
The older Tools > Notification settings only emails you.
How do you send your own email automatically when a cell changes?
Use Google Apps Script, Google's built-in tool for small scripts, with an installable trigger. You write the subject and the text, and the script sends the email from your Gmail account as soon as someone edits the cell.
Most scripts you'll find online use a function called onEdit. If you've tried one and no email arrived, here's why, in Google's words: "a simple trigger can't send an email because the Gmail service requires authorization." The fix is to give the function another name and run it from a trigger you set up yourself.
This example sends an email when someone types "Send" in column C. The email address is in column A of the same row.
-
In your sheet, click Extensions > Apps Script.
-
Delete what's in the editor and paste this:
function emailWhenStatusIsSend(e) { const cell = e.range; if (cell.getColumn() !== 3 || e.value !== "Send") return; const sheet = cell.getSheet(); const email = sheet.getRange(cell.getRow(), 1).getValue(); MailApp.sendEmail(email, "Your request is approved", "Hi, your request has been approved."); }In the code,
3is column C, the one it watches, and1is column A, where it reads the email address (A is 1, B is 2, and so on). Change the words in quotes to your own value, subject and message. -
Click Save.
-
At the left, click Triggers, then Add Trigger at the bottom right.
-
Choose the function
emailWhenStatusIsSend, the event source From spreadsheet and the event type On edit. Click Save and allow the access Google asks for.
The code follows Google's Apps Script guides for the edit event, Range and MailApp, as they stand in October 2026.
Before you rely on it:
- It runs only when a person edits the cell. Changes made by another script don't start it, and if someone pastes into several cells at once, the script gets no value and sends nothing.
- It doesn't remember what it sent. If someone types "Send" in the same row again, that person gets a second email.
- If a run fails, Google emails you a summary of the failures.
- Apps Script can email 100 recipients a day from a personal Gmail account and 1,500 from a Google Workspace account.
How do you email every row that has a certain value?
Filter the sheet on that value, then send a mail merge to the rows that stay visible. YAMM, the add-on we make, sends each person their own email from your Gmail, with their name and details filled in. It goes out when you start it or at a time you set.
Step 1: Set up your sheet

Make the sheet a contact list: one person on each row, a column of email addresses, a column for each detail you want in the email, and the column you'll filter on, such as Status or Department.

Step 2: Filter on the value
Click cell A1, then click the Filter button (or Data > Create a filter). Click the filter arrow in your column's header and use Filter by values to keep only the rows you want, for example Department is "Sales". You can also right-click a cell and choose Filter by cell value.
YAMM sends only to the rows your filter shows. Use the normal filter from this step, not a saved filter view.
Step 3: Write the email as a Gmail draft

In Gmail, write a new message and leave the To field empty. Wherever the email should change for each person, type the column's name in double curly brackets, like {{First Name}} or {{Department}}. YAMM swaps in each person's value. These markers work in the subject too.
Step 4: Send it with YAMM

Back in your sheet, click Extensions > Yet Another Mail Merge: Mail Merge for Gmail > Start Mail Merge. If you don't have YAMM yet, install it from the Google Workspace Marketplace.

Pick your draft and enter your sender name, the name people see on your email. Click Send test email first: YAMM fills it in with the first row your filter shows, so you see exactly what that person will get.

Then click Send emails, or Schedule to send it later, up to two weeks ahead. YAMM writes each person's result in a Merge status column and updates it as they open, click or reply.
Next time, only the new matches get an email
Next week, when more rows have the value, filter the sheet again and start another mail merge. YAMM skips every row that already has a status like EMAIL_SENT or EMAIL_OPENED, so only the new rows get an email. To send someone the email again, clear their Merge status cell.
If the rows come from a Google Form, each response adds a new row, and YAMM can also send a personalized email every time someone submits the form: Extensions > Yet Another Mail Merge: Mail Merge for Gmail > Configure form submission notifications.
Can Google Sheets send reminders based on a date?
Not with Conditional notifications, because they don't reliably trigger when a formula like TODAY() changes a cell's value while the file is closed. You have two other ways:
- Apps Script has time-driven triggers that run your script on a schedule, for example once a day, and the script can check each row's date.
- YAMM: open the filter on your date column, use Filter by condition to keep the rows that are due, then send the reminder to those rows.
If you send to filtered rows often, install YAMM from the Google Workspace Marketplace and send your first merge from the sheet you already have.
To email everyone on the sheet, not only the rows with one value, use our guide to sending emails from Google Sheets. And before a big send, check how many emails Gmail lets you send in a day.












