Emit at the outcome
Record the event only when the service knows the final status, duration, and business identifier.
Name the grain
One row per request, job, payment attempt, or durable milestone prevents accidental double counting.
Bound cardinality and privacy
Prefer route templates and stable IDs. Exclude raw URLs, emails, prompts, payloads, credentials, and stack traces.
Complete contracts
Choose the outcome your service owns
user_signed_upWhich signup cohorts activate and retain?
A durable account-entry event with acquisition and plan context. Keep identity pseudonymous and capture marketing attribution only after privacy review.
- Grain
- One accepted signup per user and account.
- Fields
- 7 documented
product_milestone_completedWhich accounts reach the durable moments that define activation?
A generic milestone envelope for stable product outcomes such as connecting a source, running a first query, or publishing a dashboard.
- Grain
- One completed milestone per actor, account, and occurrence.
- Fields
- 8 documented
api_request_completedWhere do errors and slow requests affect customers?
A terminal request event with route templates instead of raw URLs, bounded error categories, and latency measured at the service boundary.
- Grain
- One completed API request.
- Fields
- 10 documented
llm_request_completedWhat does each successful AI workflow cost and how well does it perform?
A terminal model-call event with model, tokens, latency, allocation cost, and tool outcome—without prompts or generated content.
- Grain
- One completed model-provider request.
- Fields
- 10 documented
background_job_completedWhich jobs fail, retry, wait, or run slowly?
A terminal job event that records the final outcome and attempt count once, avoiding the overcounting caused by one row per retry.
- Grain
- One terminal outcome per logical job.
- Fields
- 11 documented
invoice_payment_completedWhich billed amounts succeed, fail, or recover?
A payment outcome event that keeps provider identifiers pseudonymous and separates billed amount from recurring-revenue definitions.
- Grain
- One terminal payment attempt.
- Fields
- 9 documented
webhook_delivery_completedWhich destinations fail permanently, which status codes recur, and which deliveries recover after retries?
A terminal delivery log event with attempt_count, final status_code, response_body_bytes, and bounded content type—but no customer URL, request headers, authorization, raw response body, or payload.
- Grain
- One terminal outcome per logical webhook delivery.
- Fields
- 11 documented
incident_impact_observedWhich accounts and workflows were affected during an incident?
A bounded impact observation that connects a declared incident to a customer workflow without copying request payloads into the incident record.
- Grain
- One affected operation associated with a declared incident.
- Fields
- 9 documented
authentication_attempt_completedWhich authentication methods, clients, and risk categories are producing failures or suspicious bursts?
A terminal sign-in outcome with bounded method, result, and risk fields. It deliberately excludes credentials, tokens, raw IP addresses, and free-form provider errors.
- Grain
- One completed authentication attempt.
- Fields
- 8 documented
browser_performance_observedWhich routes, releases, and device classes have degraded user-visible performance?
A sampled browser measurement with a named metric, numeric value, route template, and release context. Raw URLs, user agents, and DOM content stay outside the event.
- Grain
- One sampled browser metric observation.
- Fields
- 8 documented
database_operation_completedWhich operation fingerprints, releases, and database roles are slow or failing?
A completed database operation represented by a reviewed fingerprint and coarse operation metadata. SQL text, bound values, credentials, and customer records are excluded.
- Grain
- One completed application-owned database operation.
- Fields
- 9 documented
kubernetes_workload_observedWhich workloads, clusters, and releases are restarting, unavailable, or resource constrained?
A periodic workload snapshot with normalized Kubernetes coordinates and aggregate state. Pod logs, environment variables, secret names, and annotations are excluded.
- Grain
- One workload snapshot per cluster, namespace, and interval.
- Fields
- 8 documented
ai_agent_run_completedWhich agent versions complete the intended task, require handoff, loop, or fail?
A terminal agent-run outcome with versioned workflow, tool summary, cost, and reviewed task result. Prompts, completions, tool arguments, and retrieved content are excluded.
- Grain
- One terminal outcome per logical agent run.
- Fields
- 10 documented
agent_tool_authorization_decidedWhich agent tool actions are allowed, denied, or routed to human approval?
A policy decision recorded before a consequential agent tool call. It captures bounded tool, risk, decision, and policy fields while excluding prompts, arguments, results, credentials, and customer content.
- Grain
- One final authorization decision per logical tool-call attempt.
- Fields
- 12 documented
feature_rollout_evaluatedHow do rollout cohorts differ in adoption, reliability, and customer outcomes?
A versioned feature assignment record that makes exposure rules queryable without copying targeting expressions or personal attributes.
- Grain
- One effective feature evaluation per actor, feature, assignment version, and material change.
- Fields
- 9 documented
agent_tool_call_completedWhich tools fail, retry, loop, or add latency before an agent reaches a useful outcome?
A bounded terminal tool-call event for agent reliability analysis. Keep arguments and results in the specialist trace system and retain only approved categories and correlation identifiers.
- Grain
- One completed tool-call attempt within an agent run.
- Fields
- 11 documented
rag_retrieval_evaluatedWhich retrieval and prompt versions produce relevant context and grounded accepted answers?
A versioned RAG evaluation event that separates retrieval scores, answer review, latency, and cost without storing source text, prompts, or generated answers.
- Grain
- One evaluator result per eligible query, retrieval version, evaluator, and candidate run.
- Fields
- 11 documented
subscription_changedHow much recurring revenue is new, expanded, contracted, churned, or reactivated?
A revenue movement event emitted from committed billing state. Store normalized plan and movement values rather than invoice bodies or payment-provider payloads.
- Grain
- One committed recurring-revenue movement per account, subscription, and effective change.
- Fields
- 10 documented
usage_meter_recordedWhich accounts are approaching a quota, and can metered usage be reconciled to the billing ledger?
An idempotent usage-meter record with quantity, unit, meter version, and billing period. Keep raw source payloads and customer content outside the analytical event.
- Grain
- One accepted usage increment per idempotency key and meter.
- Fields
- 10 documented
telemetry_delivery_observedAre application events arriving completely, promptly, and without retry amplification?
An application-owned observation of a telemetry delivery attempt. Use a separate sink or bounded sample to avoid creating a recursive event for every delivery.
- Grain
- One sampled or aggregated observation per delivery attempt or delivery window.
- Fields
- 11 documented
Treat privacy labels as a review queue
“Pseudonymous” identifiers can still be personal data when they relate to a person. “Review” fields can expose acquisition or provider context. Apply your own retention, access, consent, deletion, residency, and contractual requirements before production instrumentation.