Skip to main content
Webhook subscriptions tell Champ to POST an event to a URL you control whenever a workflow run reaches a terminal state or a case is closed or errors. Subscriptions are tenant-scoped — one subscription fires for every matching workflow run or case in your organization. There is no per-workflow filtering today; filter on workflow_id in your handler if you only care about specific workflows.

Prerequisites

A webhook destination is modeled as a REST API integration, so Champ can reuse its auth config when delivering events. Add one first:
  1. Follow Add a REST API integration.
  2. Set Base URL to the root of your webhook receiver (e.g. https://hooks.yourapp.com).
  3. Configure Authentication — this is how your handler will verify that a request actually came from Champ. See Authentication.

Create a subscription

  1. Go to Account → Webhooks.
  2. Under Active Webhooks, click Create Webhook.
  3. Fill in the fields:
Create Webhook dialog
Connection
string
required
The REST API integration that will receive deliveries. The full URL Champ POSTs to is the connection’s Base URL plus the Path you set below.
Path
string
required
The path on the destination (e.g. /webhooks/champ). Must start with /.
Event
enum
required
Which event to subscribe to. See available events.
  1. Click Create. New subscriptions start in the active state and begin firing on the next qualifying run.
You can pause, resume, or delete subscriptions from the same page. Pausing stops new deliveries without clearing past events from the Recent Events list.

Available events

Champ emits two families of events: workflow run events for any run, and case events for the durable cases that workflows process.
EventFires when
workflow_run.completedA workflow run finishes successfully
workflow_run.failedA workflow run terminates with an error
case.closedA case transitions to its closed (resolved) state
case.errorA case transitions to its error state
Each subscription listens for exactly one event type. To receive several events, create one subscription per event (they can point to the same path). Case events fire only on a real transition into the closed or error state — re-running a case that is already in that state does not re-fire. The two families carry different payload shapes; see Payloads & delivery.

Recent Events

Webhooks page with Active Webhooks and Recent Events
Every delivery attempt is recorded under Recent Events. Each row shows:
  • Statuspending, in_progress, completed, or failed
  • Event type
  • Destination URL
  • Created and delivered timestamps
  • The full payload (expandable JSON view)
Use this to debug integrations during setup or confirm that a specific run fired. See Payloads & delivery for what to expect in your handler.