ConsentOverview

Consent Management

Signal provides comprehensive consent management that integrates with your Consent Management Platform (CMP), enforces consent rules per-integration before delivery, and passes the correct consent signals to each vendor API.

  1. Capture: Datafly.js reads consent state from your CMP’s cookie/storage
  2. Attach: Consent categories are included on every event payload
  3. Derive: Google Consent Mode v2 parameters are automatically derived
  4. Enforce: The pipeline engine filters integrations based on consent before delivery
  5. Audit: Every filtering decision is logged to the consent audit table

Supported CMPs

Signal supports reading consent from the following CMPs, in detection order:

CMPCookie / StorageAuto-DetectedConfig-Driven
OneTrustOptanonConsent (cookie)YesYes
CookiebotCookieConsent (cookie)YesYes
Didomididomi_token (cookie)YesYes
Osanoosano_consentmanager (cookie)YesYes
IAB TCF v2.0euconsent-v2 (cookie)YesYes
CustomAny cookie or localStorage keyNoYes

The preferred approach is to configure your consent provider in Pipeline Settings. This uses the flexible readConsentFromConfig() system which supports:

  • Any cookie or localStorage key
  • JSON, comma-delimited, URL-encoded, and semicolon-delimited formats
  • Custom category mapping rules (code → CMP field name → granted value)

Legacy Auto-Detection

For backward compatibility, Datafly.js auto-detects OneTrust, Cookiebot, Didomi, Osano, and IAB TCF cookies. This maps to three legacy categories: analytics, marketing, functional.

Since March 2024, Google requires four granular consent parameters for EEA compliance. Signal automatically derives these from your consent categories:

ParameterControlsDerived From
ad_storageAd cookies (gclid, gcl*)marketing consent
analytics_storageAnalytics cookies (_ga, _gid)analytics consent
ad_user_dataSending user data to Google for adsmarketing consent
ad_personalizationRemarketing and personalisationmarketing consent

These parameters are:

  • Included in the event payload as consent.google.*
  • Mapped to GA4 Measurement Protocol as consent.ad_user_data and consent.ad_personalization
  • Injected into Google Ads delivery payloads

If your CMP provides explicit Google Consent Mode parameters, Signal uses those directly. Otherwise, Signal derives them: marketing=true → all three ad_* params granted; analytics=trueanalytics_storage granted.

Consent enforcement happens in the Pipeline Engine before events reach Delivery Workers. Each integration can have a consent category gate — events without the required consent are filtered and never delivered.

Vendor-Specific Rules

In addition to the pipeline-level consent gate, each delivery worker applies vendor-specific consent enforcement:

VendorWhen Consent DeniedAction
Meta CAPImarketing=falseStrip PII (email, phone, fbp, fbc, IP, UA). Set data_processing_options=['LDU']
Google AdsAny stateInclude Consent Mode v2 params. Google handles modelling internally
GA4Any stateInclude ad_user_data and ad_personalization in payload
TikTokmarketing=falseStrip PII (email, phone, ttp, ttclid, IP, UA). Set limited_data_use=true
Microsoft UETad_storage=deniedSuppress event entirely (UET does not support degraded delivery)

Every consent filtering decision is recorded in the consent_filtered_events table:

FieldDescription
pipeline_idWhich pipeline the event was processed through
integration_idWhich integration was blocked
consent_categoryThe consent category that was denied
event_typeThe type of event (page, track, etc.)
event_nameThe specific event name
anonymous_id_hashSHA256 hash of the anonymous ID (privacy-safe)
filtered_atTimestamp of the filtering decision

This provides a complete audit trail for compliance reviews without storing PII.

Configuration

Each integration attached to a pipeline can have a consent category:

  1. Go to Pipelines → [Your Pipeline] → Integrations
  2. Click an integration
  3. Set the Consent Category (e.g. “Marketing”, “Analytics”)
  4. Set the Consent Mode (“Explicit” for GDPR, “Implicit” for CCPA)

Events without the required consent for that category will be filtered before delivery.

  1. Go to Settings → Consent
  2. Click Add Provider
  3. Configure the cookie name, storage type, and category mappings
  4. Set each pipeline to use the provider