Server SDKs
The server SDKs send events from your backend to Hober — the server-side counterpart of the client SDKs' track(). Events drive segments, journey triggers, and in-app display rules; see Server-Side Event Tracking for the full API semantics.
Four languages, one behavior contract (every SDK passes the same conformance suite):
- Go — Go 1.22+, standard library only
- Node.js — Node ≥ 18, zero runtime dependencies
- Python — Python ≥ 3.9, standard library only
- Java — Java 11+ HttpClient, zero runtime dependencies; usable from Kotlin and Scala
Availability: the packages (npm, PyPI, Maven Central, Go module) publish with Hober's public launch. The API documented here is final and conformance-tested — contact us if you want early access before the registries go live.
What every SDK does
track(event)— queue a named event with anexternalId(your user ID) and properties. Hober's registry resolves theexternalIdto a subscriber.identify(anonymousId, subscriberId)— merge pre-signup activity into a subscriber.- Batching — events queue in memory and ship in batches of 100 or every 5 seconds (both configurable);
flush()/close()drain synchronously. The queue holds 10k events, thentrackfails fast rather than blocking or growing unbounded. - Retries — 429 (honoring
Retry-After) and 5xx retry with exponential backoff and jitter, 4 retries by default. Other 4xx are permanent and surface through the error callback; by default they are dropped silently — tracking never takes your process down. - Idempotency — every event gets a UUIDv7 idempotency key unless you supply one. Pass your own (outbox row ID, order ID) to make cross-process retries safe.
Authentication
Server SDKs authenticate with a server key (hober_srv_…), created in the dashboard under Settings → Server Keys. It is a secret — unlike the publishable client SDK key — so keep it in your environment, not your codebase.
Looking to send notifications from your backend? Use the REST API — the server SDKs are focused on event ingestion.