n8n + Google Sheets: The Complete Guide
Read, write, append, and upsert Google Sheets in n8n. Includes batching, rate limits, and OAuth setup that doesn't expire.
Key takeaways
- Use OAuth2 with your own Google Cloud project for production — shared credentials hit quotas.
- Batch writes with Append/Update vs row-by-row to avoid quota burn.
- Use the document ID, not the URL, in workflow references.
- Set 'Append or Update Row' with a key column for safe upserts.
Google Sheets is the universal back-end for non-technical operators. n8n's Sheets node is one of the most polished in the catalog, but a few gotchas — auth, rate limits, batching — trip up nearly every new user.
OAuth setup that lasts
Create a Google Cloud project, enable Sheets and Drive APIs, configure an OAuth consent screen with your domain, create an OAuth Client ID, and paste credentials into n8n. Shared/demo credentials work for testing but will run into quotas and expiry in production.
Append vs Update vs Upsert
Append: blind add to the end. Update: change matching rows. Append or Update: upsert by key — the most powerful and least understood mode. Pick a column to dedupe on (often an ID) and n8n updates if found, appends if not.
Rate limits
Google Sheets API allows 60 read and 60 write requests per minute per user. Batch your writes (the node accepts arrays). For very high volume, mirror Sheets into Postgres and only sync periodically.
Frequently asked questions
- Can n8n trigger on a Sheets row change?
- Yes via the Google Sheets Trigger node, which polls on a schedule.
- Why are my writes silently failing?
- Usually quota or permission. Check the Google Cloud console for 429 errors and verify the OAuth user has edit access to the sheet.