Destinations & Activation → Reverse ETL / CDP Sync

Marketing (HubSpot)

Syncs computed segments and engagement scores into HubSpot so marketing operations can build campaigns using CXOS insight inside the tool they already run campaigns from.

High-Level Design

HubSpot receives the same governed segments used everywhere else in Real-time Activation.

Data Source
Business Systems
HubSpot is also a source under Data Sources
→
Ingestion
Ingestion Layer
Marketing system connector — original engagement data in
→
Processing
Semantic Layer
Segments defined as governed semantic-layer queries
→
Foundation
Propensity Scores
Common segment-definition input
→
Intelligence
Query & Analytics Engine
Resolves segment membership for the sync
→
Activation
Marketing (HubSpot)
Scheduled Reverse ETL job → HubSpot Contacts API

💼 Business Context

  • Marketing operations builds and sends campaigns from HubSpot day to day — syncing CXOS segments there means marketers use governed, first-party-informed audiences without leaving their primary tool
  • Keeps HubSpot's own contact list from drifting out of sync with the platform's unified view of the customer
  • Owned by Marketing Operations / Platform Engineering

🔌 Technical Overview

A scheduled .NET Core Reverse ETL job (Docker container on Azure Container Apps Jobs) resolves the same Semantic Layer-defined segments used for Ad Platforms sync into HubSpot list membership, and writes engagement-relevant profile fields (LTV band, propensity scores, preferred channel) as HubSpot contact properties via its Contacts API, so marketers building a HubSpot workflow can filter and personalize on CXOS-computed fields directly.

Synced Objects

Segment/list membership LTV band & propensity as contact properties Preferred channel

💾 HubSpot Sync Payload

{
  "hubspot_object": "contact",
  "list": "high_ltv_low_churn_risk",
  "properties": {
    "cxos_ltv_band": "gold",
    "cxos_churn_risk": 0.12,
    "cxos_preferred_channel": "email"
  }
}

🔗 Integration Points

  • Business Systems (Data Sources) — HubSpot as an original engagement-data source, distinct from this reverse sync
  • Semantic Layer — the same governed segment definitions used for Ad Platforms sync, reused here for consistency
  • HubSpot Contacts API — the write mechanism for list membership and contact properties
  • Consent Enforcement — contacts who have withdrawn marketing consent are excluded from segment sync

🧰 Services Consumed

  • Owning microservice — Cxos.Connectors.HubSpot (write path) (see the Full Application Service Map)
  • No dedicated database — stateless connector (see Platform Connectors above)

⚠️ Non-Functional Considerations

  • Scale: contact sync runs against the full active-customer segment population on a schedule, not per-contact calls
  • Latency: segments refresh on the same cadence as Ad Platforms sync (typically daily) to keep both channels consistent with each other
  • Reliability: a failed sync run retains HubSpot's last successfully synced segment membership rather than clearing lists mid-campaign
  • Security/Privacy: only marketing-consented contacts are synced, and only the specific fields approved for the marketing-operations use case are written as contact properties

🎯 Enterprise Example

Marketing Operations builds a HubSpot workflow targeting the same 'high LTV, low churn risk' segment already used for ad-platform suppression — because both pull from the same Semantic Layer definition, the audience marketing emails and the audience ads target stay consistent with each other automatically.

← Back to Reverse ETL / CDP Sync