Overview
The Webhook API allows external systems to trigger EasyAlert workflows via HTTP POST requests. Use it to integrate with CI/CD pipelines, monitoring tools, custom scripts, or any system that can make HTTP calls. Common use cases:- Trigger a deployment rollback workflow from your CI/CD pipeline
- Start an incident response workflow from a custom monitoring tool
- Execute a maintenance workflow from a cron job or scheduler
- Chain automation workflows across different platforms
Endpoint
| Setting | Value |
|---|---|
| Method | POST |
| Content-Type | application/json |
| Authentication | Bearer token (Authorization: Bearer <secret>) |
| Rate Limit | 60 requests per minute per webhook key |
| Idempotency | 5-minute deduplication window |
Authentication
Webhook requests require a Bearer token for authentication. The token (secret) is generated alongside the webhook key.Enable Webhook Trigger
In the workflow designer, set the trigger type to Webhook in the Trigger node inspector.
Generate Webhook Key
Click Generate Webhook Key. This creates:
- Webhook Key — Part of the URL (visible, not sensitive)
- Webhook Secret — Bearer token for authentication (sensitive)
Copy the Secret
Copy the webhook secret immediately. It is displayed only once and cannot be retrieved later.
Request Format
Body (optional):| Field | Type | Required | Description |
|---|---|---|---|
variables | object | No | Custom key-value pairs accessible in the workflow as {{webhook.key}} |
{} triggers the workflow without custom variables.
Response Format
Success (200 OK)
Duplicate Request (200 OK, cached)
If the same payload is sent within the 5-minute idempotency window:Error Responses
| Status | Code | Description |
|---|---|---|
401 | unauthorized | Missing or invalid Bearer token |
404 | webhook_not_found | Webhook key does not exist or workflow is inactive |
429 | rate_limit_exceeded | Too many requests (60/min limit) |
500 | internal_error | Server error during execution |
Rate Limiting & Idempotency
Rate Limit
Each webhook key is limited to 60 requests per minute. Exceeding the limit returns HTTP 429 with aRetry-After header.
Idempotency
Duplicate detection prevents the same event from triggering multiple executions:| Mechanism | How It Works |
|---|---|
| Automatic | Payload hash is used as the idempotency key. Identical payloads within 5 minutes return the cached execution. |
| Explicit | Send X-Idempotency-Key: your-unique-key header. Requests with the same key within 5 minutes return the cached execution. |
Code Examples
- cURL
- Python
- Node.js
- Go
Using Variables in Workflows
Variables sent in the webhook payload are available in the workflow as{{webhook.<key>}}:
| Node | Template | Resolves To |
|---|---|---|
| Slack message | Deploying {{webhook.deployment}} to {{webhook.environment}} | Deploying v2.1.0 to production |
| Condition | {{webhook.environment}} equals production | Routes to production-specific flow |
| ForEach | Collection: {{webhook.services}} | Iterates over ["payment-api", "auth-service"] |
Nested variables are supported:
{{webhook.config.timeout}} accesses {"variables": {"config": {"timeout": 30}}}.Troubleshooting
401 Unauthorized
401 Unauthorized
404 Webhook Not Found
404 Webhook Not Found
Cause: The webhook key doesn’t exist, or the workflow is not active.Steps:
- Verify the webhook key in the URL matches the one shown in the workflow settings
- Confirm the workflow is published and activated
- Check if the webhook key was regenerated (which changes the URL)
429 Rate Limited
429 Rate Limited
Cause: More than 60 requests sent in one minute.Steps:
- Check the
Retry-Afterheader for when to retry - Add backoff logic to your client
- Batch events or reduce call frequency
- Use
X-Idempotency-Keyto deduplicate retries safely
Variables not available in workflow
Variables not available in workflow
Cause: Variables not included in the
variables field of the payload.Steps:- Verify your payload includes the
"variables": {...}wrapper - Check that variable names match what the workflow expects (case-sensitive)
- Verify the Content-Type header is
application/json - Test with cURL to isolate whether the issue is client-side
Duplicate executions
Duplicate executions
Cause: Retries from your source system without idempotency.Steps:
- Add
X-Idempotency-Keyheader with a unique key per logical event - If using automatic dedup, note that different payloads create different executions even for the same logical event
- The dedup window is 5 minutes — events older than 5 minutes are treated as new

