Skip to content

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:

  1. DatadogRum React Component (app/components/datadog-rum.tsx)
  2. Feature Toggle System (app/feature-toggles/datadog-rum-toggle.server.ts)
  3. 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.

OneTrust Integration

The implementation requires OneTrust cookie consent before initializing Datadog RUM.

Consent ID Description
C0002 Performance monitoring consent

How It Works

  1. OneTrust banner collects user consent
  2. Consent categories are stored in OptanonActiveGroups global variable
  3. Datadog RUM component checks for required consent IDs
  4. RUM only initializes if all required consents are given

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:

  1. Feature Flag Check: Validates if isDatadogRumEnabled is true
  2. Consent Check: Validates if required OneTrust consent IDs are active
  3. Configuration Check: Validates if all required environment variables are present
  4. 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

Cost Overview