Webhooks
Webhooks allow external services to send real-time events to FlowStack, triggering your automations instantly when something happens.
How Webhooks Work
- FlowStack generates a unique webhook URL for your automation
- You register this URL in the external service's webhook settings
- When an event occurs, the service sends an HTTP request to your webhook URL
- FlowStack receives the request and triggers your automation with the event data
Setting Up a Webhook Trigger
Flow Builder
- Create a new flow
- Select Webhook as the trigger
- Copy the generated webhook URL
- Register the URL in the external service
- Click Test Trigger — then trigger an event in the external service
- FlowStack receives the event and shows the data structure
Workflow Builder
- Add a Webhook trigger node
- 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
- Copy the webhook URL (shown in the node configuration)
- 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
| Service | Webhook Events |
|---|---|
| Stripe | Payment succeeded, subscription created, invoice paid |
| GitHub | Push, pull request, issue, release |
| Shopify | Order created, product updated, customer created |
| Typeform | Form submission |
| Calendly | Booking created, booking cancelled |
| Intercom | New conversation, message received |
| Twilio | SMS 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"}}'