A custom recording domain connects your website or web app to Jam so Recording Links capture console logs, network requests, and user interactions alongside screen recordings. Without a custom domain, screen recordings still work, but developer logs are not included. Connecting a custom domain allows Jam to: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.
- Serve recording links from your domain
- Capture console logs and network requests
- Attach developer logs directly to Jams
- Support Intercom-requested Jams
Setup
Install the Recorder and Capture scripts
Jam’s Recorder and Capture scripts must be served from the same origin as your site so that recordings and logs are correctly associated.First, find your Team ID in Jam. Go to Settings → SDK, where your correct Team ID is pre-filled.Paste the following snippet into the What each script does:
<head> tag of your site. For best results, add it to all pages, or at minimum on the URL that will host your recording route.recorder.jsdisplays the recording interface when a Recording Link is opened, and lets users record directly from your site.capture.jscaptures console logs, network requests, and click and key interactions while a recording is in progress.
<script> tags as early as possible in <head>. Using async, defer, or lazy import() can skip early logs and requests.Update your Content Security Policy (if applicable)
If your site does not define any Content Security Policy directives, skip this step.If your site sets a CSP with
frame-src or script-src, add *.jam.dev to both. Otherwise, the Jam scripts will be blocked.Verify your domain
After installing the scripts, verify your domain in Jam before connecting it. Verification checks that the scripts load and work correctly.
- Go to Settings → SDK.
- Click Verify.
- Paste the URL where the Jam scripts are installed (for example,
example.comorexample.com/recorder). - Click Check setup.
- The page is publicly accessible
- The URL does not redirect
- Query parameters are preserved
- Both the Recorder and Capture scripts are installed
Domain and subdomain behavior
In most cases, a recorder installed on the root domain (example.com) can capture events from subdomains (sub.example.com), and vice versa.
Safari limitation: In Safari, logs are only captured when the recorder and capture scripts run on the exact same subdomain. If Safari support is important for your team, install the recorder on the same subdomain where your users are active.
Current limitations
| Limitation | Details |
|---|---|
| Browser support | Fully supported in Chrome (including Incognito) and Firefox (including Private Windows). Supported in most Safari windows. Not supported in Safari Private Windows. |
| Iframes | If the Capture script is installed inside an iframe, top-level page logs will not be captured. |
| Script loading | Scripts loaded with async, defer, or lazy import() may miss early console logs and network requests. |
| Verification required | Installing scripts alone is not sufficient. You must verify your domain in Settings → SDK. |
FAQ
Can I put the Recorder and Capture scripts on different pages?
Can I put the Recorder and Capture scripts on different pages?
Yes. The
<meta name="jam:team" /> tag must be present on any page where recorder.js is installed. It is optional on pages that only include capture.js. Logs are only captured from pages where the Capture script is running.Can I programmatically create Recording Links?
Can I programmatically create Recording Links?
Not yet. Jam plans to expose an API for creating Recording Links programmatically (for example, from Slack, Zendesk, or directly within your app).
Can I customize the recorder UI?
Can I customize the recorder UI?
Not currently. Contact Jam if you have specific customization requirements. This is an area under active evaluation.
Can I mix Jam recordings with my own recording infrastructure?
Can I mix Jam recordings with my own recording infrastructure?
No. Jam’s Recorder and Capture scripts must be used together. Due to browser storage and cross-origin restrictions, partial integrations or mixing with external recording systems are not supported.
If verification fails
Common causes of verification failure:- Team ID mismatch
- Scripts not installed on the target URL
- Scripts blocked by your CSP
- URL requires authentication
- URL redirects before scripts load
- Query parameters are stripped during redirect
- Recorder and Capture scripts are on different domains