Automating Google Sheets and Gmail
Google Sheets and Gmail are the most-used app nodes in n8n — every company has them and neither needs a technical team.
The Google Sheets node has operations at the document and sheet level. The ones you use most:
- Append Row — adds a new row
- Append or Update Row — updates the row if it exists, otherwise appends it (an upsert)
- Get Row(s) — reads rows from a sheet
- Update Row — updates an existing row
- Clear — empties the sheet
Append or Update Row is the most valuable operation: it makes a workflow idempotent, so running it twice does not create duplicates.
The Gmail node works at the message, thread, draft and label level. The operations you need most in practice: Send, Reply, Get Many, Add Label and Mark as Read.
Working with labels is the unsung hero of email automation. Labelling a processed message, or marking it read, prevents the same message being processed twice — the fix for the most common problem in email-driven workflows.
The Gmail Trigger starts a workflow when mail arrives. Always filter it: by subject, sender or label. An unfiltered trigger reacts to the entire mailbox — quiet in testing, hundreds of pointless executions in production.
| Scenario | Node chain | The key nuance |
|---|---|---|
| Website form leads into a sheet | Webhook → Edit Fields → Google Sheets (Append or Update Row) | Use the email column as the key so the same person is not written twice |
| Emailing a daily report | Schedule → Postgres → Convert to File (XLSX) → Gmail (Send) | Do not send when the result is empty — check with an IF |
| Processing incoming CVs | Gmail Trigger → Extract From File (PDF) → AI → Google Sheets | Add a label after processing so the message is not reprocessed |
| Emailing based on rows in a sheet | Schedule → Google Sheets (Get Rows) → Filter → Gmail (Send) → Sheets (Update Row) | Mark the row "sent" afterwards — that is what prevents repeats |
| First-line replies to support email | Gmail Trigger → AI Agent → Gmail (Reply) → Gmail (Add Label) | A human approval before the automatic reply is safer |
Google Sheets is convenient but it is not a database. With high volume, concurrent writes or fast lookups it becomes the bottleneck. In those cases move to n8n's Data Table feature or a real database. A sheet is for reports people read; a database is for data systems work with.
📚 Sources and documentation
- Google Sheets nodeofficialdocs.n8n.io
The official list of every operation.
- Gmail nodeofficialdocs.n8n.io
- Google Sheets — common issuesofficialdocs.n8n.io