Skip to main content
The SDK fails soft. A decision that cannot reach the backend returns your fallback action. A dropped event is logged rather than thrown, and an exception inside SDK code is caught before it reaches your game loop. Everything worth knowing surfaces through one channel.
Samples~/BasicIntegration/Assets/Scripts/GuideExamples.cs
OnError always fires on the Unity main thread, so handlers may touch Unity APIs. A throwing handler is caught and logged. Unsubscribe with -= when the subscriber is destroyed.

Severities

Warning means degraded but recovered: a single fallback, a dropped event. Log it and watch the rate. Error means a failure to investigate: authentication failed, ingestion gave up, an unhandled SDK exception. Info is reserved.

Codes worth knowing

Branch on PioError.Code against the PioErrorCodes constants, never on message text.

What reports automatically

No try/catch needed around SDK calls. Fallbacks, timeouts, auth and ingestion failures, and internal exceptions are all captured and surfaced. Each is also sent to PIO as an sdk_error event (code, severity, message, normalised stack, no PII), de-duplicated by stack hash. There is no third-party crash reporter in the SDK.

Debugging tools

PIO/Diagnostics/Inspector and PIO/Diagnostics/Event Log cover Play mode; ShowDebugOverlay puts a live panel on device builds. Editor tools has the tour.