Skip to content
Docs menu Operate

Troubleshooting

The usual reasons events do not arrive, and how to check each one

On this page

No events in Live events#

  1. Check the request. Open the browser’s developer tools, go to Network, and reload the page. Look for a POST to https://events.sfere.io/api/s/p (page) or /api/s/t (track).
    • No request at all: the SDK did not load. Check the console for errors and see the next sections.
    • A request with an error in the response: read the body. The browser endpoint answers HTTP 200 even on failure and puts the reason in the body.
  2. Check the key. The write key must belong to the source you are looking at in Live events, and must be the complete keyId:secret value.
  3. Check the host. data-host or host must be exactly https://events.sfere.io, with no path.
  4. Check your tag manager. If you installed through Google Tag Manager, confirm in Preview that the Sfere SDK tag fired and that the container is published.
  5. Select Refresh. Live events does not update on its own.

Content Security Policy errors#

The console shows Refused to load the script or Refused to connect. Add the Sfere hosts to your policy:

HTTP
Content-Security-Policy: script-src 'self' cdn.sfere.io; connect-src 'self' https://events.sfere.io;

Requests blocked by an ad blocker#

Some browser extensions block analytics requests. Test in a private window with extensions turned off. Events from visitors who block requests are not received, which is why server-side events matter for purchases.

Events counted twice#

  • The SDK is loaded twice: once in the page head and once in Google Tag Manager, or the React provider plus the script tag. Keep one.
  • Both the JavaScript SDK and the Laravel TrackPageViews middleware send page views. Keep one.
  • The same purchase is sent from the browser and the server without a shared sfere_dedup_id. Use the same value on both sides.

Server events all show the same IP#

Every server event reports your server’s IP when it is sent with a browser key or without the customer’s context. Use a server key and pass context.ip and context.userAgent from the customer’s request. The Node.js and Laravel SDKs do this for you.

No click IDs on events#

  • The landing URL did not contain a click parameter such as gclid or fbclid.
  • Ad pixels set their cookies after the first event, so the first event on a landing page can lack cookie-based IDs. Later events carry them.
  • The visitor’s browser blocks cookies.

Storage blocked#

The SDK never fails when storage is blocked. It keeps IDs and the session in memory for the current page and keeps sending events. Errors in the console come from Content Security Policy or the network, not from storage.

Still stuck#

Contact us with the source name, the time of a test event in UTC, and a screenshot of the Network request.