Datadog RUM Implementation Documentation
Overview
This document describes the implementation of Datadog Real User Monitoring (RUM) in the account-overview application. The implementation includes cookie consent management through OneTrust integration and feature flag controls.
Architecture
The Datadog RUM implementation consists of:
- DatadogRum React Component (
app/components/datadog-rum.tsx) - Feature Toggle System (
app/feature-toggles/datadog-rum-toggle.server.ts) - OneTrust Cookie Consent Integration
Required Environment Variables
| Variable | Description | Required |
|---|---|---|
APP_DD_RUM_CLIENT_TOKEN |
Datadog RUM client token for browser initialization | Yes |
APP_DD_RUM_ENV |
Environment identifier (prod, stage, dev) |
Yes |
DD_GIT_COMMIT_SHA |
Git commit SHA used as version identifier | Yes |
APP_DD_API_KEY |
Datadog API key for server-side integration | Yes |
Key Configuration
- Application ID:
1ad0b76d-1c28-4c66-8a32-c9094306650e - Site: EU Datadog instance (
datadoghq.eu) - Service:
account-overview - Session Sampling: 20% of sessions are monitored
- Privacy: Input masking enabled (
mask-user-input)
Feature Flag Integration
The Datadog RUM implementation is controlled by a feature flag:
- Toggle Name:
datadog_rum - Location:
app/feature-toggles/datadog-rum-toggle.server.ts
This allows enabling/disabling Datadog RUM without code deployment.
Cookie Consent Integration
OneTrust Integration
The implementation requires OneTrust cookie consent before initializing Datadog RUM.
Required Consent IDs
| Consent ID | Description |
|---|---|
C0002 |
Performance monitoring consent |
How It Works
- OneTrust banner collects user consent
- Consent categories are stored in
OptanonActiveGroupsglobal variable - Datadog RUM component checks for required consent IDs
- RUM only initializes if all required consents are given
Retrieving Consent Categories
In OneTrust admin panel: Categorizations > Categories
Console Verification
// Check active consent groups in browser console
console.log(OptanonActiveGroups);
// Example output: ["C0001", "C0002", "H35"]
Implementation Flow
The DatadogRum component is integrated in app/root.tsx and performs validation checks before initializing:
- Feature Flag Check: Validates if
isDatadogRumEnabledis true - Consent Check: Validates if required OneTrust consent IDs are active
- Configuration Check: Validates if all required environment variables are present
- Initialization: Only proceeds if all checks pass
Privacy and Compliance
- Input Masking: Sensitive user inputs are automatically masked
- Consent-Based: Only activates with explicit user consent via OneTrust
- Sampling: 20% sampling rate reduces data collection volume
- GDPR Compliant: Users can withdraw consent to automatically disable tracking