Webhooks

Contents

Replay Vision is in closed beta

Not yet available to everyone – join the waitlist to get updates.

Replay Vision can deliver a scanner's digests and alerts to a webhook instead of, or alongside, Slack. When a digest or alert fires, PostHog sends an HTTP POST with a JSON body to the URL you set on the action.

Setting up a webhook

  1. Open a scanner and create or edit a digest or an alert.
  2. Under Delivery, choose Webhook.
  3. Paste the URL of the endpoint that should receive the payload.
  4. Save.

The action still appears on the scanner page and in its run history whether or not a webhook is set, so an unreachable endpoint never hides the result.

Request

  • Method: POST
  • Headers:
    • Content-Type: application/json
    • X-PostHog-Webhook-Version: 1 – the payload version. New fields may be added to the body without changing this, so ignore unknown fields rather than rejecting the payload. A breaking change would ship under a new version.

Payload

The body is a JSON envelope. type tells you what happened; data carries the report and links.

JSON
{
"id": "0192f3a4-...",
"type": "replay_vision.digest",
"timestamp": "2026-07-27T12:00:00+00:00",
"data": {
"vision_action_id": "0192f3a4-...",
"run_id": "0192f3a4-...",
"scanner_id": "0192f3a4-...",
"action_name": "Daily checkout digest",
"scanner_name": "Checkout funnel scanner",
"observation_count": 12,
"report": "**Checkout digest**\n\n12 sessions showed ...",
"run_url": "https://us.posthog.com/project/1/replay-vision/actions/.../runs/..."
}
}

Fields

FieldTypeDescription
idstringUnique ID for this delivery. Equal to data.run_id; use it to dedupe retries.
typestringOne of replay_vision.digest, replay_vision.alert_fired, or replay_vision.alert_recovered. Route on this.
timestampstringISO 8601 time the run was scheduled.
data.vision_action_idstringID of the digest or alert.
data.run_idstringID of this specific run.
data.scanner_idstring | nullID of the scanner the action belongs to.
data.action_namestringName of the digest or alert.
data.scanner_namestring | nullName of the scanner.
data.observation_countnumberHow many observations this run matched.
data.reportstringThe report as Markdown.
data.run_urlstringLink to the run in PostHog, showing every matching observation.

Event types

  • replay_vision.digest – a scheduled digest produced its summary.
  • replay_vision.alert_fired – an alert's condition was met.
  • replay_vision.alert_recovered – an alert that was firing has cleared.

Community questions

Was this page useful?