Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
83 changes: 83 additions & 0 deletions docs/build/triggers.md
Original file line number Diff line number Diff line change
Expand Up @@ -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:**
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

maybe add ? at the end

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I put this down as a statement more than a question Tuch. Do you think it'll make more sense as a question?


Immediately, during the same HTTP request that triggered the workflow.

**What this response represents:**
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

add ? at the end

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I put this down as a statement more than a question Tuch. Do you think it'll make more sense as a question?

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Ooh okay 🤔 , If the explanation is in a newline then it looks like a question but if it's oneline it's fine as is

**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.


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
Expand Down
Binary file modified static/img/webhook_trigger.webp
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.