Dashboards of reference
Pointers for an operator (or a contributor diagnosing whether their newly-added event is flowing) to find a recent product event in the running system. Each section names a destination, the access path, and which fields the destination carries.
The page is forward-compatible: the SaaS analytics section is a reserved placeholder so a future task can fill it in without restructuring.
Default forward adapter
- Adapter:
LoggingEventsForwardAdapter, source of record atlogging_events_forward_adapter.py. - Logger name:
product_events.forward(one structured JSON line per delivered event). - Status: Production — the adapter is wired as the default destination in deployed environments. The exact Cloud Logging filter for finding a specific event in the Cloud console is operator-managed per environment; confirm the live filter with the on-call operator for your target environment before relying on it for verification runs.
- Fields available per log line:
| Field | Description |
|---|---|
event_id | Server-assigned id (unique per persisted row). |
client_event_id | Client-generated id used for dedup. |
actor_user_id | Authenticated user id at ingest. null after the user is anonymized. |
actor_org_id | Org id, when present. |
event_name | Canonical event name (matches an entry on the registry). |
properties | The event's properties object — PII paths already hashed. |
occurred_at | Client-side timestamp (ISO-8601), clamped to received_at when missing/malformed. |
received_at | Server-side timestamp at ingest (ISO-8601). |
When the backend's right-to-delete cascade runs against the logging
destination, the adapter additionally emits a structured marker
(product_event_forward.deletion = "unsupported") so operators can
correlate the cascade with the destination's lack of a per-event
deletion API (see PII policy — Deletion).
Backend events table
The persisted store behind the channel is the frontend_events table
in the canonical backend database.
- Table:
frontend_events. - Status: Production — the table is provisioned in deployed environments. The recommended operator access path (read-replica query console, read-only role, or equivalent) is environment-specific; confirm with the on-call operator for your target environment.
- Indexed for:
event_name,actor_user_id,actor_org_id,received_at, plus a partial index for forward-pending rows and a unique constraint on(COALESCE(actor_user_id, 0), client_event_id)for dedup. See the backend data-model for the exhaustive index list.
SaaS analytics destination
- Status: Not configured yet.
No SaaS analytics destination (PostHog, Mixpanel, Amplitude, or equivalent) has been wired to the channel at the time of publish. The forward adapter contract supports plug-replacement (FR-021 of the backend spec); ops will choose a destination separately and wire it without changing the ingest surface.
This section is reserved at a stable URL so a future dx- task can
fill in the destination name, board/dashboard link, and field mapping
without restructuring the rest of the page.
See also
- Canonical event registry — to map a log line back to the event entry that documents what it means.
- Adding a new product event — for the staging-verification step that uses the destinations above.
- PII policy — for what
propertieslook like before they reach a destination.