Commerce (Shopify)
Order, product, and cart data synced from the commerce platform — completes the picture of what a customer actually bought.
High-Level Design
Shopify → .NET Core Connector on Azure → downstream activation.
💼 Business Context
- Purchase data is the strongest behavioral signal in the platform — every other channel's activation ultimately optimizes toward it
- Connects marketing/on-site behavior to actual revenue outcomes, closing the attribution loop
- Owned by the E-commerce / Digital Commerce team
🔌 Technical Overview
Shopify pushes order lifecycle events (orders/create, orders/paid, orders/fulfilled, refunds/create) to a .NET Core Azure Function webhook endpoint registered via the Shopify Admin API. The function validates the HMAC signature, normalizes the payload through Cxos.Ingestion.Client, and forwards it to the Ingestion API. A nightly Bulk Operations job reconciles any missed webhook deliveries.
Synced Events
💾 Sample Order Payload
{
"event": "order_paid",
"event_id": "c2a9f1e0-8b3d-4e7a-9c1f-2d6a8e0b4c73",
"timestamp": "2026-08-01T12:40:05Z",
"user_id": "cust_004821",
"context": { "channel": "commerce", "platform": "shopify", "store": "acme-retail" },
"properties": {
"order_id": "ord_55123",
"total": 3499,
"currency": "INR",
"line_items": 4
}
}
🔗 Integration Points
- Azure Function webhook receiver (.NET Core) registered against Shopify Admin API webhooks
- Cxos.Ingestion.Client NuGet package — shared contract
- Shopify Bulk Operations API — nightly reconciliation job (.NET Core, Azure Functions Timer)
- Analytics API — LTV/RFM computation for downstream personalization
🧰 Services Consumed
- Owning microservice —
Cxos.Connectors.Shopify(see the Full Application Service Map) - No dedicated database — stateless connector (see Platform Connectors above)
⚠️ Non-Functional Considerations
- Scale: webhook volume spikes during flash sales — Azure Functions consumption plan scales automatically
- Latency: order events typically land in the profile within seconds of checkout
- Reliability: HMAC signature verification + idempotent event_id handling; nightly reconciliation catches missed webhooks
- Security/Privacy: payment details are never stored — only order/line-item metadata passes the webhook boundary
🎯 Enterprise Example
A DTC brand connects Shopify order webhooks to CXOS. A customer who abandons a cart, then completes the purchase via an email nudge, has both events stitched to one profile — letting the Analytics API correctly attribute the sale to the email campaign instead of double-counting it as organic, improving campaign ROI reporting accuracy.