Receive real-time events from external systems via webhooks, validate them, and trigger the appropriate workflow response. The foundation of reactive automation.
Rendering diagram…
Use event-driven webhooks when:
| Step | Component | Action |
|---|---|---|
| 1 | External system | Event occurs (payment received, issue created) |
| 2 | External system | Sends HTTP POST to your webhook URL |
| 3 | Webhook endpoint | Receives, validates, and acknowledges the request |
| 4 | Router | Inspects the event type and routes to the appropriate workflow |
| 5 | Workflow | Processes the event (creates task, updates record, sends notification) |
In Nintex Workflow Cloud, use a Start event: External start to create a webhook URL. The platform gives you a unique URL like:
https://your-tenant.workflowcloud.com/api/v1/workflow/published/xxxxx-xxxxx/start
Never trust incoming webhooks blindly:
| Validation | How |
|---|---|
| Signature verification | Check the HMAC signature in the request header against your shared secret |
| Source IP whitelist | Only accept requests from known IP ranges |
| Payload schema | Validate that required fields exist and have correct types |
| Idempotency check | Check if you've already processed this event ID |
| Timestamp check | Reject events older than 5 minutes (replay protection) |
The external system expects a fast response (usually within 5-30 seconds):
Most webhook providers send different event types:
| Event Type | Workflow Action |
|---|---|
payment.succeeded | Update order status, send receipt |
payment.failed | Notify customer, retry payment |
invoice.created | Sync to accounting system |
customer.updated | Update CRM record |
subscription.cancelled | Trigger retention workflow |
Webhook providers typically retry failed deliveries:
Always respond to webhooks within the timeout period (usually 5-30 seconds). If your processing takes longer, accept the webhook, queue the work, and process asynchronously.
Periodically check an external system for changes and trigger workflows when new or updated records are detected. The reliable alternative when webhooks aren't available.
Stream row-level changes out of a database in near real-time using the transaction log. No polling, no app changes — downstream systems get inserts, updates, and deletes as they happen.