From bd20565de10214223eb7185b5128f6afeca28780 Mon Sep 17 00:00:00 2001 From: "mintlify[bot]" <109931778+mintlify[bot]@users.noreply.github.com> Date: Thu, 29 Jan 2026 09:59:00 +0000 Subject: [PATCH 1/2] Update workflow-management/webhook-responses.mdx Co-Authored-By: mintlify[bot] <109931778+mintlify[bot]@users.noreply.github.com> --- workflow-management/webhook-responses.mdx | 102 ++++++++++++++++++++++ 1 file changed, 102 insertions(+) create mode 100644 workflow-management/webhook-responses.mdx diff --git a/workflow-management/webhook-responses.mdx b/workflow-management/webhook-responses.mdx new file mode 100644 index 00000000..c583bc08 --- /dev/null +++ b/workflow-management/webhook-responses.mdx @@ -0,0 +1,102 @@ +--- +title: 'Webhook responses' +description: 'Send HTTP responses back to webhook callers from your workflows' +icon: 'reply' +--- + +import { NarrowImage } from '/snippets/narrow-image.jsx' + +When a workflow is triggered by a webhook, you can send a custom HTTP response back to the caller. This enables synchronous communication patterns where the webhook caller waits for and receives a response from your workflow. + +## Use cases + +Webhook responses are useful when you need to: + +- Return processed data to the webhook caller +- Acknowledge receipt of webhook data with custom status codes +- Implement synchronous API endpoints using OpenOps workflows +- Provide immediate feedback to external systems + +## How it works + +When a workflow is triggered by a webhook, OpenOps can send a response back to the caller before the workflow completes. The response includes: + +- HTTP status code +- Response headers +- Response body (JSON or raw text) + +By default, webhook triggers return a standard acknowledgment response. Use the **Send Webhook Response** action to customize this response. + +## Sending a webhook response + +To send a custom response to a webhook caller: + +1. Add the **HTTP** block's **Send Webhook Response** action to your workflow +2. Configure the response properties: + - **Status**: HTTP status code (default: 200) + - **Headers**: Custom HTTP headers as a JSON object + - **Body Type**: Choose between JSON or Raw text + - **Response**: The response body content + +### Example: JSON response + +```json +{ + "status": 200, + "headers": { + "Content-Type": "application/json" + }, + "body": { + "success": true, + "message": "Data processed successfully", + "processedAt": "2026-01-29T10:00:00Z" + } +} +``` + +### Example: Raw text response + +```text +Status: 200 +Body Type: Raw +Response: "Operation completed successfully" +``` + +## Response timing + +The webhook response is sent as soon as the **Send Webhook Response** action executes in your workflow. The workflow continues to run after sending the response, but the webhook caller receives the response immediately. + + +If your workflow doesn't include a **Send Webhook Response** action, OpenOps automatically sends a default acknowledgment response when the webhook is received. + + +## Timeout behavior + +By default, webhook callers will timeout after 30 seconds if no response is sent. Ensure your workflow sends a response within this timeframe to avoid timeout errors. + +You can configure the webhook timeout using the `OPS_WEBHOOK_TIMEOUT_SECONDS` environment variable in your OpenOps deployment. + +## Best practices + +- **Send responses early**: Place the **Send Webhook Response** action early in your workflow to avoid timeouts +- **Use appropriate status codes**: Return meaningful HTTP status codes (200 for success, 400 for bad requests, 500 for errors) +- **Include error handling**: Use conditional branching to send different responses based on workflow outcomes +- **Keep responses lightweight**: Avoid sending large payloads in webhook responses + +## Limitations + +- Only one response can be sent per webhook trigger +- Responses must be sent within the configured timeout period (default: 30 seconds) +- The response is sent asynchronously through the OpenOps engine + +## Example workflow + +Here's a complete example of a workflow that receives webhook data, processes it, and sends a custom response: + +1. **Webhook trigger**: Catches incoming webhook +2. **Data validation**: Validates the incoming data +3. **Send Webhook Response**: Sends acknowledgment to caller +4. **Process data**: Continues processing in the background +5. **Store results**: Saves processed data to a database + +This pattern allows you to acknowledge receipt immediately while continuing to process data asynchronously. From 08f9a329042e4c12c80dd5b483f08bf7f4c2bec9 Mon Sep 17 00:00:00 2001 From: "mintlify[bot]" <109931778+mintlify[bot]@users.noreply.github.com> Date: Thu, 29 Jan 2026 09:59:19 +0000 Subject: [PATCH 2/2] Update docs.json Co-Authored-By: mintlify[bot] <109931778+mintlify[bot]@users.noreply.github.com> --- docs.json | 1 + 1 file changed, 1 insertion(+) diff --git a/docs.json b/docs.json index 0b7a7059..c8786b52 100644 --- a/docs.json +++ b/docs.json @@ -48,6 +48,7 @@ "workflow-management/import-export", "workflow-management/actions", "workflow-management/scheduling", + "workflow-management/webhook-responses", "workflow-management/passing-data", "workflow-management/conditional-branching", "workflow-management/human-in-the-loop",