Destination type
Google Sheet Destination
Use Google Sheet destinations to append routed webhook events into a spreadsheet for operations, lightweight audits, manual review, support workflows, or handoff to non-engineering teams.
When to use this destination type
Choose GOOGLE_SHEET when the receiver target is Google Sheets append row API. Destinations are outbound delivery targets: they do not decide whether a source request should be accepted, and they do not own connection filters or transformations. They own where the final delivery goes and how FastHook should authenticate, pace, disable, and inspect that delivery.
A destination can be reused by multiple connections when several source branches should feed the same receiver. Reuse keeps receiver capacity, credentials, and attempt evidence attached to one destination id.
FastHook dashboard fields
In the dashboard, create a destination, set Destination Type to GOOGLE_SHEET, then fill the fields below.
Spreadsheet IDThe ID from the Google Sheet URL.
Sheet nameThe tab that receives rows. Defaults to Sheet1.
Value input optionRAW for literal values or USER_ENTERED for Sheets parsing.
ColumnsOptional dotted paths such as payload.customer.email or metadata.event_id.
Include metadataAdds delivery metadata when explicit columns are not set.
Auth typeOAuth refresh token or service account credentials.
API config fields
The REST API stores destination-specific behavior under config. Use PATCH for focused edits and PUT only when your request contains the full config you want to keep.
config.spreadsheet_idGoogle Spreadsheet ID that receives appended rows.
config.sheet_nameSheet tab name. Defaults to Sheet1.
config.rangeA1 range derived from the sheet name, usually Sheet1!A:Z or a quoted tab name.
config.value_input_optionRAW or USER_ENTERED. RAW is used when metadata mode is enabled.
config.columnsOptional ordered list of dotted payload or metadata paths to write as columns.
config.include_metadataWhether FastHook writes metadata columns when explicit columns are not configured.
config.insert_data_optionINSERT_ROWS for append-style writes.
config.auth_typeGOOGLE_OAUTH_REFRESH_TOKEN or GOOGLE_SERVICE_ACCOUNT.
config.authOAuth client credentials and refresh token, or service account email and private key.
{
"name": "ops-events-sheet",
"type": "GOOGLE_SHEET",
"config": {
"spreadsheet_id": "1abcExampleSpreadsheetId",
"sheet_name": "Webhook events",
"range": "'Webhook events'!A:Z",
"value_input_option": "RAW",
"insert_data_option": "INSERT_ROWS",
"columns": [
"event_id",
"payload.customer.email",
"payload.order.total"
],
"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"
},
"rate_limit": 1,
"rate_limit_period": "second"
}
}curl -X POST "https://api.fasthook.io/v1/destinations" \
-H "Authorization: Bearer $FASTHOOK_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"name": "ops-events-sheet",
"type": "GOOGLE_SHEET",
"config": {
"spreadsheet_id": "1abcExampleSpreadsheetId",
"sheet_name": "Webhook events",
"range": "'Webhook events'!A:Z",
"value_input_option": "RAW",
"insert_data_option": "INSERT_ROWS",
"columns": [
"event_id",
"payload.customer.email",
"payload.order.total"
],
"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"
},
"rate_limit": 1,
"rate_limit_period": "second"
}
}'Authentication
Destination authentication is outbound. It helps the receiver trust or accept FastHook delivery, and it is separate from source authentication that verifies the original webhook producer.
- Google OAuth refresh token
- Google service account
HTTP methods and rate limit
This destination type uses the methods below for delivery attempts. Rate limits apply at the destination boundary, so every connection that targets the same destination shares that capacity.
Rate limit: Locked to 1 request per second.
Delivery behavior
- FastHook appends rows instead of replacing existing sheet contents.
- If columns are configured, FastHook writes values in that order and disables metadata mode.
- If columns are empty and metadata is off, FastHook can spread payload values across columns for quick capture.
- Google Sheet destinations are locked to 1 request per second to avoid write bursts.
Setup checklist
- Create a destination and choose GOOGLE_SHEET as the destination type.
- Paste the spreadsheet ID and choose the sheet tab.
- Choose OAuth or service account authentication and make sure that identity can edit the sheet.
- Optionally define columns with dotted payload or metadata paths.
- Connect sources through connections and inspect rows after a test delivery.
Troubleshooting
Saving fails because auth is missing.Connect Google with OAuth2 or provide service account email and private key.
Rows do not appear.Check spreadsheet_id, sheet_name, sharing permissions, and whether the target tab exists.
Columns are empty or shifted.Confirm dotted paths match the delivered payload. If you set columns, include_metadata is disabled by design.