If your company lives in spreadsheets—sales over here, expenses over there, the consolidated view someone builds by hand every morning—this is the use case to start with. Connecting n8n to Google Sheets lets you read, write, and update spreadsheets automatically: n8n authenticates against the Google API through an OAuth 2.0 credential, and from there it can build daily reports, consolidate data from multiple sources, and sync forms with your CRM without anyone copying and pasting anything. The initial connection takes 15-20 minutes and it's the step where most people get stuck, so that's where we'll start.
How to set up the Google credentials (the step where everyone gets stuck)
n8n doesn't connect to Sheets with your username and password: it needs an OAuth 2.0 credential created in Google Cloud. Here's the process, no fluff:
- Go to Google Cloud Console with your company's Google account and create a new project (for example, "n8n-automations").
- Enable the API: under "APIs & Services → Library," search for Google Sheets API and click "Enable." If you're going to list files by name, also enable the Google Drive API—forgetting this one is a classic mistake.
- Configure the OAuth consent screen: type "External," app name, your email. You don't need Google verification for internal use.
- Create the credentials: "Credentials → Create credentials → OAuth client ID," type "Web application." Under Authorized redirect URIs, paste exactly the OAuth Redirect URL that n8n shows you when you create the credential (something like
https://your-domain.com/rest/oauth2-credential/callback). - Copy the Client ID and Client Secret into the "Google Sheets OAuth2 API" credential in n8n and click "Sign in with Google" to authorize.
The three errors that trip everyone up
redirect_uri_mismatch: the URI in Google Cloud isn't identical to the one in n8n. One extra slash,httpinstead ofhttps, or you usedlocalhostwhen n8n runs on a domain. Copy and paste, don't type it by hand.- Token that dies after 7 days: if the OAuth app is stuck in "Testing" status, Google revokes the refresh token weekly and the workflow dies one Sunday. The fix: publish the app ("In production") or accept reconnecting every week (don't accept this).
- API not enabled: the 403
accessNotConfigurederror means you skipped step 2.
Alternative for serious self-hosting: instead of OAuth, you can use a Service Account ("Google API" credential in n8n), which doesn't depend on a human user and never expires. You create the service account, download the JSON key, and share the spreadsheet with the service account's email as if it were a person. It's what we use in production for AI automation that can't break just because someone changed their password.
Google Sheets API limits you need to know
The API is free, but it has quotas. The 2026 numbers:
| Limit | Value | What it means in practice |
|---|---|---|
| Reads per minute per project | 300 | Plenty for reports; tight for heavy syncing |
| Writes per minute per project | 300 | Same |
| Requests per minute per user | 60 | The limit you'll hit first |
| Max cells per spreadsheet | 10,000,000 | Far off, but performance degrades well before |
| Cost | USD 0 | The Sheets API isn't billed |
The golden rule: operate in batches, not row by row. n8n's Google Sheets node can add or update hundreds of rows in a single request. A badly built workflow that does an "Append" inside a loop of 200 items burns 200 requests and blows the 60/minute quota; the same flow built properly uses 1. If you hit the 429 Too Many Requests error, add a Wait node or restructure the flow into batches.
Is your team losing hours consolidating spreadsheets by hand? Book a 30-minute call and we'll show you what your report would look like building itself, with your real data.
Workflow 1: daily sales report by email
The first workflow almost every company implements. Complete structure, node by node:
- Schedule Trigger — every day at 7:00 AM.
- Data source — depending on your case: a Postgres/MySQL node if you have a database, an HTTP Request node if your system has an API, or another Google Sheets where the team logs sales.
- Filter — only yesterday's records (
{{ $json.fecha }}equal to yesterday's date). - Code (optional) — calculate totals: daily revenue, number of transactions, average ticket, comparison against the same day last week.
- Google Sheets → Append — dumps the detail into the "History" sheet (one request, all rows).
- Google Sheets → Update — updates the "Dashboard" sheet with the day's totals.
- Gmail / Send Email — sends the summary to the team: "Yesterday's sales: USD 4,230 (+12% vs. last Tuesday), 38 transactions, average ticket USD 111."
Build time: 2-4 hours the first time. Typical savings: 30-45 minutes a day of admin work, around 12-18 hours a month, plus the invisible benefit that the number always arrives, with no typos, even when the person in charge is on vacation.
Workflow 2: form → Sheet → CRM, without overloading anyone
The second classic: every lead that comes in through a form gets logged in a spreadsheet (for reporting) and loaded into the CRM (for management), with a notification to the sales rep.
- Webhook Trigger — your website's form (or a Google Form via Apps Script, or Typeform) POSTs to the webhook URL. If you want to really understand this piece, read what a webhook is in n8n.
- Set / Edit Fields — normalize data: phone with country code, email in lowercase, lead source.
- Google Sheets → Append or Update — uses a key column (email) to avoid duplicates: if the lead already exists, it updates; if not, it adds a row.
- CRM node — HubSpot, Pipedrive, or your own system via HTTP Request. If your CRM is a glorified spreadsheet that's at its breaking point, maybe the underlying problem is solved with a custom CRM.
- IF — did the lead request a quote or is it a general inquiry? Each branch notifies differently.
- WhatsApp / Slack — the sales rep gets the name, the need, and the phone number. First response time: from hours to minutes.
This flow eliminates the double entry (spreadsheet + CRM) that, in companies with 200-400 monthly leads, consumes 15-25 hours a month and creates the typical mismatches of "it's in the spreadsheet, but not in the CRM."
When Google Sheets stops being the right tool
The honest part of the article: Sheets is an excellent entry point, but it has a ceiling.
- Volume: past ~50,000 rows with formulas, the spreadsheet drags and the API slows down. A database (Postgres, even free on a VPS) replaces it without drama, and n8n connects just as easily.
- Concurrency: if 5 processes write to the same sheet at once, you'll get data being overwritten. Sheets isn't transactional.
- Sensitive data: salaries, medical or financial data in a spreadsheet shared with "anyone with the link" is an incident waiting for a date.
- Complex business logic: when the spreadsheet has 14 tabs that reference each other and no one dares to touch it, it's no longer a spreadsheet: it's a system asking to be born as custom software.
Our practical recommendation: use Sheets as a reporting layer (what people look at) and move the raw data to a real database when the volume calls for it. n8n bridges both worlds without the team changing its habits.
Start with one report, not the perfect spreadsheet
Don't try to automate all 14 tabs on day one. Pick one report that someone builds by hand every morning, connect it with Workflow 1 from this guide, and measure the savings. To get inspired about what comes next, check out 25 n8n automation examples ready to copy.
Would you rather we build it with you? At Deepyze we connect n8n with your spreadsheets, your CRM, and your systems—including the ones without an API—for companies across LATAM. Fixed price, a team in your time zone, and a concrete proposal in 24 hours. Tell us which report you'd love to never build again.
Frequently asked questions
How do I connect n8n to Google Sheets?+
You need to create a project in Google Cloud Console, enable the Google Sheets API, configure the OAuth consent screen, and create OAuth 2.0 credentials with the redirect URI that n8n gives you. Then you paste the Client ID and Client Secret into the n8n credential and authorize with your account. It takes 15-20 minutes the first time.
Why does the n8n connection to Google fail?+
90% of failures come down to three things: the redirect URI doesn't match the one n8n expects exactly (including https and the correct domain), the Google Sheets API isn't enabled in the project, or the OAuth app is stuck in 'Testing' mode and the token expires after 7 days. Publishing the app or adding your user as a tester fixes it.
What are the Google Sheets API limits?+
The standard limit is 300 read requests and 300 write requests per minute per project, and 60 per minute per user. For daily reports that's more than enough; the problem appears when a workflow makes one request per row instead of operating in batches.
Can I build an automated sales report with n8n and Sheets?+
Yes: a workflow with a Schedule Trigger reads the day's sales from your database or system, dumps them into a sheet, calculates totals, and sends the summary by email or Slack. It's one of the first workflows most companies implement and you can build it in an afternoon.
Does Google Sheets work as a database for automations?+
Up to a point: it works well as a reporting layer or for small volumes (under ~50,000 rows and few concurrent users). For transactional data, concurrency, or integrity, you're better off with a real database and Sheets as a view.
Want this working in your company?
At Deepyze we turn manual processes into systems that work on their own: AI automation, web and mobile apps, and custom software. Tell us your case and you will have a concrete proposal within 24 hours.
Sin compromiso · Respuesta en 24 hs · Equipo en tu mismo huso horario