Webhook Guides

Send Webhooks to Google Sheets

A webhook to Google Sheets workflow turns incoming HTTP events into spreadsheet rows. It is useful for operations exports, lead capture, order review, QA logs, support handoffs, and lightweight audit trails where a full backend service would be too much.

FastHook receives the provider webhook at a stable source URL, routes accepted events through connection filters, and writes selected payload fields to a GOOGLE_SHEET destination. You can inspect the request, event, destination attempt, response, retry state, and sheet write behavior from the same flow.

Demo Login to Google Sheets example

Open a prepared FastHook demo workspace with a source, connection, and Google Sheet destination.

Best fit

Google Sheets is best when people need to inspect events directly. It is not a queue, database, or high-volume analytics store, so the safest pattern is to filter first and send only rows that humans actually need.

  • Send checkout, signup, lead, order, or form events into a review spreadsheet.
  • Append Stripe payments, GitHub events, Shopify orders, and form submissions as rows.
  • Capture test payloads while an integration is still being built.
  • Fan out one source to both a production API and a spreadsheet audit trail.
  • Map stable columns instead of pasting raw JSON blobs into one cell.

Setup flow

  1. Create a FastHook source and copy the generated Source URL.
  2. Paste that URL into the provider that sends webhook events.
  3. Create a Google Sheet destination and connect Google with OAuth or a service account.
  4. Choose payload fields such as customer.email, order.total, or event.type.
  5. Connect the source to the sheet with filters so only useful events create rows.
  6. Send a test webhook, inspect the FastHook attempt, and confirm the new row appears.

Column mapping pattern

A predictable spreadsheet needs explicit columns. FastHook lets you write dotted paths for the values you want to append, which keeps new provider fields from shifting the shape of the sheet.

Google Sheet columns
customer.email
customer.name
order.id
order.total
order.currency
event.type

Create the destination

Use OAuth for a quick dashboard setup, or a service account for production automation. Service accounts need edit access to the target spreadsheet before rows can be appended.

Create Google Sheet destination
curl -X POST "https://api.fasthook.io/v1/destinations" \
  -H "Authorization: Bearer fhp_xxx" \
  -H "x-team-id: tm_3b5335b627084a838b" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "Orders to Google Sheets",
    "type": "GOOGLE_SHEET",
    "config": {
      "spreadsheet_id": "1xcIMwZ...",
      "sheet_name": "Orders",
      "columns": ["customer.email", "order.id", "order.total", "event.type"],
      "include_metadata": false,
      "auth_type": "GOOGLE_OAUTH_REFRESH_TOKEN",
      "auth": {
        "client_id": "google-client-id",
        "client_secret": "google-client-secret",
        "refresh_token": "google-refresh-token"
      }
    }
  }'

Debugging checklist

  • If no row appears, confirm the provider request was accepted by the source.
  • If the row is blank, compare column paths with the captured payload shape.
  • If Google returns 403, check spreadsheet sharing and OAuth or service account permissions.
  • If there are too many rows, add connection filters before the Google Sheet destination.
  • If a write fails temporarily, fix the destination and retry the failed FastHook event.

When Google Sheets is temporarily unavailable

Google Sheets is a human-friendly destination, not an always-on queue. API limits, permissions, OAuth refresh problems, and temporary Google errors can prevent a row from being appended.

FastHook keeps the request, event, and destination attempt logs so you can see whether the provider sent the webhook, whether the sheet write was attempted, and which response came back from Google.

  • Retry transient Google API failures after the destination recovers.
  • Replay missed webhook events only after confirming the sheet did not already receive the row.
  • Use stable object ids in columns so operators can spot duplicate rows.
  • Filter high-volume events before the Google Sheet destination.

Google Sheets destination limits

Google Sheets is useful for lightweight operations, QA, support, lead review, and finance handoffs. For high-volume event streams, long retention, or strict transactional guarantees, send the same webhook to an internal API or archive destination as well.

Related guides