Skip to main content
A signal is a single measurement a collector emits in flight; an observation is the persisted Operata record that ties one or more signals to a contact. Signals flow; observations are stored.

How it works

Each of the three collectors emits a different class of signal.
  • The Agent Experience Collector emits signals for headset audio levels, network quality, microphone state, page focus, and softphone CTI events — the agent-side measurements no central service can see.
  • The Cloud Collector emits signals derived from Contact Trace Records (CTRs), Contact Lens, and contact-flow logs.
  • The Cloud Orchestrator emits signals from each synthetic Heartbeat run.
A signal is small, structured, and timestamped. It becomes meaningful only when joined to the contact it belongs to. The lifecycle runs in three stages. A collector emits a signal. Operata ingests the signal, joins it to the contact, and persists it as part of an observation. Downstream consumers — the dashboard, EventBridge events, and the contact endpoints — read observations, never raw signals. Two signals from two collectors covering the same moment of the same contact land as one observation with two contributing sources.

Why Operata stores observations, not signals

The split keeps the wire format separate from the storage format. Redaction, deduplication, late-arrival reconciliation, and per-tenant validation all run between the two. The value a collector reports is not the value a consumer reads: a signal can be dropped, deferred, or merged; an observation is the post-processing result a consumer can rely on. The split also makes the data model honest about latency. Some signals arrive within seconds; Amazon Connect CTRs in particular can lag the contact end by minutes. Storing observations means a query for a recent contact returns a coherent partial view that fills in as more signals arrive, instead of a stream of half-correlated events.