SaaS Tracker Docs

Ingest API event schema

Events sent to the Ingest API follow a fixed schema. Only the fields listed below are read and stored; extra fields are ignored (no error).

Example payload (minimal)

{
  "event": "page_view",
  "user_hash": "a1b2c3d4e5f6789012345678901234567890123456789012345678901234abcd",
  "customer_org_id": "org_123",
  "path": "/dashboard/"
}

Example payload (all optional fields)

{
  "event": "feature_used",
  "user_hash": "a1b2c3d4e5f6789012345678901234567890123456789012345678901234abcd",
  "customer_org_id": "org_xyz",
  "path": "/settings/",
  "plan": "premium",
  "environment": "production",
  "ts_epoch": 1738000000,
  "session_id": "550e8400-e29b-41d4-a716-446655440000"
}

(user_hash must be exactly 64 characters; the examples above use a 64-character hex string.)

Field reference

Validation and errors

path

path is required for page views and for page-level analytics (Pages, Top pages, Page details). Many reports depend on it. If you send events without path, those reports will have no or incomplete data. When provided, path must start with / (e.g. /, /dashboard, /settings).

Paths are treated as case-sensitive. If your application uses dynamic IDs (e.g. /tasks/123/edit), consider normalizing paths client-side for meaningful page aggregation.

Extra fields

Extra fields are ignored and not stored. They are not available in analytics queries. Only the whitelisted fields above are persisted; the request still succeeds.

customer_org_id and B2B

ts_epoch

Optional. If you omit ts_epoch, the server records the event with the time at which it received the request. You only need to send ts_epoch when the event time should differ from receive time (e.g. batched or backfilled events). The field name is ts_epoch (Unix seconds), not ts or timestamp.

session_id

Batch requests

The API accepts a single event per request (one JSON object per POST). An array of events is not supported; use one request per event. For high-volume systems, send events asynchronously and in parallel rather than batching them in a single request.


Next: Data model – Entities or Overview.