Observability should answer whether the SDK was created, whether the supervisor started, whether it became online, why it disconnected, and whether the application released it correctly.
Recommended event fields
Section titled “Recommended event fields”| Field | Example | Notes |
|---|---|---|
sdk_version | 1.0.0 | Always record |
platform | android | Use the wrapper platform, not marketing category |
os_version | Android 15 | Avoid device serials |
architecture | arm64-v8a | Useful for native loading issues |
lifecycle_event | connected | Create, supervisor-started, connected, disconnected, closed |
disconnect_reason | Network | Stable public reason |
error_code | Numeric or wrapper enum | Prefer structured value |
retryable | true | Copy from the SDK error model |
background_mode | enabled | Platform configuration only |
Never log
Section titled “Never log”- Full application API keys.
- Consent receipts or consent-window callback URLs.
- Runtime tokens or internal service responses.
- Private signing material.
- Registry authentication tokens.
- User personal content or custom device identity seeds.
If correlation is necessary, use an application-owned non-reversible identifier approved by your privacy and security teams. Do not invent a hash of sensitive SDK material.
Event order
Section titled “Event order”Useful lifecycle order looks like:
consent.acceptedsdk.createdsdk.supervisor_startedsdk.connectedsdk.disconnected reason=Network retryable=truesdk.connectedsdk.closedDo not emit connected immediately after connect() returns. That produces misleading uptime and reward metrics.
Platform logging
Section titled “Platform logging”- Android debug output uses logcat SDK tags.
- iOS wrapper errors and callbacks should be routed into the application's logging abstraction.
- Node/Electron events run on the JavaScript event loop; avoid dumping error objects that contain configuration.
- .NET should contain callback exceptions and log typed SDK errors.
- C consumers must copy the last-error string immediately, then sanitize it before storage.
Production debug mode
Section titled “Production debug mode”Debug mode may increase detail and should be disabled by default. Enable it only for a bounded diagnostic session requested by support, then reproduce, collect sanitized output, and disable it again.