From 3144c0d98e51e4093662b5f90e96a515c62a0d34 Mon Sep 17 00:00:00 2001 From: Roina Ochieng Date: Tue, 27 Jan 2026 22:29:34 +0300 Subject: [PATCH 1/2] Update Webhook Triggers: Add Async and Sync This PR updates the webhook triggers documentation with async and synchronous modes. This also updates the Webhook Ttigger image. --- docs/build/triggers.md | 83 ++++++++++++++++++++++++++++++++ static/img/webhook_trigger.webp | Bin 17292 -> 9360 bytes 2 files changed, 83 insertions(+) diff --git a/docs/build/triggers.md b/docs/build/triggers.md index ac20d4fbd134..18008b42f88d 100644 --- a/docs/build/triggers.md +++ b/docs/build/triggers.md @@ -25,6 +25,89 @@ Trigger by adding authentication, head over to our Learn how a workflow's initial `state` gets built from a webhook trigger [here](../jobs/state#webhook-triggered-runs). +**Webhook Trigger Responses** +----------------------------- + +When a workflow is triggered via a webhook, OpenFn can respond in one of two ways, depending on how the trigger is configured and what the calling system needs. + +### **Synchronous response (immediate)** + +By default, webhook triggers respond **synchronously**. + +This means OpenFn sends an HTTP response **immediately after receiving the webhook request**, once the Work Order and Run have been created. + +**Use this mode when:** + +* The calling system only needs confirmation that the request was received + +* You want fast responses and minimal coupling + +* The workflow may take longer to run, but the caller does not need the result + + +**When the response is sent:** + +Immediately, during the same HTTP request that triggered the workflow. + +**What this response represents:** + +It confirms that OpenFn has accepted the webhook and scheduled the workflow to run. It does **not** include the workflow’s output. + +Example response body: + +```js +{ + "work_order_id": "abc123", + "run_id": "xyz456" +} +``` + +### **Asynchronous response (after completion)** + +Webhook triggers can also be configured to respond **asynchronously**, after the workflow has finished running. + +In this mode, OpenFn sends a response **after the Run reaches a final state** (for example: success, failed, or cancelled). + +**Use this mode when:** + +* The calling system needs the result of the workflow + +* You need to know whether the run succeeded or failed + +* You want access to the workflow’s final output + + +**When the response is sent:** + +After the workflow completes, not during the original webhook request. + +**What this response includes:** + +* The final output of the workflow + +* Metadata describing the run and its outcome + + +**Response body structure:** +```js + + { + "data": { + "...": "final workflow output" + }, + "meta": { + "work_order_id": "abc123", + "run_id": "xyz456", + "state": "success", + "error_type": null, + "inserted_at": "2025-10-23T10:15:00Z", + "started_at": "2025-10-23T10:15:05Z", + "claimed_at": "2025-10-23T10:15:06Z", + "finished_at": "2025-10-23T10:15:20Z" + } +} +``` + ## Cron Triggers (formerly timers) **Cron Triggers** run Workflows based on a cron schedule, and are good for diff --git a/static/img/webhook_trigger.webp b/static/img/webhook_trigger.webp index bec6a73c6157ad80648c183aba8b5104a6854769..9b5bfa11eae190e3215784634f35ba28c1a909fe 100644 GIT binary patch literal 9360 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 SUs33sMNow}|9j6wQ2!U~$tXqu literal 17292 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�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 Date: Fri, 30 Jan 2026 11:16:04 +0300 Subject: [PATCH 2/2] Update triggers.md Fixing the mixed explanation and headers --- docs/build/triggers.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/docs/build/triggers.md b/docs/build/triggers.md index 18008b42f88d..ea02b60c8525 100644 --- a/docs/build/triggers.md +++ b/docs/build/triggers.md @@ -30,9 +30,9 @@ Learn how a workflow's initial `state` gets built from a webhook trigger When a workflow is triggered via a webhook, OpenFn can respond in one of two ways, depending on how the trigger is configured and what the calling system needs. -### **Synchronous response (immediate)** +### **Asynchronous response (immediate)** -By default, webhook triggers respond **synchronously**. +By default, webhook triggers respond **asynchronously**. This means OpenFn sends an HTTP response **immediately after receiving the webhook request**, once the Work Order and Run have been created. @@ -62,9 +62,9 @@ Example response body: } ``` -### **Asynchronous response (after completion)** +### **Synchronous response (after completion)** -Webhook triggers can also be configured to respond **asynchronously**, after the workflow has finished running. +Webhook triggers can also be configured to respond **synchronously**, after the workflow has finished running. In this mode, OpenFn sends a response **after the Run reaches a final state** (for example: success, failed, or cancelled).