Shopify Ecom

Can you use Google Sheets as a Shopify webhook URL?

Published ·
At a glance
Short answer
Not directly: route it through a connector that writes the row — Zapier (paid plans), Make or n8n — or a Google Apps Script web app you test first.
Zapier's webhook trigger
Webhooks by Zapier isn't available on Zapier's Free plan.
Apps Script replies
A TextOutput reply from Apps Script is a redirect, not a 200; test that the admin webhook survives.
A receiver that keeps failing
Repeated non-200 responses get the admin webhook subscription deleted automatically.
Flow's own Sheets action
On Basic, Grow, Advanced or Plus, Flow's Add row to spreadsheet action writes the row without a webhook URL.
Flow's Send HTTP request
Send HTTP request needs Shopify Plus, Advanced or Grow; it counts 2XX or 3XX as success.
Self-hosted n8n
Shopify lists localhost among the URLs webhooks can't be returned to.

What a Shopify webhook needs at the other end

An admin webhook is created under Settings > Notifications > Webhooks: you pick an event, a format (JSON or XML) and a URL. The Help Center tells you to enter the URL "where you want data to be stored", which is why a spreadsheet link looks like the right answer. Shopify then sends the event's data to that address, so something there has to take the request.

None of the Google pages we read describes a spreadsheet taking an incoming webhook by itself (boundaries at the end of this page). Google calls the Sheets API "a RESTful interface that lets you read and modify a spreadsheet's data" — a way for code to work with the sheet. An Apps Script web app can accept an incoming request through its doPost function, so the sheet sits at the end of the route, behind a go-between.

The no-code route: a connector that writes the row

Zapier documents both halves. A Zap with a webhook trigger gets "a brand new URL for your use" from Webhooks by Zapier; you paste it into Shopify's URL field, and it triggers on a POST, PUT or GET request. The Google Sheets action Create Spreadsheet Row adds the row, and Create Multiple Spreadsheet Rows handles line items.

Webhooks by Zapier isn't available on Zapier's Free plan — only on Professional, Team and Enterprise.

Make and n8n cover both halves too. Make's custom webhooks "allow you to create a URL to which you can send any data", and its Google Sheets module has an Add a Row action that "Appends a new row to the bottom of the table." n8n's Webhook node can "receive data from apps and services when an event occurs", and its built-in Google Sheets node has an Append Row operation that creates a new row.

Which connector fits your store, and what each bills you per run, is covered in our comparison of Flow, Zapier, Make and n8n. If you self-host n8n, keep it off your own machine's address: Shopify lists localhost among the URLs webhooks can't be returned to.

The build-it route: a Google Apps Script web app

If you would rather write a little code than add another service, deploy an Apps Script project as a web app. It gets its own URL, and Google's guide describes what runs when a request arrives:

When a program sends the app an HTTP POST request, Apps Script runs doPost instead.
Google for Developers — Apps Script — Web apps guide, read September 25, 2026 ·

The request body reaches the function through its e parameter, in e.postData.contents, and doPost has to return an HtmlOutput or TextOutput object. Writing the row is a separate step with Apps Script's spreadsheet service; none of the Apps Script guides we read, listed at the end of this page, pairs doPost with SpreadsheetApp.appendRow, so expect to combine the web apps guide with Apps Script's Sheets guide.

Choose Execute the app as me so the script writes as you, and open access to anyone, signed in or not. Google's deployment reference calls that access level ANYONE_ANONYMOUS, "Any user, logged in or not" — the only one of its access levels that doesn't require a login; the level named ANYONE means "Any logged in user".

Then test before you rely on it. Google says content returned by its Content service "is redirected to a one-time URL at script.googleusercontent.com", so a TextOutput reply is a redirect, not a 200. For app webhooks, Shopify's developer docs treat "any response outside the 200 range, including 3XX codes" as an error.

The admin webhook page we read says nothing about redirects, but it does say a destination that repeatedly returns a non-200 status gets the subscription automatically deleted. Place a test order, then check that the row appeared, then look for the webhook again after later orders — Shopify removes a failing webhook without an email.

Does Shopify Flow change the answer?

It adds a route with no webhook at all. Flow's Add row to spreadsheet action "adds a single row of data to a Google Sheets spreadsheet": Flow calls the Google Sheets API itself. You connect Flow to a Google account with edit access to the sheet first, and the action works with any trigger. Flow itself is a free app on the Basic, Grow, Advanced and Plus plans.

Flow's Send HTTP request action changes the sender, not the receiver: its URL field is simply "The URL of the server to which the HTTP request is sent.", so the other end is still a connector trigger or an Apps Script web app. Send HTTP request is only available on the Shopify Plus, Advanced or Grow plans.

What Send HTTP request does change is the success rule. Flow marks a request as a success on a 2XX or 3XX response; on 4XX, 5XX and 429 errors it does what you configured — retry for up to 24 hours, fail the run, or ignore the error.

Set beside the redirect above, the Send HTTP request page doesn't say whether Flow follows a redirect. Whether a Send HTTP request wrote the row is still yours to confirm, and a failed request shows up in Flow's run log, where you can retry the run.

What we looked for and did not find
Read on September 25, 2026. A spreadsheet receiving a webhook by itself: Google's Sheets API concepts, values and authorizing guides, the Apps Script web apps and quotas pages, and the Google Sheets product page. One page pairing doPost with appendRow: the Apps Script Sheets, web apps and triggers guides, and the Apps Script product page. Redirects: Shopify's Help Center pages on admin webhooks and Flow's Send HTTP request.
About This Article

This article was written entirely by AI under human editorial direction. The editor sets the topic and structure, runs multi-stage validation on facts, links, and interactive elements, and verifies the output is useful from a business perspective. All claims are checked against official Shopify sources. Details may change — always confirm critical data at shopify.com.

Editorial Policy

Related questions

Apps, channels & AI
What is the difference between Zap history and Autoreplay in Zapier?

Zap history is the run log that shows each run's status; autoreplay, which replays errors automatically, needs a paid plan.

September 23, 2026

Orders & customers
Can a Shopify Forms notification go to more than one person?

Not in the Forms app itself — Shopify documents a Shopify Flow automation as the route to several email addresses.

August 30, 2026

Shipping & fulfillment
Why can't I buy a shipping label on Shopify?

Shopify's billing page names an unpaid label bill; location eligibility, duties without a DDP carrier and verification holds also block labels.

August 27, 2026

Stay updated

Get notified about new articles

Subscribe to receive updates when we publish new Shopify guides and insights.