Destinations & Activation → Real-time Activation

Ad Platforms (Google, Meta)

Syncs customer segments and hashed identifiers to ad platforms for audience targeting and suppression — activation aimed at paid media rather than owned channels.

High-Level Design

Audiences are synced as hashed identifiers, never raw PII, to every connected ad platform.

Data Source
Data Sources
Every touchpoint and business system
→
Ingestion
Ingestion Layer
SDKs, connectors, protocols
→
Processing
Semantic Layer
Audience segments defined as semantic-layer queries
→
Foundation
Propensity Scores
Common audience-definition input (e.g., high churn risk)
→
Intelligence
Query & Analytics Engine
Resolves the audience membership list
→
Activation
Ad Platforms (Google, Meta)
.NET Core Activation API → Google Ads / Meta Conversions API

💼 Business Context

  • Lets paid media target or suppress audiences based on real first-party data (propensity, LTV) instead of only the ad platform's own inferred signals
  • Suppression sync (e.g., stop advertising to customers who just purchased) is often the higher-value use case, avoiding wasted spend
  • Owned by Marketing Technology, in partnership with the Paid Media team

🔌 Technical Overview

A scheduled .NET Core Activation API job (Docker container on Azure Container Apps Jobs) resolves an audience defined as a Semantic Layer query — often combined with a Propensity Scores threshold — into a customer list, hashes identifiers (email, phone) per each platform's required format, and syncs via the Google Ads Customer Match API and Meta Conversions API. No raw PII ever leaves the platform; only irreversibly hashed identifiers are transmitted.

Sync Types

Audience match (targeting) Suppression list Conversion event sync Lookalike seed audience

💾 Audience Sync Payload

{
  "audience": "high_churn_risk_gold_tier",
  "platform": "meta_conversions_api",
  "member_count": 4218,
  "identifier_format": "sha256_hashed_email",
  "sync_type": "targeting"
}

🔗 Integration Points

  • Semantic Layer — defines audience membership as a governed query
  • Propensity Scores — common input for behaviorally-defined audiences
  • Google Ads Customer Match API / Meta Conversions API — destination platforms
  • Consent Enforcement — audiences exclude customers who have withdrawn marketing consent before the sync ever runs

🧰 Services Consumed

  • Owning microservice — Cxos.Activation.Api (see the Full Application Service Map)
  • Database — Azure Cosmos DB (dispatch log) + Azure Cache for Redis (frequency caps)

⚠️ Non-Functional Considerations

  • Scale: audience syncs run on a scheduled batch cadence (typically daily), sized for list sizes in the hundreds of thousands without per-record API calls
  • Latency: not real-time by design — ad platform audience syncs typically run within the platform's own daily refresh window
  • Reliability: a failed sync retains the platform's last successfully synced audience rather than clearing it, avoiding an accidental blank targeting list
  • Security/Privacy: only hashed identifiers are ever transmitted, and consent-withdrawn customers are excluded before hashing, not filtered after the fact

🎯 Enterprise Example

A "recently purchased" suppression audience syncs to Meta nightly, preventing customers from seeing the same product ad for days after buying it — a change that measurably reduced wasted ad spend and customer-reported ad fatigue complaints.

← Back to Real-time Activation