How to Connect N8N to Google Sheets: Step-by-Step Tutorial (2026)
Google Sheets is the most common starting point for small business automation. It is where your leads live, where your team tracks orders, and where your reports get built every Monday morning. Connecting N8N to Google Sheets lets you read, write, and update that data automatically. This tutorial walks you through the full setup, from credentials to working workflows.
Why Google Sheets + N8N Is the Most Popular SMB Integration
Almost every small business runs on spreadsheets. Google Sheets is free, collaborative, and familiar. But manually copying data between Sheets and your other tools wastes hours every week.
The N8N Google Sheets integration solves this. You can pull data from Sheets into any workflow, push results back, and keep everything in sync without touching a keyboard. It is the single most-used node in N8N for small business users, and for good reason.
Unlike Zapier, where every row read or written counts against your task quota, self-hosted N8N lets you process thousands of rows at zero marginal cost. That matters when you are syncing inventory, processing leads, or generating reports from multiple sheets daily.
Prerequisites
Before you start, make sure you have these three things ready:
- A running N8N instance. Self-hosted or N8N Cloud, either works. If you have not set up N8N yet, follow our guide to building your first N8N workflow.
- A Google account. Any Gmail or Google Workspace account will do.
- Google Sheets API enabled. Go to the Google Cloud Console, search for "Google Sheets API," and click Enable. This takes about 30 seconds.
You will also need to enable the Google Drive API in the same console. N8N uses it to locate and access your spreadsheet files.
Step 1: Set Up Google Sheets Credentials in N8N
N8N connects to Google Sheets using OAuth2. Here is how to set it up.
Create OAuth2 Credentials in Google Cloud
- Go to the Google Cloud Console Credentials page.
- Click Create Credentials and select OAuth client ID.
- Choose Web application as the application type.
- Under Authorized redirect URIs, add your N8N OAuth callback URL. For self-hosted instances, this is typically
https://your-n8n-domain.com/rest/oauth2-credential/callback. For N8N Cloud, use the callback URL shown in N8N's credential creation screen. - Click Create. Copy the Client ID and Client Secret.
Add the Credentials in N8N
- In N8N, go to Credentials in the left sidebar.
- Click Add Credential and search for Google Sheets OAuth2 API.
- Paste your Client ID and Client Secret.
- Click Sign in with Google. Authorize access to your Google account.
- The credential status should change to Connected. You are done.
Tip: If you are on N8N Cloud, there is an even faster option. Select the built-in "Google Sheets account" credential type, which uses N8N's own OAuth app. One click and you are connected. No Google Cloud Console needed.
Step 2: Read Data from Google Sheets
The most common operation is reading rows from a sheet. Here is how to set it up.
- Add a Google Sheets node to your workflow.
- Select your Google Sheets credential.
- Set Operation to Read Rows.
- Under Document, select the spreadsheet by name or paste its URL.
- Choose the specific Sheet (tab) you want to read from.
- Click Execute Node to test. N8N pulls in all rows as JSON objects, using your header row as the field names.
Filtering Rows
You do not always want every row. Use these options to narrow things down:
- Range: Specify a cell range like
A2:D100to skip headers or limit the data. - Filters: After reading, add an IF node to filter rows based on column values. For example, only process rows where the "Status" column equals "New."
- Key Row (Header): Tell N8N which row contains your column headers. This is usually row 1, but some sheets have headers on row 2 or 3.
Once the data is in N8N, you can send it anywhere: your CRM, email tool, Slack, a database, or another Google Sheet.
Step 3: Write Data to Google Sheets
Writing data means appending new rows to the bottom of your sheet. This is how most lead generation workflows work: a new lead comes in, and N8N writes it to your tracking sheet.
- Add a Google Sheets node.
- Set Operation to Append Row.
- Select your spreadsheet and sheet tab.
- Under Columns, map the incoming data fields to your sheet columns. If your sheet has columns "Name," "Email," and "Phone," map those fields from the previous node's output.
- Execute the node. N8N adds a new row at the bottom of your sheet with the mapped values.
Writing Multiple Rows
If the previous node outputs multiple items (for example, 50 leads from an API call), N8N writes all 50 rows in a single batch. You do not need a loop. The Google Sheets node handles multiple items natively, which also reduces API calls and helps you stay within rate limits.
Column mapping tip: Make sure the column names in N8N exactly match your sheet headers. "First Name" and "first_name" are not the same. If your data uses different field names, add a Set node before the Google Sheets node to rename fields.
Step 4: Update Existing Rows
Updating is more nuanced than reading or writing. You need to tell N8N which row to update and what values to change.
- Add a Google Sheets node.
- Set Operation to Update Row.
- Select your spreadsheet and sheet tab.
- Set a Matching Column. This is the column N8N uses to find the right row. For example, if each row has a unique "Order ID," set that as the matching column.
- Map the fields you want to update. Only the fields you map will change. Other columns stay untouched.
This is useful for workflows where the status of something changes over time. A lead moves from "New" to "Contacted." An invoice moves from "Pending" to "Paid." An order moves from "Processing" to "Shipped."
You can combine read and update in the same workflow. Read all rows with status "Pending," process them (send an email, check a payment API, whatever the logic is), then update each row with the new status.
5 Real Business Automations Using N8N + Google Sheets
Here are five workflows we have built for clients using the N8N Google Sheets integration. Each one replaces hours of manual work per week.
1. Lead Capture Form to Google Sheets to CRM
A web form captures lead information. N8N receives the submission via webhook, writes it to a Google Sheet for the sales team's visibility, then creates a contact in the CRM (HubSpot, Pipedrive, or whatever you use). The sheet becomes a real-time dashboard of incoming leads. The CRM gets the structured data it needs for follow-up sequences.
Total setup time: about 30 minutes. See our full lead generation automation guide.
2. Daily Report Generation from Multiple Sheets
A retail client had sales data in three separate Google Sheets (one per store location). Every morning, a manager spent 45 minutes merging them into a summary report. We built an N8N workflow that runs at 7 AM daily. It reads from all three sheets, aggregates the numbers in a Code node, and writes the summary to a "Daily Report" sheet. The manager now opens one sheet and the report is already there.
3. Invoice Tracking with Automated Status Updates
A services company tracked invoices in Google Sheets with columns for client name, amount, due date, and status. N8N checks the sheet every hour. For invoices marked "Sent" that are past due, it sends a reminder email to the client and updates the status to "Reminded." For invoices past 30 days, it flags them as "Overdue" and notifies the finance team on Slack.
4. Customer Feedback Collection and Categorization
Customer support emails get processed by an AI node in N8N. The workflow extracts the sentiment (positive, neutral, negative) and the topic (billing, product, shipping, other). It writes each piece of feedback to a Google Sheet with the original message, sentiment, topic, and timestamp. The product team filters the sheet to see all negative feedback about a specific topic without reading every email.
5. Inventory Monitoring with Low-Stock Alerts
An e-commerce client tracked inventory in Google Sheets. N8N reads the sheet every 4 hours and checks each product's stock level against its reorder threshold. When stock drops below the threshold, N8N sends a Slack alert to the operations team and creates a draft purchase order in another sheet. This replaced a manual process that used to cause stockouts 2 to 3 times per month.
Common Errors and How to Fix Them
These are the issues we see most often when setting up the N8N Google Sheets integration.
Authentication Errors
- "Access denied" or "Insufficient permissions": Your OAuth2 credential does not have the right scopes. Delete the credential in N8N, recreate it, and make sure you approve all the permissions Google asks for during the sign-in flow.
- "Token has been expired or revoked": Google OAuth tokens expire. Go to the credential in N8N and click Sign in with Google again to refresh the token.
- "This app is not verified": If you created your own OAuth app in Google Cloud Console, it shows a warning screen. Click "Advanced" and then "Go to [your app]" to proceed. For production use, submit your app for Google verification.
Rate Limit Errors
- "Rate limit exceeded": Google Sheets allows 300 read requests and 300 write requests per minute per project. If your workflow processes hundreds of rows in a loop, add a Wait node (1 to 2 seconds) between iterations. Better yet, batch your operations so you read or write all rows in a single request.
- Quota exceeded for the day: The daily limit is generous (typically millions of reads), but if you hit it, wait 24 hours or create a second Google Cloud project with its own credentials.
Column Mapping Issues
- Data lands in the wrong columns: Check that your column headers in the sheet exactly match the field names in your N8N mapping. Trailing spaces in headers are a common culprit.
- Empty rows appearing: This usually happens when the incoming data has empty items. Add an IF node before the Google Sheets node to filter out items where required fields are blank.
- "Range not found": The sheet name or range you specified does not exist. Double-check the sheet tab name (it is case-sensitive) and make sure the range is valid.
Frequently Asked Questions
Is the N8N Google Sheets integration free?
Yes. The Google Sheets node is included in N8N's free self-hosted version with no limits on how many times you use it. You do not need a paid plan. The only requirement is a Google account with the Sheets API enabled, which is also free for standard usage within Google's API quotas.
How do I handle Google Sheets API rate limits in N8N?
Google Sheets allows 300 requests per minute per project by default. If your workflow processes large batches, add a Wait node between operations to space out requests. You can also use the Append operation to write multiple rows at once instead of one row per request. This reduces API calls significantly. For very high-volume use cases, consider batching data with the Code node before writing to Sheets.
Can N8N trigger a workflow when a Google Sheet is updated?
N8N does not have a native real-time trigger for Google Sheets changes. Instead, use the Schedule Trigger node to poll your sheet at regular intervals (every 1, 5, or 15 minutes). The workflow checks for new or modified rows and processes only the changes. For true real-time triggers, you can set up a Google Apps Script that sends a webhook to your N8N instance whenever a sheet is edited.
Need help building your Google Sheets automation?
Book a free 30-minute call. We will map out your workflow, set up the integration, and get it running in days, not weeks.
Book Your Free Call