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

POST/v1/tables/:tableId/webhookshypertab_create_webhook

Create an incoming or outgoing webhook for a table.

ParameterTypeDescription
tablerequiredstringTable name or ID
directionrequiredstring"incoming" or "outgoing"
namestringHuman-readable webhook name
target_urlstringURL to POST to (required for outgoing)
trigger_onstring"new_row", "field_change", or "filter_match" (outgoing only)
trigger_columnstringColumn to watch (for field_change trigger)
trigger_filterobjectFilter condition (for filter_match trigger)
field_mappingobjectMap incoming payload fields to table columns
Incoming Webhooks

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.

i
Incoming webhook URLs use the public /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"
    }
  }
}
Outgoing Webhooks

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

GET/v1/tables/:tableId/webhookshypertab_list_webhooks

List all webhooks for a table with direction, status, trigger config, and delivery stats.

ParameterTypeDescription
tablerequiredstringTable name or ID
{ "tool": "hypertab_list_webhooks", "arguments": { "table": "leads" } }

Update Webhook

PATCH(MCP only)hypertab_update_webhook

Change 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.

ParameterTypeDescription
webhook_idrequiredstringWebhook ID to update
namestringNew webhook name
target_urlstringNew URL to POST to (outgoing only)
trigger_onstringnew_row | field_change | filter_match (outgoing only)
trigger_columnstringColumn to watch for field_change (outgoing only)
trigger_filterobjectFilter condition for filter_match (outgoing only)
field_mappingobjectNew payload field mapping (replaces existing)
statusstring'paused' stops deliveries, 'active' resumes
{
  "tool": "hypertab_update_webhook",
	  "arguments": { "webhook_id": "wh_abc123", "target_url": "https://automation.example/webhooks/hypertab-v2" }
}

Webhook Logs

GET/v1/webhooks/:webhookId/logshypertab_get_webhook_logs

Get 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.

ParameterTypeDescription
webhook_idrequiredstringWebhook ID
limitintegerdefault: 25Max logs to return (1-100)
offsetintegerdefault: 0Pagination offset
{
  "tool": "hypertab_get_webhook_logs",
  "arguments": { "webhook_id": "wh_abc123", "limit": 10 }
}

Delete Webhook

DELETE/v1/webhooks/:webhookIdhypertab_delete_webhook

Delete a webhook permanently. Stops all future deliveries.

ParameterTypeDescription
webhook_idrequiredstringWebhook ID to delete
{
  "tool": "hypertab_delete_webhook",
  "arguments": { "webhook_id": "wh_abc123" }
}