RFC-003: GA4 Customer Support Event Contract
Related Documents:
- RFC-001 (GA4 Event Contract & Reporting Alignment)
- RFC-002 (GA4 Authentication Event Contract)
- ADR-018 (Typed Analytics Architecture)
Abstract
This RFC specifies the GA4 event contract for the Customer Support module in OneCMS. It defines canonical events, payload constraints, and trigger semantics for search, customer detail exploration, quick actions, and support session lifecycle.
The contract is designed to support operational intelligence (agent workflows, friction points, and handling patterns) while remaining compliant with the global GA contract in RFC-001.
1. Introduction
1.1 Background
Customer Support workflows are operational and multi-step. Simple click telemetry is insufficient for understanding agent efficiency and friction. A typed contract is needed for stable reporting and predictable evolution.
1.2 Problem Statement
Without a dedicated contract, teams risk:
- inconsistent event dimensions across list/detail flows,
- unbounded strings for tabs/actions causing taxonomy drift,
- ambiguous outcome interpretation for async operations.
1.3 Goals
This RFC standardizes:
- Canonical customer support event names.
- Typed payload requirements and controlled dimensions.
- Trigger points across list and detail journeys.
- Async outcome semantics aligned with RFC-001 envelope model.
2. Terminology
The key words "MUST", "MUST NOT", "REQUIRED", "SHOULD", "SHOULD NOT", "MAY", and "OPTIONAL" are to be interpreted as described in RFC 2119.
- Operational Event: Event representing agent workflow progression.
- Quick Action: Immediate support intervention (profile/subscription/billing action).
- Session Lifecycle: Start/restore/save/end of a support handling session.
3. Scope
3.1 In Scope
- Customer Support list route and detail route event contracts.
- Typed payload map under
customer_supportanalytics category. - Journey stages: search, discover, inspect, act, session lifecycle.
3.2 Out of Scope
- GA emitter wiring implementation.
- Dashboard/KPI design.
- Backend data pipeline changes.
4. Customer Support Event Contract
4.1 Canonical Event Set
customer_searchcustomer_search_filter_changecustomer_search_result_opencustomer_search_paginationcustomer_search_external_id_detectedcustomer_detail_viewcustomer_detail_tab_changecustomer_quick_action_opencustomer_quick_action_submitcustomer_session_restorecustomer_session_startcustomer_session_savecustomer_session_endcustomer_add_user_opencustomer_add_user_submit
Event Naming Rules
- Event names MUST be user/workflow-centric and action/state-oriented.
- Event names MUST use
snake_caseand remain stable after production adoption. - Result events MUST represent business outcomes, not low-level technical steps.
4.2 Payload Requirements
| Event | Required Payload Fields | Optional Payload Fields |
|---|---|---|
customer_search |
filter, has_keyword, keyword_type, is_external |
result_count, error_code |
customer_search_filter_change |
previous_filter, next_filter |
— |
customer_search_result_open |
source, session_start_attempted |
error_code |
customer_search_pagination |
context, limit, page |
result_count |
customer_search_external_id_detected |
source, id_format |
— |
customer_detail_view |
tab, source, is_external |
error_code |
customer_detail_tab_change |
from_tab, to_tab |
— |
customer_quick_action_open |
section, action_name |
— |
customer_quick_action_submit |
section, action_name |
error_code |
customer_session_restore |
source |
— |
customer_session_start |
source |
error_code |
customer_session_save |
source |
error_code |
customer_session_end |
source |
duration_seconds, error_code |
customer_add_user_open |
source |
— |
customer_add_user_submit |
source |
error_code |
4.3 Contract Constraints
- Async operational events MUST use envelope-level
outcome(success | fail | cancel). - If an event represents completion of an asynchronous operation, it MUST be emitted only after the operation result is known.
- Payloads MUST NOT encode implicit outcome logic.
- Controlled dimensions (
tab,action_name,filter) MUST remain aligned with source registries/config. - Customer Support events MUST NOT include PII (email, phone, tokens, or raw user-entered search values).
5. Event Trigger Matrix
| Flow Stage | Event | When Fired | Outcome |
|---|---|---|---|
| Search submit | customer_search |
On search request completion | success/fail |
| Filter change | customer_search_filter_change |
On search filter selection change | success |
| External ID detection | customer_search_external_id_detected |
When direct external ID pattern is detected | success |
| Pagination | customer_search_pagination |
On page/limit navigation in results | success |
| Open result | customer_search_result_open |
On result row open + session start attempt | success/fail |
| Session restore | customer_session_restore |
On restoring previous support session | success |
| Session start | customer_session_start |
On session start audit call completion | success/fail |
| Detail view load | customer_detail_view |
On detail data load completion | success/fail |
| Detail tab switch | customer_detail_tab_change |
On tab change in detail sidebar | success |
| Quick action open | customer_quick_action_open |
On quick action dialog/module open | success |
| Quick action submit | customer_quick_action_submit |
On action API completion | success/fail |
| Session save | customer_session_save |
On save-session completion | success/fail |
| Session end | customer_session_end |
On session end completion | success/fail |
| Add user open | customer_add_user_open |
On add-user modal open | success |
| Add user submit | customer_add_user_submit |
On add-user submission completion | success/fail |
ℹ️ Note
For synchronous state-transition events (for example filter change, pagination, and tab switch),successindicates a valid state change, not backend operation completion.
6. Responsibilities
- Engineering: emit typed events at agreed trigger points, preserve controlled dimensions, and enforce PII boundaries.
- Product: define operational workflow questions and success criteria.
- Analytics: maintain dashboards and dimension compatibility across schema versions.
7. Versioning and Change Management
- This contract inherits versioning policy from RFC-001.
- Adding new optional fields/events SHOULD be a minor change.
- Renaming/removing required fields or controlled dimension values MUST be a major contract change.
- New events SHOULD extend existing workflow stages instead of introducing parallel taxonomy for equivalent actions.
- Contract-breaking changes MUST be proposed through a new RFC referencing RFC-003.
8. Risks and Considerations
- Registry drift can desynchronize controlled dimensions and emitted payloads.
- Over-instrumentation can dilute actionability.
- Inconsistent
error_codenormalization can weaken fail-path analysis.
9. Open Questions
- Should we add
customer_detail_section_viewfor non-tab modules in future layouts? - Should session lifecycle include explicit
pause/resumeevents? - Should we define a shared
error_codedictionary for all support actions?
10. Decision Outcome
- Accepted and implemented by Engineering, Product, and Analytics.
11. References
- RFC-001: GA4 Event Contract & Reporting Alignment
- RFC-002: GA4 Authentication Event Contract
- ADR-018: Typed Analytics (GA) Architecture
- Customer support analytics types
- Customer support GA matrix (working draft)
- Customer Support DebugView QA checklist
12. Document History
| Date | Version | Change Summary | Author |
|---|---|---|---|
| 2026-03-10 | 1.0 | Initial draft of customer support GA4 event contract published as proposed RFC | Aakash Jha |
| 2026-03-11 | 1.1 | Status promoted to APPROVED and DebugView QA checklist reference added | Aakash Jha |
| 2026-03-14 | 1.2 | Status promoted to IMPLEMENTED and decision outcome updated to accepted delivery | Aakash Jha |