Skip to main content

Webhooks

Webhooks allow external services to send real-time events to FlowStack, triggering your automations instantly when something happens.

How Webhooks Work

  1. FlowStack generates a unique webhook URL for your automation
  2. You register this URL in the external service's webhook settings
  3. When an event occurs, the service sends an HTTP request to your webhook URL
  4. FlowStack receives the request and triggers your automation with the event data

Setting Up a Webhook Trigger

Flow Builder

  1. Create a new flow
  2. Select Webhook as the trigger
  3. Copy the generated webhook URL
  4. Register the URL in the external service
  5. Click Test Trigger — then trigger an event in the external service
  6. FlowStack receives the event and shows the data structure

Workflow Builder

  1. Add a Webhook trigger node
  2. Configure:
    • HTTP Method — GET, POST, PUT, DELETE, or Any
    • Path — Custom URL path (optional)
    • Authentication — None, Basic Auth, or Header Auth
    • Response Mode — Respond immediately or after workflow completes
  3. Copy the webhook URL (shown in the node configuration)
  4. Register in the external service

Webhook URL Format

# Flow Builder
https://engine.onflowstack.com/api/v1/webhooks/{flow-id}

# Workflow Builder
https://n8n.onflowstack.com/webhook/{webhook-path}

Webhook Authentication

Secure your webhook endpoints to prevent unauthorized access:

Header Authentication

Require a specific header value:

X-Webhook-Secret: your-secret-value

Basic Authentication

Require username/password:

Authorization: Basic base64(username:password)

Signature Verification

Many services sign webhook payloads. Verify the signature in a Code node:

const crypto = require('crypto');
const signature = $json.headers['x-hub-signature-256'];
const payload = JSON.stringify($json.body);
const expected = 'sha256=' + crypto.createHmac('sha256', 'your-secret').update(payload).digest('hex');

if (signature !== expected) {
throw new Error('Invalid webhook signature');
}

Responding to Webhooks

Immediate Response (Default)

FlowStack responds with 200 OK immediately and processes the workflow asynchronously. Best for services that require fast responses.

Workflow Response (Workflow Builder)

Wait for the workflow to complete and send a custom response:

{
"status": "processed",
"orderId": "ORD-12345",
"message": "Order received and processing"
}

Configure this in the Webhook node's Response Mode setting.

Common Webhook Sources

ServiceWebhook Events
StripePayment succeeded, subscription created, invoice paid
GitHubPush, pull request, issue, release
ShopifyOrder created, product updated, customer created
TypeformForm submission
CalendlyBooking created, booking cancelled
IntercomNew conversation, message received
TwilioSMS received, call completed

Testing Webhooks

Use tools like webhook.site or curl to test:

curl -X POST https://n8n.onflowstack.com/webhook/your-path \
-H "Content-Type: application/json" \
-d '{"event": "test", "data": {"name": "John", "email": "john@example.com"}}'