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….

  1. 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_.
  2. Reload Setup. The page does not refresh on its own. Use the site for a minute, then reload Setup.
  3. 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.
  4. Check consent. With consent: 'wait', nothing is recorded until your banner calls Flamio.consent('granted'). The console then shows [Flamio] Consent granted, recording started.
  5. Check the requests. In the Network panel, look for requests to api.flamio.org:
    • Blocked by a Content Security Policy — add https://api.flamio.org to connect-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 urlAllowlist and urlBlocklist.
  6. 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.com does not cover www.example.com. An entry such as *.example.com covers all subdomains, but not example.com itself.

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.

  1. Fix the setting in Settings > Project settings.
  2. 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: sampleRate below 1 records only part of the visits.
  • Concurrency limit: when maxConcurrentSessions sessions 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 urlAllowlist or urlBlocklist exclude.
  • 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.identify was called before Flamio.init. Calls before init are ignored — call identify after it.
  • The traits have no name or email. The Visitor column shows name, then email.
  • 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 after Flamio.consent('granted').

See Identify signed-in users.

Text you masked still appears

  • maskTextContent: true does not mask recordings in 0.9.0. Use the flamio-mask class or maskSelectors.
  • 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.

See Control what is recorded.

Parts of a replay are empty

  • Elements with flamio-block, data-flamio-block or a blockSelectors match are replaced with an empty box.
  • The content of cross-origin iframes, such as payment forms or embedded videos, and of canvas elements 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.

Other questions