Skip to content

Webhooks

Outbound webhooks let you automatically send row data to external services when triggered from the Data Platform. Use webhooks to connect SchemaStack to tools like Zapier, Make, n8n, or any HTTP endpoint.

How Webhooks Work

  1. Configure — Set up a webhook endpoint in your view's properties
  2. Select — Choose rows in the Data Platform
  3. Send — Use the "Send to webhook" bulk action
  4. Receive — Your endpoint receives the row data as JSON

Setting Up a Webhook

Add a Webhook Endpoint

  1. Open a view in the Data Platform
  2. Click the Properties panel (right sidebar)
  3. Scroll to the Webhooks section
  4. Click Add Webhook
  5. Fill in:
    • Name — A descriptive label (e.g., "Zapier - New Subscribers")
    • URL — Your webhook endpoint URL (must be HTTPS in production)
    • Headers — Optional custom HTTP headers (key-value pairs)
    • HMAC Secret — Optional signing secret for payload verification
  6. Click Save

Enable/Disable Webhooks

Toggle the enabled switch next to any webhook to temporarily disable it without deleting the configuration.

Sending Data to a Webhook

  1. Select rows in the Data Platform (individually or "Select All")
  2. Click the more menu (⋯) in the bulk action bar
  3. Choose Send to webhook
  4. Pick which webhook endpoint to send to
  5. Confirm the send

The operation runs asynchronously — you'll see progress in the bulk operation status bar, and the delivery result appears in the webhook's delivery log.

Payload Format

SchemaStack sends a JSON payload with this structure:

json
{
  "rows": [
    { "id": 1, "name": "Alice", "email": "[email protected]" },
    { "id": 2, "name": "Bob", "email": "[email protected]" }
  ],
  "metadata": {
    "viewId": "a1b2c3d4-...",
    "tableName": "contacts",
    "rowCount": 2,
    "timestamp": "2026-04-04T12:00:00Z",
    "jobId": "e5f6g7h8-..."
  }
}

HTTP Headers

Every webhook request includes:

HeaderDescription
Content-Typeapplication/json
User-AgentSchemaStack-Webhook/1.0
X-SchemaStack-Delivery-IdUnique delivery ID (same as jobId)
X-SchemaStack-SignatureHMAC-SHA256 signature (if secret configured)

Plus any custom headers you configured.

HMAC Signature Verification

If you set an HMAC secret, SchemaStack signs each payload with HMAC-SHA256:

X-SchemaStack-Signature: sha256=<hex-encoded-signature>

To verify in your endpoint:

javascript
const crypto = require('crypto');

function verifySignature(payload, signature, secret) {
  const expected = crypto
    .createHmac('sha256', secret)
    .update(payload)
    .digest('hex');
  return `sha256=${expected}` === signature;
}

Delivery Log

Each webhook shows a delivery log with:

  • Status code — HTTP response from your endpoint
  • Duration — Round-trip time in milliseconds
  • Attempt number — Retry attempt (up to 3)
  • Response body — First 4KB of the response
  • Error message — If the delivery failed

Retry Policy

Failed deliveries are retried up to 3 times with exponential backoff:

AttemptDelay
1stImmediate
2nd1 second
3rd4 seconds

Retries occur for server errors (5xx) and rate limits (429). Client errors (4xx except 429) are not retried.

Limits

  • Maximum rows per send: 10,000
  • Request timeout: 30 seconds
  • Response body stored: 4KB (truncated)
  • SSRF protection: Private/internal IPs are blocked

Use with Zapier

The easiest way to connect SchemaStack to external services is through Zapier:

  1. Set up a Webhooks by Zapier trigger (Catch Hook)
  2. Copy the webhook URL from Zapier
  3. Add it as a webhook in SchemaStack
  4. Send test data to map fields in Zapier
  5. Connect to any of Zapier's 7,000+ integrations

See the Zapier Integration guide for details.

SchemaStack Documentation