extraction.completed, checkout.failed, handoff_to_human).
Unlike spans (which represent units of work), custom events are lightweight annotations you can use for:
- Filtering and clustering runs by what happened
- Tracking outcomes and key checkpoints
- Creating high-signal analytics without parsing span inputs/outputs
Emitting custom events
Emit events from inside a span context (for example, insideobserve() / an @observed function) so the event attaches to the correct trace.
- TypeScript
- Python
Laminar.event(options)Best practices
- Keep event
namevalues stable and low-cardinality (don’t include request IDs). - Put details into
attributes(and avoid sensitive data). - Emit events inside a span context so they attach to the correct trace.
Viewing events
In the Laminar UI, open Events to browse and filter event streams. You can also:- Extract events from traces automatically with Semantic Events
- Group similar events together with Clusters
- Query custom events in the SQL Editor using the
eventstable
