Skip to content
AetherDocs0.1.0-alpha.0

Signals

A signal is one thing that happened — a page viewed, an order placed, an agent running a tool. Aether checks it, adds context, and files it in the right place.

Event types

Every signal carries a type from one registry shared by every SDK and the backend — a little over 400 types across about two dozen families. Unknown types are dropped at the SDK with a debug warning, never mislabeled.

FamilyExamples
Core interactionpage, track, conversion
Identityidentify
Consentconsent grants and revocations
Commerceproduct_viewed, cart_item_added, checkout_started, order_completed, payment_completed
Journeysjourney_started, journey_checkpoint, journey_completed, journey_abandoned
Agentsagent_task_created, agent_tool_called, agent_outcome_recorded
Web3wallet, transaction

Anatomy of a signal

● json
{
  "id": "evt_9f2c…",
  "type": "order_completed",
  "timestamp": "2026-01-14T18:02:11.401Z",
  "sessionId": "…",
  "anonymousId": "…",
  "userId": "usr_18f2",
  "properties": { "orderId": "ord_492", "total": 84.0 },
  "context": {
    "surface": "web",
    "schemaVersion": "1.0.0",
    "sequence": { "event": 42 },
    "consent": { "analytics": true },
    "journey": { "journeyId": "…", "journeyStatus": "continued" }
  }
}
idClient-generated; used for idempotent dedup
context.sequenceDetects gaps and reordering per client
context.surfaceWhich SDK or plane emitted it
context.consentThe purposes granted at capture time
▲Raw is not confirmedClient heuristics (like a likely checkout) travel with confirmation.confirmed: false until the server confirms them.