execution.completed
An execution reached `completed`
Sent once when an execution's status transitions to completed.
Emitted for API-triggered runs only (executions started from the
Cascades UI have no api_client and produce no webhooks). Poll
GET /executions/{workflow_execution_id} for the decision and
step_outputs.
Payload
-
idstring (uuid) required -
eventstring required One ofexecution.completed -
created_atstring (date-time) required -
dataobject required-
workflow_execution_idinteger required -
workflow_idinteger required -
batch_execution_idinteger Present only for batch rows. -
external_referencestring Present when the run was triggered with one. -
execution_modestring One oftestlive -
statusstring required One ofcompleted -
review_statusstring required One ofnonein_reviewapproveddenied -
completed_atstring (date-time)
-
How to handle it
- Answer
2xxas soon as the delivery is stored and do the real work on a queue. Any other response, a connection error or a timeout (5 s connect, 10 s read) counts as a failure: Cascades retries after 1m, 5m, 30m, 2h, 8h, 24h, then marks the deliverydead. - De-duplicate on the envelope's
id— it is identical across retries and across every subscriber's copy of the same event — or on theX-Cascades-Deliveryheader, which names one delivery row. - Verify
X-Cascades-Signaturebefore you act on the body (next section). - Treat
dataas a pointer, not the record: readdata.workflow_execution_idand call GET /executions/{id} for the current status, the decision and — withexecutions:read:full— thestep_outputs. data.execution_modesays whether the run wastestorlive. Test-mode runs deliver this event too, so guard production side effects on it.
Verify before you trust it
Compute HMAC-SHA256(signing_secret, "<t>.<raw body>") and compare it in constant time with the v1 (or, during rotation, v0) value in X-Cascades-Signature. Samples are in the right-hand rail and in the verify webhooks guide.
Deliveries retry on any non-2xx response, so handle the same X-Cascades-Delivery id more than once safely. See all webhook events.