Skip to content

Common Issues

Symptom: No network requests to sdk.ttoolab.com in DevTools.

Possible causes:

  • Script tag missing or blocked
  • Content Security Policy blocks the SDK host
  • Tag manager trigger fires too late or not at all
  • Ad blocker or privacy extension blocks the script

How to investigate:

  1. View page source — confirm the <script> tag is present.
  2. Check DevTools → Console for CSP errors.
  3. Test in an incognito window without extensions.

How to fix:

  • Add the installation snippet from Installation.
  • Update CSP: script-src and connect-src must allow https://sdk.ttoolab.com.
  • In GTM, fire the tag on an early trigger (Consent Initialization or Page View).

Symptom: ttoolab.track() runs but no events in the dashboard or Network tab.

Possible causes:

  • Visitor has no active experiment assignments
  • Event called before SDK bootstrap completes
  • Invalid event name (empty or over 128 characters)
  • Network failure with empty retry queue

How to investigate:

  1. Check ttoolab.getAssignments() — must return at least one assignment.
  2. Check Network for POST /sdk/event — expect { "success": true }.
  3. Wrap track calls in ttoolab.ready().

How to fix:

  • Publish a running experiment that matches the current URL.
  • Use ttoolab.ready() before attaching event listeners.
  • Verify event names match goal configuration.

Symptom: Bootstrap returns hasActiveExperiments: false.

Possible causes:

  • Experiment not published or status is not running
  • URL rules do not match the current page
  • Traffic allocation excludes this visitor
  • Targeting rules exclude this visitor

How to investigate:

  1. Check experiment status in the dashboard.
  2. Compare current URL against URL rules.
  3. Inspect bootstrap response in Network tab.

How to fix:

  • Publish the experiment.
  • Adjust URL match type and pattern.
  • Increase traffic allocation to 100% for testing.
  • Clear assignment with ttoolab.clear() and reload to get a fresh assignment.

Symptom: Visitor is assigned but page looks unchanged.

Possible causes:

  • CSS selector does not match any element
  • Element loads after SDK applies changes (async content)
  • Wrong variant has no changes configured
  • Browser cache serves old page HTML

How to investigate:

  1. Check bootstrap response for experiments[].variant.changes.
  2. In DevTools, run document.querySelector("YOUR_SELECTOR").
  3. Confirm assigned variant in ttoolab.getAssignments().

How to fix:

  • Use stable selectors (#id, [data-testid]).
  • Wait for dynamic content or use custom_js changes carefully.
  • Verify changes are saved on the correct variant in the dashboard.

Symptom: Pixel works for developers but not for some users.

Possible causes:

  • Browser extensions block analytics/experimentation scripts
  • Brave/Firefox strict tracking protection

How to investigate:

  • Test with extensions disabled.
  • Check if ttoolab.min.js request is blocked in Network tab.

How to fix:

  • First-party proxy for the SDK script (advanced — TODO: confirm with the Ttoolab team).
  • Accept that some visitors will not be tracked (coverage bias).

Symptom: Old variant content appears after publishing changes.

Possible causes:

  • CDN or browser cache serves stale HTML
  • Bootstrap is not cached, but your page HTML is

How to investigate:

  • Hard refresh (Ctrl+Shift+R).
  • Check if a CDN caches HTML aggressively.

How to fix:

  • Purge CDN cache after major experiment changes.
  • Bootstrap responses use Cache-Control: private, no-store — assignment data is always fresh.

Symptom: Experiments work on first load but not after client-side navigation.

Possible causes:

  • SDK bootstraps once per full page load
  • URL changes without reload do not re-trigger bootstrap

How to investigate:

  • Navigate via client-side router and check if bootstrap is called again.

How to fix:

  • TODO: confirm with the Ttoolab team SPA re-bootstrap support.
  • For SPAs, prefer custom_event goals triggered by application code.

Symptom: Pixel does not load until consent is given, or stops after consent withdrawal.

Possible causes:

  • Consent management platform blocks scripts before consent
  • localStorage blocked in strict privacy mode

How to investigate:

  • Check CMP configuration and consent state.
  • Test localStorage availability in console.

How to fix:

  • Fire the Ttoolab GTM tag on the consent-granted trigger.
  • Load the pixel only after analytics consent if required by your policy.

Symptom: No ttoolab_exposure or ttoolab_conversion events in GTM/GA4.

Possible causes:

  • GTM events integration not enabled in Ttoolab
  • GTM container not loaded
  • No active experiment assignments
  • GA4 custom dimensions not registered

How to investigate:

  1. Check window.dataLayer after page load.
  2. Confirm integrations.googleAnalytics.gtmEventsEnabled is true in bootstrap response.
  3. Verify GTM triggers listen for ttoolab_exposure and ttoolab_conversion.

How to fix:

  • Enable GTM events in Ttoolab dashboard → Integrations.
  • Register ttoolab_experimentName and ttoolab_variationName as GA4 custom dimensions.
  • See Google Analytics.

Symptom: Webhooks not received or returning errors in the dashboard.

Possible causes:

  • Endpoint returns non-2xx status
  • Signature verification fails on your server
  • Endpoint timeout (> 30 seconds)
  • Webhook auto-paused after 10 consecutive failures

How to investigate:

  1. Send a test webhook from the dashboard.
  2. Check server logs for incoming requests.
  3. Verify signature computation matches Security.
  4. Check webhook status in dashboard (enabled vs auto-paused).

How to fix:

  • Return 200 quickly, process async.
  • Fix signature verification (use raw body bytes).
  • Re-enable auto-paused webhooks after fixing the endpoint.

Contact Ttoolab support through your dashboard or at your account’s support channel.

Include:

  • Project key (not secret keys)
  • Experiment key
  • Page URL
  • Browser and timestamp
  • Screenshots of Network tab (bootstrap and event requests)