Webhooks
Incoming webhooks receive data from external services and create records. Outgoing webhooks push data to external URLs when records are created or changed.
Create Webhook
/v1/tables/:tableId/webhookshypertab_create_webhookCreate an incoming or outgoing webhook for a table.
| Parameter | Type | Description |
|---|---|---|
tablerequired | string | Table name or ID |
directionrequired | string | "incoming" or "outgoing" |
name | string | Human-readable webhook name |
target_url | string | URL to POST to (required for outgoing) |
trigger_on | string | "new_row", "field_change", or "filter_match" (outgoing only) |
trigger_column | string | Column to watch (for field_change trigger) |
trigger_filter | object | Filter condition (for filter_match trigger) |
field_mapping | object | Map incoming payload fields to table columns |
Creates a source-backed public route at /e/:endpointId. External services POST JSON data to this URL with the returned webhook secret. By default, top-level payload keys auto-map onto same-named table columns (fuzzy-matched within 2 edits) and the raw body is kept in the payload column. Use field_mapping to map nested payload fields to table columns, or set auto_map_payload: false in the source config to disable auto-mapping.
/e/:endpointId route, so send the returned secret in the X-Webhook-Secret header.{
"tool": "hypertab_create_webhook",
"arguments": {
"table": "events",
"direction": "incoming",
"name": "Stripe events",
"field_mapping": {
"data.object.customer_email": "email",
"type": "event_type",
"data.object.amount": "amount"
}
}
}Fires when records change. Choose a trigger: new_row, field_change, or filter_match.
{
"tool": "hypertab_create_webhook",
"arguments": {
"table": "leads",
"direction": "outgoing",
"name": "Automation notification",
"target_url": "https://automation.example/webhooks/hypertab",
"trigger_on": "new_row"
}
}List Webhooks
/v1/tables/:tableId/webhookshypertab_list_webhooksList all webhooks for a table with direction, status, trigger config, and delivery stats.
| Parameter | Type | Description |
|---|---|---|
tablerequired | string | Table name or ID |
{ "tool": "hypertab_list_webhooks", "arguments": { "table": "leads" } }Update Webhook
(MCP only)hypertab_update_webhookChange a webhook's name, target URL, trigger, field mapping, or status in place — delivery logs and success/failure counters are preserved, unlike delete + recreate. Target URL and trigger fields apply to outgoing webhooks only; incoming webhooks can change name, field_mapping, and status.
| Parameter | Type | Description |
|---|---|---|
webhook_idrequired | string | Webhook ID to update |
name | string | New webhook name |
target_url | string | New URL to POST to (outgoing only) |
trigger_on | string | new_row | field_change | filter_match (outgoing only) |
trigger_column | string | Column to watch for field_change (outgoing only) |
trigger_filter | object | Filter condition for filter_match (outgoing only) |
field_mapping | object | New payload field mapping (replaces existing) |
status | string | 'paused' stops deliveries, 'active' resumes |
{
"tool": "hypertab_update_webhook",
"arguments": { "webhook_id": "wh_abc123", "target_url": "https://automation.example/webhooks/hypertab-v2" }
}Webhook Logs
/v1/webhooks/:webhookId/logshypertab_get_webhook_logsGet execution history: delivery attempts, HTTP response codes, errors, and timing. Incoming source-backed webhook logs retain metadata only — payload values and previews are not stored — and are normally retained for up to 30 days.
| Parameter | Type | Description |
|---|---|---|
webhook_idrequired | string | Webhook ID |
limit | integerdefault: 25 | Max logs to return (1-100) |
offset | integerdefault: 0 | Pagination offset |
{
"tool": "hypertab_get_webhook_logs",
"arguments": { "webhook_id": "wh_abc123", "limit": 10 }
}Delete Webhook
/v1/webhooks/:webhookIdhypertab_delete_webhookDelete a webhook permanently. Stops all future deliveries.
| Parameter | Type | Description |
|---|---|---|
webhook_idrequired | string | Webhook ID to delete |
{
"tool": "hypertab_delete_webhook",
"arguments": { "webhook_id": "wh_abc123" }
}