Jam provides webhooks so you can receive HTTP push notifications whenever a Jam is created. Use them to trigger CI builds, forward bug reports to external systems, post to Slack, file tickets automatically, or kick off any workflow that should react to a new Jam in real time. Webhooks are scoped to a Jam workspace. Configure them per workspace to match each team’s tooling. Jam supports the following webhook events:Documentation Index
Fetch the complete documentation index at: https://jam.dev/docs/llms.txt
Use this file to discover all available pages before exploring further.
jam.created: fired when a new Jam is captured from any origin (Chrome extension, iOS app, dashboard, Fin (Intercom) integration, or recording link). This is the event most integrations should subscribe to.intercom.recorder.recorded: fired when a customer submits a screen recording through Jam’s Intercom integration. Use this to tweak the Fin AI Agent setup, for example, to react when a recording arrives mid-conversation.intercom.recorder.opted_out: fired when a customer declines to record through Jam’s Intercom integration. Same use case, feeding Fin’s decision logic.
jam.created.
How does a webhook work?
A webhook push is anHTTP POST request sent to a URL you choose. Jam triggers it automatically when a jam is created.
Your webhook consumer is an HTTP endpoint. It must:
- Be available at a publicly accessible HTTPS, non-localhost URL.
- Respond to the push with
HTTP 200(“OK”).
- Immediately
- 5 seconds
- 5 minutes
- 30 minutes
- 2 hours
- 5 hours
- 10 hours
- 10 hours (in addition to the previous)
Getting started
First, build a webhook consumer for Jam’s webhook agent to call. You can deploy your own HTTP server, or use a function platform like Netlify Functions, Vercel Functions, or Cloudflare Workers. For testing, services like RequestBin work well. In addition, you can also use no-code/low-code tools such as Zapier and n8n. Once your consumer accepts requests, configure the webhook for your workspace.- Zapier
Zapier is a no-code automation platform that connects your favorite apps (like Gmail, Slack, and Google Sheets) so they can work together with Jam via webhooks.This is an example of how to set up a webhook to notify Slack whenever someone records a Jam via a Recording Link.
You can use this template and follow the steps below:\
You can use this template and follow the steps below:\
Go to Zapier and create a new automation called "Zap"
Go to your Jam workspace and create a webhook for jam.created with the Zapier URL
Add next step, flow controls > Paths
Select “Origin,” “Exactly matches,” and “recording_link” to trigger Slack only for incoming Recording Links Jams.\

A minimal webhook consumer
Deployed on Netlify, a basic consumer looks like this:Creating a webhook
In the Jam dashboard, go to Settings → Integrations → Webhooks → Manage. From there, you have two ways to set up an endpoint. Manual endpoint setup- Click Add Endpoint.
- Enter your endpoint URL
- Select the events to subscribe to (currently
jam.created). - Confirm creation.
- Select Intercom Fin from the Webhook dropdown.
- Paste the URL provided by Intercom.
- Subscribe to
intercom.recorder.recordedandintercom.recorder.opted_out. - Confirm creation.
WEBHOOK_SECRET (or whatever name fits your stack) and use it to verify incoming requests.
The webhook is enabled by default. Capture a jam to test it.
Webhook Portal
The Webhook Portal (also under Settings → Integrations → Webhooks) gives you operational visibility into every endpoint:- Delivery logs for each attempt, with success and failure status.
- Replay for failed deliveries so you can re-fire a payload after fixing your consumer.
- Signing secret for verifying request authenticity.
- Success rate and delivery statistics over time.
- Full payload inspection, including headers and body, for any past delivery.
Webhook payload
The payload arrives as JSON over HTTPS with these headers:| HTTP header | Description |
|---|---|
Jam-Delivery | A UUID (v4) that uniquely identifies this delivery. |
Jam-Event | The event name. Currently always jam.created. |
Jam-Signature | HMAC-SHA256 signature of the raw request body, hex-encoded. |
jam.created body
| Field | Type | Description |
|---|---|---|
jamId | string | Unique ID of the Jam. |
jamUrl | string | Shareable URL where the Jam can be viewed. |
teamId | string | ID of the workspace the Jam belongs to. |
type | string | One of video, screenshot, sessionReplay. |
createdAt | string | ISO 8601 timestamp when the Jam was created. |
title | string | Jam title. |
description | string | Jam description. May be empty. |
author | object | The user who captured the Jam. Includes email (required) and name. |
media | object | URLs for the captured media. Includes videoUrl, screenshotUrl, thumbnailUrl where applicable. |
systemInfo | object | Capture environment. Includes browser (name, version), os (name, version), and screen (width, height). |
jamId, jamUrl, teamId, type, createdAt, title, author, media, systemInfo.







