Webhooks
Webhooks let Outtake push workflow activity to your own systems without managing API credentials.
Getting started
Outtake provisions and manages workflow webhooks on your behalf. Reach out to your Outtake customer team to enable the feature for your profile. Once access is granted, use the Webhooks tab inside each workflow to tailor the signals you receive.
Event topics
workflow.item.created— Fires when a workflow item is first inserted. The payload includes the newly created state and associated workflow metadata so systems can react as soon as an item enters the queue.workflow.item.state.changed— Emits whenever an item transitions to a new state. Outtake skips no-op transitions and delivers the updated state, alert context, and any filters applied to your notification rules.workflow.item.resolved— Derived from the state-change pipeline whenever the new state matches the workflow’s configured “resolved” state. Use this topic to drive downstream resolution logic without re-checking state names.workflow.item.reopened— Emitted when a previously resolved item re-enters an active state. The payload highlights the reopened state so teams can restart investigation automations.
Configure a workflow webhook
- Navigate to the workflow you want to instrument and open the Webhooks tab.
- Paste the HTTPS endpoint that should receive POST requests from Outtake. We require TLS for every delivery.
- Select the workflow events to forward:
workflow.item.createdworkflow.item.state.changedworkflow.item.resolvedworkflow.item.reopened
- (Optional) Provide a shared secret. Leaving this field blank generates a strong secret automatically; copy it into your receiver before you save.
- Save the configuration. Outtake starts sending the selected events to the configured destination.
Each workflow maintains its own webhook settings, so teams can tailor destinations and filters per queue.
Delivery payloads
Every webhook delivery is JSON with three top-level blocks:
event— The Inngest trigger name that fired (workflow-item-createdorworkflow-item-state-updated).workflow— Context from the workflow that processed the alert, includingworkflowId,profileId, optionalname, thenewState, andpreviousStatewhen an item moved rather than being created.alert— Details about the alert that changed:alertId,type(contentoraccount), platform metadata (platform,platformDisplayName), the subject string, optionalcontentTitle, thesecurityDescription, optionalagentReasoning, andlinksto Outtake plus any inferred content/account URL. When preview images are enabled,previewImageincludes{ url, width, height }.
Sample payload (email)
Payloads are channel-agnostic—capture the event, workflow, and alert structures in your receiver and layer any channel-specific processing you need downstream.
Authentication
When you save a webhook, Outtake stores the shared secret you supplied (or generated). Each delivery includes an x-outtake-secret header that carries this value so your receiver can confirm the request came from Outtake. Compare the header to the secret you keep in your system and reject requests without a match.
Rotate secrets directly from the UI—choose Generate a new secret or paste your own value, then update your receiver before saving so future deliveries continue to authenticate.
Delivery semantics
- Deliveries use four retry attempts with exponential backoff that mirrors our Slack and email notification pipeline. Non-2xx responses or network failures trigger retries until the attempts are exhausted.
- Outtake never queues events while a webhook is disabled; we resume forwarding the moment the toggle is switched back on.
- Dedicated delivery observability (historical logs, replay tooling) is in progress and will land in the webhook tab soon.
Edit or disable a webhook
- Update the endpoint, secret, or event selection directly from the same UI. Changes take effect immediately for that workflow.
- Use the Enable deliveries toggle to pause traffic without losing your settings. While disabled we keep the configuration but skip all sends.
- To regenerate credentials, open the secret field and click Generate new secret; copy the new value into your receiver before saving so incoming deliveries continue to pass verification.
Operational tips
- Store the shared secret in your secrets manager and rotate it on a regular cadence using the UI-generated value.
- Build idempotent handlers keyed off the payload’s event ID so retries never duplicate work.
- Instrument your receiver with logging and alerting so you can track delivery health until first-party observability ships.