Data Sources → Business Systems
Support (Zendesk)
Support ticket history — issues raised, resolution time, and satisfaction — linked to the same customer profile as every other channel.
High-Level Design
Zendesk → .NET Core Connector on Azure → downstream activation.
Business System
Support (Zendesk)
Tickets, satisfaction ratings, agent replies
→
Ingestion
.NET Core Zendesk Connector
API + webhook → Cxos.Ingestion.Client
→
Processing
.NET Core Stream Worker
Ticket lifecycle normalization
→
Foundation
Data Lakehouse
Ticket history per profile
→
Intelligence
.NET Core AI & Insights API
CSAT trend, churn-risk signal
→
Activation
.NET Core Activation API
Reverse ETL — case context back to Zendesk
💼 Business Context
- Support history is one of the strongest churn-risk signals available — unresolved or repeated issues predict cancellation
- Lets marketing/success teams avoid promotional outreach to customers with an open critical ticket
- Owned by Customer Support, shared with Customer Success / Retention
🔌 Technical Overview
A .NET Core connector subscribes to Zendesk's ticket webhook events (ticket.created, ticket.solved, satisfaction.rated) and also runs a scheduled Zendesk Search API sync for backfill. Both paths normalize through Cxos.Ingestion.Client into the same ticket-event schema.
Synced Events
ticket_created
ticket_updated
ticket_solved
satisfaction_rated
💾 Sample Ticket Event
{
"event": "ticket_solved",
"event_id": "e91b3c2a-5d8f-4a1e-8c3b-9f2d6a0b4e57",
"timestamp": "2026-08-01T15:20:00Z",
"user_id": "cust_004821",
"context": { "channel": "support", "platform": "zendesk", "ticket_id": "zd_88213" },
"properties": { "category": "billing", "resolution_time_hours": 6.5, "csat_score": 5 }
}
🔗 Integration Points
- Zendesk webhook subscription (ticket lifecycle events)
- .NET Core scheduled sync (Zendesk Search API) for backfill/reconciliation
- Cxos.Ingestion.Client NuGet package
- Reverse ETL — writes CXOS profile context (LTV, tier) into the Zendesk ticket sidebar via a custom app
🧰 Services Consumed
- Owning microservice —
Cxos.Connectors.Zendesk(see the Full Application Service Map) - No dedicated database — stateless connector (see Platform Connectors above)
⚠️ Non-Functional Considerations
- Scale: ticket volume is modest compared to behavioral events — a webhook-first design is sufficient without a heavy queue
- Latency: near-real-time for ticket state changes; satisfaction ratings can lag by hours (customer-driven)
- Reliability: scheduled reconciliation sync catches any missed webhook deliveries
- Security/Privacy: ticket body text may contain sensitive account details — redaction rules mirror the call-center transcript pipeline
🎯 Enterprise Example
A subscription business flags customers with an unresolved "billing_dispute" ticket and automatically suppresses them from the next win-back campaign send via the Activation API — preventing a support-driven customer from receiving a tone-deaf marketing message mid-complaint.