Troubleshooting

Nothing arriving, events arriving late, and uniques that look wrong.

Nothing is arriving

  • Consent. On a website nothing is stored and nothing is sent until consent(true). No error appears anywhere: the page works and the dashboard stays empty.
  • The key. A key that does not resolve to a source is dropped at ingest. Check for a placeholder that was pasted and never replaced.
  • The host. Requests go to POST /v1/e at the ingest origin. A wrong host, a CNAME that is not pointed yet, or a CORS failure all look identical from the dashboard.
  • A blocker. Content blockers stop the browser tag on the reader's own machine. Desktop, mobile and server clients are unaffected, so a website with nothing and an app with events is usually this.

Events arrive late

  • time is stamped by the client and is what every chart buckets on. An event that reaches us on Friday and happened on Tuesday is counted on Tuesday.
  • App and desktop clients queue to disk. A laptop that was offline, or a process the OS killed, sends on the next launch, which can be days later. This is designed for and is not a fault.
  • So yesterday's number can rise tomorrow. A window that ends in the last day or two is still filling in.

A card is empty

  • An attribute nobody writes. Grouping or filtering on a key no event carries is not an error: it matches nothing and the card is blank. The pickers only offer keys seen in the window you are looking at, so widen the range before assuming the key is wrong.
  • A severity filter. “Errors and worse” means 17 and above. An event your logger calls warning is 13 and is outside it.
  • The range. Every query is bounded by the board’s window. A weekly job shows nothing in a window of a day.

Uniques look wrong

  • A unique is one anonymous id within one source. The same person on your site and in your app is two uniques, and that is the correct answer.
  • Sources are never linked to each other and never merged. Nothing is inferred from an address, a device or a coincidence in timing.
  • To count one person once across sources, call identify() with the same id on each. That is the only thing that joins them.
  • Never add uniques from two sources together. Adding two counts of distinct ids gives a number that is larger than the truth by however many people used both.