Skip to main content

Webhook requests

The webhook is a POST request to your endpoint (agent or tool) with Content-Type: application/json.
Values in reviewResult.data follow the same shape as the data object in your review request — plus any reviewer edits or selections.

Events

Review completed (event: "review.completed"):
Trigger form submitted (event: "trigger.submitted"): Similar structure, but omits some fields:
Chat message sent (event: "session.human_message"): Sent whenever a team member sends a message in a chat agent session:

Retries

Our webhook delivery follows an at-least-once approach: we retry until your endpoint returns a successful HTTP response, or until automatic retries are exhausted. Failed deliveries are retried automatically — up to 7 attempts in total, with exponential backoff between tries (about 1 minute, 5 minutes, 15 minutes, 45 minutes, 2 hours, then 6 hours). You can monitor delivery status in the review history. You can stop auto-retries from there if needed or trigger another delivery manually — for example after fixing your endpoint.

Idempotency

In rare cases, the same event may be delivered more than once. This can happen when your server processed the request but we did not receive a timely success response — for example due to a network error, a timeout, or a non-2xx status code returned after your handler already ran. When that happens, we treat the delivery as failed and schedule a retry. Retriable logic and workflows must therefore be idempotent: downstream side effects must be safe to replay. Setting the same value on a database row twice is usually harmless; sending an email twice is not.

Idempotency key header

One strategy to ensure webhook events are processed exactly once is to persist state somewhere recording that a given event ID has already been processed. For that purpose we provide an Idempotency-Key header in each webhook event. The value is unique to that delivery and stays the same across automatic and manual retries. Before running side effects, check whether you have already processed that key. If so, return a success response without repeating the work.

n8n

If you are using n8n to build your AI workflow, read how to handle completed reviews in our n8n integration guide.

Make

When using Make to create your workflow, read our Make integration guide on how to handle submitted reviews.