Skip to main content

Overview

Provide a webhook_url when triggering a workflow to receive an HTTP POST with execution results when it completes (successfully or with an error). Add a webhook_secret to have each delivery signed so you can verify it came from each::labs.

Setting Up

Include webhook_url in your trigger request, and webhook_secret to receive signed deliveries:

Webhook Request

  • Method: POST
  • Content-Type: application/json
  • Body: Same structure as Get Execution response

Signature headers

When the trigger included a webhook_secret, the delivery also carries: Verify the signature over the raw request body — see Verifying Webhook Signatures.

Payload Examples

Successful Execution

Failed Execution

Bulk Trigger Webhook

When triggered via bulk-trigger, the payload includes bulk_id:
Each execution in a bulk operation sends its own webhook notification.

Handler Examples

Retry Behavior

Deliveries are attempted up to 3 times in total: the initial attempt plus 2 retries, spaced roughly 10 seconds apart. Every attempt carries the same signature and timestamp. Your endpoint should return a 200 OK to acknowledge receipt.

Best Practices

  • Return 200 OK immediately, process data asynchronously
  • Implement idempotency using execution_id as a deduplication key
  • Handle both completed and failed statuses
  • For bulk operations, correlate webhooks using bulk_id
  • Set a webhook_secret and verify the signature before trusting a payload
Last modified on September 21, 2026