Data Sources → Customer Touchpoints

Social Media

Public and owned social interactions — mentions, comments, DMs, and ad engagement — pulled from platform APIs.

High-Level Design

Platform API polling → .NET Core microservices on Azure.

Touchpoint
Social Media
Mentions, comments, DMs, ad engagement
→
Ingestion
.NET Core Connector Function
Platform API polling → Cxos.Ingestion.Client
→
Processing
.NET Core Stream Worker
Normalization across platforms
→
Foundation
Data Lakehouse
Public + owned social interactions
→
Intelligence
.NET Core AI & Insights API
Azure OpenAI — sentiment, share-of-voice
→
Activation
.NET Core Activation API
Ad audience sync (Reverse ETL)

💼 Business Context

  • Both a brand-perception channel and a paid-media performance channel — unifying it lets the business connect sentiment to actual purchase behavior
  • Powers audience sync back to ad platforms for retargeting and lookalike modeling
  • Owned by Social/Brand Marketing and Paid Media teams

🔌 Technical Overview

A timer-triggered .NET Core Azure Function polls each platform's API (Meta, X, Instagram, TikTok, LinkedIn) on its own schedule, since most platforms don't push webhooks for every event type; each platform has a thin connector built on the shared Cxos.Ingestion.Client package. Ad-engagement events carry a clickthrough ID that can be matched to a session/profile; organic mentions/comments usually can't be linked to a known customer unless the user has an explicit account link (login-with-social). Azure Key Vault stores each platform's API credentials, with token refresh handled inside the connector function.

Typical Events

mention_received comment_posted dm_received ad_clicked follower_gained

💾 Sample Event Payload

{
  "event": "ad_clicked",
  "event_id": "5f0c3ab1-4d7e-4f9a-8c3b-9e1a2d5f6081",
  "timestamp": "2026-08-01T13:12:09Z",
  "anonymous_id": "a1b2c3d4",
  "context": {
    "channel": "social",
    "platform": "meta",
    "campaign_id": "camp_9931"
  },
  "properties": {
    "ad_id": "ad_2201",
    "creative": "summer_sale_v2",
    "click_id": "fbclid_88x2"
  }
}

🔗 Integration Points

  • Timer-triggered Azure Functions (.NET Core) — one connector per platform
  • Cxos.Ingestion.Client NuGet package — shared ingestion contract
  • Azure Key Vault — platform API credential storage
  • Reverse ETL (.NET Core Activation API) — audience sync back to ad platforms
  • Azure OpenAI Service — sentiment and share-of-voice analysis

🧰 Services Consumed

  • Owning microservice — Cxos.Ingestion.Api (see the Full Application Service Map)
  • Database — Azure Cache for Redis (cache only, no system-of-record database)

⚠️ Non-Functional Considerations

  • Scale: platform API rate limits — not data volume — are usually the binding constraint; each connector function throttles independently
  • Latency: brand-safety/crisis mentions run on a tighter polling interval; general engagement polls hourly
  • Reliability: connector functions handle platform API schema changes without affecting other platforms' pipelines
  • Security/Privacy: public content moderation and takedown-request handling before long-term storage

🎯 Enterprise Example

A consumer brand's Meta connector function feeds ad_clicked events into the Ingestion API with a clickthrough ID. When a clicked-through visitor completes a purchase within 7 days, the Activation API closes the loop back to Meta via Reverse ETL, improving return-on-ad-spend attribution and letting the media team shift 15% of budget toward the better-performing creative the following month.

← Back to Customer Touchpoints