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.

← Back to Business Systems