Send Webhook Data to Google Sheets
Give any service a URL, connect your Google account once, and watch requests turn into spreadsheet rows.
Quick Answer
To send webhook data to Google Sheets: (1) create a free webhook URL at requex.me; (2) open Settings → Connectors and connect your Google account; (3) pick or create a spreadsheet; (4) map each column to a field, like {{body.email}}. Every request that hits the URL from then on appends a row. No Zapier, no task quota, no code.
A spreadsheet is where most webhook data actually wants to end up. Not a database, not a dashboard — a sheet someone can filter, chart, and send to a colleague who will never log into your admin panel. The problem has always been the gap between the two: webhooks speak JSON over HTTP, and Sheets speaks rows and columns. Bridging that normally means a Zapier task counter or fifty lines of Apps Script that breaks the first time a payload changes shape.
Requex closes the gap directly. Your webhook URL is already capturing every request; a connector takes those same requests and appends them to a tab you choose, using a field map you control.
How it works
1. Create the webhook URL
Open requex.me and a URL is generated immediately — no signup needed to test. Paste it into whatever is going to send you data: a payment provider, a form builder, a CI pipeline, a cron job, your own backend.
2. Connect Google once
In Settings → Connectors, click Connect Google. You are sent to Google's own consent screen, and the permission requested is drive.file — per-file access. Requex can only ever read or write the specific spreadsheets you hand it through the file picker. It cannot list, open, or touch anything else in your Drive, which is a meaningfully narrower grant than most integrations ask for.
One connection covers everything on your account. Connect once, and every webhook and every workflow node can point at it.
3. Map fields to columns
Pick a spreadsheet — create a fresh one, or choose an existing one through Google's picker — then say which column gets which value:
Received at → {{timestamp}}
Method → {{method}}
Customer → {{body.customer.email}}
Amount → {{body.amount_total}}
Source → {{headers.user-agent}}Templates reach into the body by dot path, and into query parameters and headers the same way. Literal text mixes in freely — order {{body.id}} renders as order 8814.
4. Requests become rows
From then on, every delivery appends a row. The request is still captured and inspectable in Requex as usual — the sheet is a copy, not a redirect, so you keep the full payload viewer for debugging.
Rows are matched by column name, not position
This is the detail that decides whether a spreadsheet integration survives contact with real users. People reorder columns. They insert a “Notes” column in the middle. They rename “Amount” to “Amount (USD)”. An integration that appends values in the order the field map was defined will, from that moment on, silently write every value into the wrong column — and nothing warns you, because appending a row always succeeds.
Requex reads the sheet's live header row on every single delivery and aligns values to it by name. Reorder your columns and the data still lands correctly. Insert your own column and it is left empty rather than overwritten. Delete a mapped column and that value is dropped instead of shifting everything one cell to the left.
What people build with it
- Payment logs — every successful charge, refund, and failed payment in one sheet finance can pivot on.
- Order exports — orders landing in a sheet the fulfilment team already lives in.
- Lead capture — form submissions collected without wiring up a database.
- Deploy and CI history — a row per build, so “when did this start failing” is a filter rather than an archaeology project.
- IoT and device pings — sensor readings accumulating in a sheet you can chart with two clicks.
Limits worth knowing
Delivery is fire-and-forget: the request is saved and answered first, then copied to the sheet. A broken destination can never slow down or fail the response your sender is waiting on. The trade-off is that there is no retry queue — if Google rejects a write, the connector records the error and the Connectors tab shows it in red. Check there first if rows stop appearing.
Google Sheets itself caps out around 10 million cells per spreadsheet, and the Sheets API allows 300 write requests per minute per project. For a high-volume firehose, write to a database and aggregate into Sheets on a schedule instead.
Related
- Free webhook tester — inspect the payload before you map it
- Zapier alternative for Google Sheets
- Complete guide to webhook testing
Start Testing Webhooks Now
Generate your unique URL and test webhooks instantly. Free, no signup.
Open Webhook Tester →