Skip to main content
When data does not appear, the cause is usually a wrong key or project ID, an SDK that starts too late, or a process that exits before the SDK sends its events. Check these in the order below.

Check whether Squasher received an event

  1. Open your project and select Settings in the sidebar, then the Setup tab.
  2. Under 3. Verify a signal, select Check again.
Squasher looks for an error or a log event from the last 24 hours. The result is one of these:

Check the key and the project ID

  • The ingest key starts with sq_pk_.
  • SQUASHER_PROJECT_ID is the Project ID on the Setup page. To see it, select Manual under 2. Connect your application.
  • The key and the project ID come from the same project.
  • The variables are set where the app runs, not only on your computer.
If the key is wrong, the SDK prints [squasher] Invalid API key (401). Events will be dropped. It then stops sending until the app restarts. If apiKey or projectId is empty, the SDK starts in disabled mode and sends nothing.

Turn on debug output

Set SQUASHER_DEBUG=1 where your app runs, or pass debug: true to init. The debug option wins over the variable. In the browser, set window.SQUASHER_DEBUG = "1" before you call init. On Cloudflare Workers, pass debug: true, because the SDK does not read the Worker env object.
The Node.js SDK then prints each result, for example:
In debug mode, the SDK also sends every event, without sampling.

Send events before the process exits

The Node.js SDK sends events in batches: every 5 seconds, or when 25 events wait. A short script or a serverless function can exit before the batch goes out. Call flush() before it exits:

Check where the SDK starts

  • Node.js: call init before you import the rest of your app.
  • Next.js: call init in instrumentation.ts, and only when NEXT_RUNTIME is nodejs. The SDK does not capture errors on the Edge runtime. In Server Components and Server Actions, catch the error and call captureError. See the Next.js SDK.
  • Browser: call init when your app starts, before the code that can throw.

Find logs that are not issues

Only error-level logs become issues: a severity number of 17 or more, or the severity text error or fatal. Other logs appear in Logs, not in Issues. Some hosts send their logs in batches, so a log drain can be a few minutes late.

Fix OpenTelemetry exports

  • Send to https://ingest.squasher.ai and put the ingest key in the x-squasher-key header.
  • Squasher accepts OTLP over HTTP, as protobuf or JSON, and OTLP/gRPC at the Collector URL on port 443. If your exporter uses gRPC by default, point it at that Collector URL; use OTEL_EXPORTER_OTLP_PROTOCOL=http/protobuf only when sending to ingest.squasher.ai.
  • Set deployment.environment.name as a resource attribute, so issues get the right environment.
See OpenTelemetry for each language.

Read minified stack traces

Squasher applies the source maps that you upload when you open an issue. If a frame stays minified, the issue page tells you why under the frame: the event has no release, no map is uploaded for that release, no map name matches the file, or the map is larger than 24 MB. Set a release in the SDK and upload the maps of that build with the same release.

Check host metrics

If you installed the Squasher collector for host metrics, run the local check first, then the end-to-end check:
Add --containers to verify when the collector also collects Docker metrics. See Host and Docker metrics.

Next steps

Quickstart

Go through the setup again from the start.

Choose how to send data

Compare SDKs, log drains, and OpenTelemetry.