Marketing (HubSpot)
Marketing engagement and lifecycle-stage data synced from HubSpot — lead scoring and campaign history alongside behavioral events.
High-Level Design
HubSpot → .NET Core Connector on Azure → downstream activation.
💼 Business Context
- HubSpot often holds the lead-to-customer lifecycle stage that other systems don't track natively
- Combining HubSpot's marketing-qualified signals with CXOS's real-time behavioral data improves lead scoring accuracy
- Owned by Marketing Ops
🔌 Technical Overview
The HubSpot connector uses HubSpot's Webhooks API (contact.propertyChange) for real-time lifecycle-stage updates and the CRM API for scheduled full syncs. Both paths pass through Cxos.Ingestion.Client into the Ingestion API, keeping HubSpot's contact properties in the same shared schema as every other data source.
Synced Events
💾 Sample Lifecycle Event
{
"event": "lifecycle_stage_changed",
"event_id": "f3a8c1d0-6b9e-4c2a-8d1f-3a7c9e0b5f68",
"timestamp": "2026-08-01T07:30:00Z",
"user_id": "cust_004821",
"context": { "channel": "marketing", "platform": "hubspot" },
"properties": { "from_stage": "Lead", "to_stage": "Marketing Qualified Lead", "lead_score": 78 }
}
🔗 Integration Points
- HubSpot Webhooks API — real-time property-change events
- HubSpot CRM API — scheduled full sync (.NET Core, Azure Functions Timer)
- Cxos.Ingestion.Client NuGet package
- Reverse ETL — writes CXOS behavioral/propensity score into a HubSpot custom contact property
🧰 Services Consumed
- Owning microservice —
Cxos.Connectors.HubSpot(see the Full Application Service Map) - No dedicated database — stateless connector (see Platform Connectors above)
⚠️ Non-Functional Considerations
- Scale: contact volume is bounded by the marketing database size, not event volume — straightforward for the standard ingestion path
- Latency: property-change webhooks land within seconds; full syncs run nightly
- Reliability: HubSpot webhook retries are idempotent via event_id dedup
- Security/Privacy: only marketing-consented contacts are synced — consent flag is checked before each Reverse ETL write
🎯 Enterprise Example
A B2B company blends its HubSpot lead score with CXOS's real-time product-usage signals in the Analytics API to produce a unified "sales-ready" score, written back into HubSpot — letting SDRs prioritize outreach using a signal neither system could produce alone.