Web SDK
Troubleshoot the web SDK
Fix the common web SDK problems — no sessions arriving, visitors missing, anonymous visitors, unmasked text and empty replay areas.
Start with the browser: add debug: true to Flamio.init, open your deployed site, and keep the browser console and Network panel open.
No sessions arrive
Flamio On-Live > Setup stays on Waiting for first data….
- Check the project and the key. The project selected in the sidebar switcher must be the one whose key you installed. A key from another project sends its sessions there. The key must be the one Flamio showed when you generated it, starting with
flm_. - Reload Setup. The page does not refresh on its own. Use the site for a minute, then reload Setup.
- Check that the SDK starts. With
debug: true, the console shows[Flamio] Initialized. If it shows nothing from Flamio:- The snippet is not in the deployed build, or does not run on this page.
- The page is served over plain HTTP. The SDK needs HTTPS, or
localhost. - The browser is older than Chrome 92, Firefox 95 or Safari 15.4.
- This visit is outside your
sampleRate. - Flamio refused the key in this browser recently. See Recording stopped after a settings change.
- Check consent. With
consent: 'wait', nothing is recorded until your banner callsFlamio.consent('granted'). The console then shows[Flamio] Consent granted, recording started. - Check the requests. In the Network panel, look for requests to
api.flamio.org:- Blocked by a Content Security Policy — add
https://api.flamio.orgtoconnect-src. See Content Security Policy. - Status 401 or 403 — Flamio refused the key. Continue with the next step.
- No requests at all on a page that should record — check your
urlAllowlistandurlBlocklist.
- Blocked by a Content Security Policy — add
- Check the project settings. Open Settings > Project settings:
- Flamio On-Live is still on and the API key is not revoked.
- Allowed domains lists every host the SDK runs on, or is empty to allow any. Hosts must match exactly:
example.comdoes not coverwww.example.com. An entry such as*.example.comcovers all subdomains, but notexample.comitself.
See also Project settings.
Recording stopped after a settings change
When Flamio refuses your project key — the key was revoked, On-Live was turned off, or the site's domain is missing from Allowed domains — the SDK stops sending from that browser for up to an hour. It stays off even after you fix the setting.
- Fix the setting in Settings > Project settings.
- Test in a new private browser window, or clear the stored site data for your site in the browser.
Visitors' browsers start sending again on their own within the hour.
Some visitors are not recorded
- Sampling:
sampleRatebelow1records only part of the visits. - Concurrency limit: when
maxConcurrentSessionssessions are already recording, new visitors are not recorded. - Consent: visitors who decline, or never answer your banner, are not recorded.
- URL rules: nothing is recorded on pages your
urlAllowlistorurlBlocklistexclude. - Browser: the SDK does not run in browsers older than the supported versions, or on pages served over plain HTTP.
A signed-in visitor shows as Anonymous
Flamio.identifywas called beforeFlamio.init. Calls beforeinitare ignored — callidentifyafter it.- The traits have no
nameoremail. The Visitor column showsname, thenemail. - The traits are larger than 4 KB as JSON. The SDK then drops them all and sends only the user ID.
- With
consent: 'wait', the identity is sent only afterFlamio.consent('granted').
Text you masked still appears
maskTextContent: truedoes not mask recordings in 0.9.0. Use theflamio-maskclass ormaskSelectors.- Rules apply only to sessions recorded after you deploy them. Older recordings do not change.
- The selector must match the element that holds the text, or one of its ancestors. Test it in the console:
document.querySelectorAll('.your-selector'). - Text in rich-text editors (
contenteditable) is page text, not an input value. Mask it like other text.
Parts of a replay are empty
- Elements with
flamio-block,data-flamio-blockor ablockSelectorsmatch are replaced with an empty box. - The content of cross-origin iframes, such as payment forms or embedded videos, and of
canvaselements is not recorded. - Pages your URL rules exclude are not recorded.
- Recording pauses while a tab is hidden or untouched, so nothing changes in the replay for that time.