The LUX Quick Start Guide is the place to start to get LUX up and running. Most of the time following the instructions in that guide works great and you'll start seeing LUX data in a few minutes. But sometimes it can get more complicated. Maybe you're loading the LUX snippet with a tag manager and you're not sure if the inline script and lux.js are being loaded in the right order. Maybe you're using a browser that might not support the standard performance APIs. Maybe your code to track User Timing marks and measures just got deployed and you're not sure if it's working.

Quick troubleshooting tips

  1. Disable your ad blocker.
  2. Make sure the domain is added to your LUX settings. Changes to the domains setting can take up to 30 minutes to propagate.
  3. Check for JavaScript errors in your DevTools console.
  4. Call LUX.forceSample() in your DevTools console and reload the page.
  5. If LUX.auto is set to false, make sure that LUX.send() is called.
  6. Call LUX.getDebug() in your DevTools console and check for the "sending main LUX beacon" message.
  7. Beacons can take up to 10 minutes to show in the LUX Live dashboard, and up to 30 minutes to show in other dashboards.

Using LUX.getDebug() to troubleshoot

The first step is to load your site in a browser, open the developer console, and call LUX.getDebug(). Here's what that looks like in Chrome:

The debug messages above confirm that lux.js was loaded, the session's data was sampled, a User Timing mark was recorded, and the LUX data beacon was sent.

Here are the debug messages for the same page from Safari:

The main differences are the messages that indicate Long Tasks and Paint Timing are not supported, which explains why you won't see values for Start Render, First Contentful Paint, First CPU Idle, and JS CPU Time in LUX for Safari.

A big hurdle when debugging LUX is sampling. If you've set a sample rate, you might not fall into the bucket that gets sampled. If that's the case, you'd see a debug message saying:

Sample rate = 50%. This session is NOT being sampled. The data will NOT show up in your LUX dashboards. Call LUX.forceSample() and try again.

In addition to informing you that the session is NOT being sampled, this message suggests calling LUX.forceSample(). The LUX.forceSample() function alters the session cookie such that all subsequent pages are sampled. Note that the session cookie expires after 24 hours or 30 minutes of inactivity, so you might need to call it again.

How LUX sampling works

LUX sampling works at two layers: on the client and during beacon collection. This flow chart explains the points at which a beacon may be rejected.

When troubleshooting LUX, the most basic actions to confirm are that lux.js is loaded, the session is sampled, and the main LUX beacon is sent. It's likely that other questions you have about your LUX deployment are also answered by reviewing the debug messages. If you still have questions after trying these techniques, contact support@speedcurve.com.

Did this answer your question?