Save webhook payload fields to Google Sheets

This recipe accepts an HTTP webhook and appends selected payload fields as one spreadsheet row.

Text
Webhook Source → Google Sheets: Append Values

Before you begin

Example payload:

JSON
{
  "id": "evt_test_123",
  "customer": { "name": "Ada" },
  "amount": 149,
  "currency": "USD"
}

1. Create the Webhook Trigger

  1. Create a Workflow and choose a generic Webhook Source as its Trigger.
  2. Copy the Source URL.
  3. Send the example request with Content-Type: application/json.
  4. Confirm that the Trigger preview exposes the expected body fields.

Use the real preview as the mapping contract. Do not assume another sender or content type produces the same shape.

2. Add the Google Sheets Action

  1. Add Google Sheets → Append Values.
  2. Select the connected Google account and spreadsheet.
  3. Select the worksheet.
  4. Set Range to the columns used by the table, for example A:D.
  5. Keep Insert data option as INSERT_ROWS unless overwriting is intentional.

The Action requires a two-dimensional JSON array. Each inner array becomes one row.

JSON
[
  [
    "{{trigger.body.id}}",
    "{{trigger.body.customer.name}}",
    "{{trigger.body.amount}}",
    "{{trigger.body.currency}}"
  ]
]

Select the values with the field picker. The exact path to the request body depends on the Trigger preview shown by the current Source.

3. Activate and verify

Activate the Workflow and send one new webhook. In Audit, confirm that the Append Values input contains one outer array and one row array. Then confirm that exactly one new row appears in Google Sheets.

Prevent duplicate rows

Webhook senders and Workflow Actions can retry. Store a stable event ID in the sheet and make downstream processing idempotent. For strict uniqueness, add a lookup or external datastore check before appending; the spreadsheet append operation alone is not a deduplication lock.

Troubleshooting

See Data mapping, Google Sheets integration, and Runs and errors.