# What is an upsert?

> An upsert updates a record if it already exists and adds it if it does not, matched on a field like email. How Append or Update Row does it in n8n.

Source: https://learn.ynteractive.com/content/glossary/upsert · Updated 2026-10-20 · Free from Stepthrough (https://learn.ynteractive.com)

[Data, Sheets and Gmail](https://learn.ynteractive.com/content/glossary#topic-data-sheets-and-gmail) · [AI glossary](https://learn.ynteractive.com/content/glossary)

Quick answer

An upsert, short for update or insert, is a single action that looks for a matching record and updates it if found, or adds a new record if not. The match is made on a field you choose, such as an email or an order number. In n8n's Google Sheets node it is called Append or Update Row.

Last updated October 20, 2026

[Take the free module →](https://learn.ynteractive.com/courses/n8n-jump-start/12)Module 12 of the free [n8n Jump Start](https://learn.ynteractive.com/courses/n8n-jump-start) course, about 12 minutes. No account needed.

Updated October 20, 2026 · By [Robert Breen](https://learn.ynteractive.com/content/about)

## Why it matters for a small business

Plain "add row" steps create duplicates as soon as the same person shows up twice, which happens with repeat form submissions, retries and re-runs. Plain "update" steps fail for anyone new. An upsert handles both cases in one step, so the sheet or CRM always holds one up-to-date record per person.

It is the easiest way to make a write step safe to repeat, the idea called [idempotency](https://learn.ynteractive.com/content/glossary/idempotency). The only decision is the matching field: it must be unique and consistent, so an email works well and a name does not.

Where you'll use it: in n8n's Google Sheets node choose **Append or Update Row** and set **Column to match on**. Many CRM and database apps in n8n, Make and Zapier offer the same thing as Create or Update, or Find or Create, actions.

## In a real lesson: n8n: Read, Add and Update Google Sheets Rows with an AI Step

In the free [n8n Read, Add and Update Google Sheets lesson](https://learn.ynteractive.com/content/n8n-google-sheets-read-append-update), Northgate Content Studio's request sheet has the columns Name, Email, Topic, Submitted and Description. You open **Append or Update Row** and pick **Email** as the column to match on.

The lesson spells out what that does: n8n looks for the email first. If it finds it, it updates that row; if not, it adds a new one, so running twice can never duplicate Jordan Lee. Later the AI step's sentences are written back into each matching row.

[Try this lesson free](https://learn.ynteractive.com/modules/n8n-google-sheets-read-append-update) or [read the step-by-step guide](https://learn.ynteractive.com/content/n8n-google-sheets-read-append-update).

## Common confusions

### Upsert vs append row

[Append row](https://learn.ynteractive.com/content/glossary/append-row) always adds a new line at the bottom. An upsert checks first and only adds when there is no match.

### Upsert vs remove duplicates

[Removing duplicates](https://learn.ynteractive.com/content/glossary/remove-duplicates) drops repeated items before a step. An upsert makes the write step itself avoid doubles.

## Tips

- Match on a field that never changes, such as an email or an ID.
- Keep the matching column's values clean, without stray spaces.
- Run the workflow twice in testing and check the row count.

## Related terms

[Append row](https://learn.ynteractive.com/content/glossary/append-row) · [Google Sheets (as an automation database)](https://learn.ynteractive.com/content/glossary/google-sheets) · [Idempotency](https://learn.ynteractive.com/content/glossary/idempotency) · [Remove duplicates (deduplication)](https://learn.ynteractive.com/content/glossary/remove-duplicates) · [Field mapping](https://learn.ynteractive.com/content/glossary/field-mapping) · [Get rows (reading a sheet)](https://learn.ynteractive.com/content/glossary/get-rows)

## More Data, Sheets and Gmail terms

[Web scraping](https://learn.ynteractive.com/content/glossary/web-scraping) · [Zapier Tables](https://learn.ynteractive.com/content/glossary/zapier-tables) · [AI data entry](https://learn.ynteractive.com/content/glossary/ai-data-entry) · [CSV](https://learn.ynteractive.com/content/glossary/csv)

## Where you use it: free lessons

- [n8n: Read, Add and Update Google Sheets Rows with an AI Step](https://learn.ynteractive.com/content/n8n-google-sheets-read-append-update) (n8n, 12 min)
- [n8n: Send Form Answers Straight to Google Sheets](https://learn.ynteractive.com/content/n8n-form-to-google-sheets) (n8n, 10 min)
- [n8n: Turn Meeting Notes into Action Items in a Google Sheet](https://learn.ynteractive.com/content/meeting-notes-to-action-items-google-sheets-ai-n8n) (n8n, 15 min)
- [Meeting to Action: Recap, Tracker Rows and a Kickoff Deck (ChatGPT, n8n, Gamma)](https://learn.ynteractive.com/content/meeting-notes-to-action-items-sheet-and-deck-chatgpt-n8n-gamma) (n8n, 14 min)

## Frequently asked questions

**What does upsert stand for?**

It joins update and insert: update the record if it exists, insert it if it does not.

**What if two rows have the same email?**

The tool usually updates the first match it finds, so remove existing duplicates before relying on an upsert.

[All AI glossary terms, A to Z](https://learn.ynteractive.com/content/glossary) · [Free prompt templates](https://learn.ynteractive.com/content/prompts)
