# How to Send a Newsletter from Google Sheets: Sign-Ups, List and Sending

By [Stanislas Marion](https://www.linkedin.com/in/stanislasmarion/) · Published 14 November 2022 · Updated 25 October 2026

Collect newsletter sign-ups with a Google Form, keep the email list in Google Sheets, and send each issue from the sheet with YAMM, unsubscribes included.

![Promotional email layout with the Gmail logo.](https://yamm.com/images/blog/covers/create-newsletter-from-google-sheets.webp)

A Google Sheet can run a whole newsletter. A Google Form adds each new subscriber as a row, the columns hold what you know about each person, and [YAMM](https://yamm.com/) sends every issue from your Gmail to the rows of the sheet. Unsubscribes, bounces and replies come back to the same sheet.

This guide covers the sheet side: collecting sign-ups, keeping the list clean and sending from it. To design the email itself, as a plain email or with Gmail Layouts, see [how to make a newsletter in Gmail](https://yamm.com/blog/how-to-make-an-email-newsletter/).

## How do you collect subscribers with a Google Form?

A Google Form gives you a free sign-up page that writes each answer to a Google Sheet. To set one up:

1. **[Create a Google Form](https://form-publisher.com/blog/how-to-make-a-google-form/)** with only the questions you need, such as a first name and the topics someone wants to hear about. Each question becomes a column header in the sheet, and you'll type that header in your email to personalize it, so keep questions short: "First name" works better than "What should we call you?"
2. **Collect email addresses.** In the form's **Settings**, expand **Responses** and set [**Collect email addresses**](https://support.google.com/docs/answer/139706) to **Responder input**, so people type their address. **Verified** records the address of the person's Google Account instead.
3. **Link the form to a sheet.** In the **Responses** tab, [link the form to a new spreadsheet](https://support.google.com/docs/answer/2917686). From then on, [each sign-up is added to the sheet as a new row](https://form-publisher.com/blog/google-forms-to-google-sheets/).
4. **Share the form.** [Send its link or embed it on your website](https://support.google.com/docs/answer/2839588).

Everyone in the sheet signed up on their own, and the **Timestamp** column shows when. That's the opt-in [Google's sender guidelines](https://support.google.com/a/answer/81126) ask for.

## How do you welcome each new subscriber automatically?

YAMM can email each person as soon as they submit your form, so every new subscriber gets a welcome email without you sending anything. [Set it up from the response spreadsheet](https://yamm.com/help/usage/launch-campaign/send-upon-google-form-submission/):

1. Write the welcome email as a Gmail draft. You can use the sheet's column headers in it, such as `{{First name}}`.
2. In the sheet, go to **Extensions > Yet Another Mail Merge: Mail Merge for Gmail > Configure form submission notifications**.
3. Select **Notify address submitted by the form**, choose the column that holds the email addresses, and pick your welcome draft.
4. Click **Save**.

Keep the draft in Gmail: YAMM reuses it for every new subscriber. This doesn't work in a spreadsheet that collects answers from more than one form.

## How do you manage the email list in Google Sheets?

Use the form's response sheet as your list, with one row per subscriber. A few habits keep it clean:

- **Remove duplicates.** People sometimes sign up twice. [Find and remove duplicate addresses](https://yamm.com/blog/find-and-remove-duplicates-in-google-sheets/) before you send, so each person appears once.
- **Let YAMM keep the unsubscribe list.** When someone clicks the unsubscribe link in your newsletter, YAMM adds them to your unsubscribe list and [leaves them out of future mail merges](https://yamm.com/help/usage/create-campaign/insert-unsubscribe-link/), even though their row stays in the sheet. If someone replies asking to be removed, add their address on the [Unsubscriptions page of the YAMM web app](https://yamm.com/help/usage/track-campaign/unsubscribe-rate/). Remove an address there to email that person again.
- **Send to part of the list with a filter.** To send an issue only to people who picked a topic, [filter the sheet](https://yamm.com/help/usage/create-campaign/build-contact-list/#filter-out-some-recipients) on that column with **Filter by condition > Text contains**. YAMM sends only to the rows the filter shows and skips hidden rows. Filter views don't count, so use a regular filter.

## How do you send each issue from the sheet?

Write the issue as a Gmail draft first. Leave the **To** field empty, and where you want each person's details, type the column header in double curly brackets, such as `{{First name}}`. At the end, add a line like "Unsubscribe" and [link it to `https://app.yamm.com/unsubscribe`](https://yamm.com/help/usage/create-campaign/insert-unsubscribe-link/).

Then, in your subscriber sheet:

1. **Clear the Merge status column.** YAMM writes each person's result in a column called **Merge status**, and [skips every row that already has one](https://yamm.com/help/usage/launch-campaign/re-run-mail-merge/). Before your first issue there's nothing to clear. Before each issue after that, select every cell in the **Merge status** column and press **Delete**. This closes the previous issue's tracking report, so read it first. People who unsubscribed stay left out, because YAMM checks them against your unsubscribe list, not this column.
2. **Filter the sheet** if this issue is only for part of the list.
3. **Go to Extensions > Yet Another Mail Merge: Mail Merge for Gmail > Start Mail Merge.** The top of the window names the column YAMM will send to; click **change** if it isn't your email column. Pick your draft as the **Email Template**, click **Send test email** and check the test in your inbox.
4. **Select Track emails opened, clicked or bounced.** The unsubscribe link only works when tracking is on.
5. **Click Send emails**, or click **Schedule** to [pick a date and time up to two weeks ahead](https://yamm.com/help/usage/launch-campaign/schedule-mail-merge/).

![YAMM Start Mail Merge dialog with tracking selected and the Send test email, Schedule and Send 5 emails buttons.](https://yamm.com/images/blog/send-emails-from-google-sheets/yamm-start-mail-merge-dialog-with-the-send-5-emails-button.webp)

YAMM sends to [up to 400 recipients a day from a @gmail.com account, and up to 1,500 from a Google Workspace account](https://yamm.com/help/resources/daily-quota/) (400 while it's in a trial or warm-up period). If your list is longer, send in batches: the next day, start the mail merge again without clearing **Merge status**, and YAMM skips everyone who already got the issue. Gmail has its own limits too; see [Gmail's sending limits](https://yamm.com/blog/gmail-sending-limits/).

## How do you read the results in the sheet?

After the send, the [tracking report](https://yamm.com/help/usage/track-campaign/about-tracking/) opens in the sheet's sidebar, and each row's **Merge status** shows what happened for that person: `EMAIL_SENT`, `EMAIL_OPENED`, `EMAIL_CLICKED`, `RESPONDED`, `BOUNCED` or `UNSUBSCRIBED`. If you close the report, open it again from the **Extensions** menu.

![YAMM Tracking Report beside color-coded delivery, open, click, unsubscribe, and bounce statuses.](https://yamm.com/images/blog/create-newsletter-from-google-sheets/yamm-tracking-report-beside-color-coded-delivery-open-click.webp)

Because the results are in the sheet, you can act on them there, before you clear **Merge status** for the next issue:

- **Fix bounced addresses.** Filter **Merge status** on `BOUNCED` to find addresses that don't work, often a typo in the form. Correct or delete those rows.
- **Answer replies.** Filter on `RESPONDED` to see who wrote back.
- **Compare issues, not people.** [Open tracking can't be exact for every email](https://yamm.com/help/usage/track-campaign/about-tracking/), so use open and click counts to compare one issue with the last.

Turn the filter off before you send the next issue to the whole list.
