This article contains affiliate links. If you buy through them, we may earn a commission at no extra cost to you.
Netlify + n8n: Auto-Deploy Static Websites from a Google Sheets Trigger
If you manage static websites — landing pages, documentation sites, or content microsites — you know the friction: someone updates a spreadsheet, and then someone else has to remember to trigger a new deploy. With n8n, you can eliminate that manual step entirely. n8n is an open-source workflow automation tool with 400+ integrations that you can self-host for free or run on n8n Cloud, making it ideal for connecting Google Sheets directly to Netlify's deploy pipeline.
This guide walks you through building an n8n workflow that watches a Google Sheet for changes and automatically fires a Netlify build hook whenever content is updated. No custom code required on the Netlify side — just a clean automation chain.
What You Need Before You Start
- An n8n instance — self-hosted or on n8n Cloud
- A Netlify account — with your static site already connected to a Git repository
- A Google Sheets document — structured with your content or configuration data
- A Netlify Build Hook URL — generated in your Netlify site settings
Step 1: Create a Netlify Build Hook
Log into Netlify and navigate to your site's settings. Under Build & Deploy → Build hooks, click Add build hook. Give it a descriptive name like n8n-sheets-trigger and choose the branch to deploy (usually main). Netlify will generate a unique webhook URL — copy it. This URL, when called with a POST request, instantly triggers a new build and deploy of your site.
Step 2: Set Up Your Google Sheet
Structure your sheet so that one column acts as a status flag — for example, a column called Deploy with values like ready or pending. Your n8n workflow will poll this column and act when a row switches to ready. You can also use a Last Modified timestamp column to catch any row-level change.
Step 3: Build the n8n Workflow
Node 1 — Google Sheets Trigger (Poll)
In n8n, add a Schedule Trigger node set to run every 5 or 15 minutes. Connect it to a Google Sheets node set to Read Rows. Authenticate with your Google account and point the node to your spreadsheet and the correct sheet tab. Filter the results using an IF node to check whether the Deploy column equals ready.
Node 2 — IF Condition
Configure the IF node to pass rows forward only when the Deploy field contains the value ready. Rows with pending or any other value fall through the false branch and are ignored.
Node 3 — HTTP Request (Netlify Build Hook)
Add an HTTP Request node. Set the method to POST and paste your Netlify build hook URL into the URL field. No body or headers are required — Netlify only needs the POST signal. This single node triggers a full site rebuild and deploy.
Node 4 — Update Google Sheets (Mark as Deployed)
After the deploy is triggered, use another Google Sheets node set to Update Row. Write back a value like deployed into the Deploy column of the matching row. This prevents the workflow from re-triggering the same deploy on the next poll cycle.
Step 4: Test the Workflow
Set one row's Deploy column to ready, then manually execute the workflow in n8n. Watch the execution log — each node should show a green success state. Switch to your Netlify dashboard and confirm that a new deploy has started. Once it completes, return to your sheet and verify that the row now shows deployed.
Optional Enhancements
- Slack or email notification — Add a Slack or Gmail node after the HTTP Request to alert your team when a deploy starts.
- Multi-site support — Add a column for the build hook URL so different rows can trigger deploys on different Netlify sites.
- Error handling — Use n8n's Error Trigger workflow to catch failed HTTP requests and notify a fallback channel.
- Webhook trigger instead of polling — If your Google Sheet is updated by a form or another automation, expose an n8n Webhook node as the entry point and remove the Schedule Trigger entirely for real-time response.
Why This Pattern Works
Static site generators like Hugo, Eleventy, or Astro are fast and cheap to host, but their deploy cycle is often the bottleneck for non-technical team members. By placing a Google Sheet between your team and Netlify, you give editors a familiar interface while the automation handles the technical steps. No one needs to touch a Git repository or a CI/CD panel.
This same pattern scales further: you can trigger deploys when a row is added by a form submission, when a Notion database status changes (via another n8n node), or on a content publication schedule managed entirely inside a spreadsheet.
Cost and Hosting Considerations
Both n8n Cloud's starter tier and Netlify's free plan are sufficient to run this workflow at low-to-medium frequency. If you self-host n8n on a VPS, your only cost is the server. Netlify's free plan includes 300 build minutes per month, which comfortably covers dozens of automated deploys.
If you want to build and run this automated deploy workflow without writing server-side code, you can get it running via n8n — including 400+ integrations and a free self-hosting option — to connect your Google Sheets content pipeline directly to Netlify and ship updates on autopilot.