Skip to content
Urnish Tech logo
All case studies
eCommerce · Integrations · 2025

Rocket Shop - Multi-channel Commerce Suite

Streamlined product synchronization with Klaviyo, reliable shipping integrations, and simplified product management workflows for a multi-channel commerce platform.

Build something like this

The challenge

Crag Techlabs' multi-channel commerce platform served affiliate retailers, brand shops, and social sellers but lacked reliable product synchronization with Klaviyo and visibility into fulfilment across carriers. Manual product imports were error-prone, sync failures went undetected, and shipping updates arrived unpredictably. They needed a scalable, fault-tolerant sync engine and a unified fulfilment-tracking layer that could grow without adding operational headcount.

What we built

A serverless, event-driven architecture for Klaviyo catalog sync paired with a REST API and a React admin dashboard. AWS Lambda workers, triggered by EventBridge schedules and manual API Gateway calls, push products, variants, and categories into Klaviyo via the Catalog API - decoupled from the core API by SQS retry queues and a DLQ. A dual-state fulfilment layer bridges Shopify fulfilment events with AfterShip tracking, with separate sync state for reliable retry and audit. The platform runs on AWS Lambda, RDS PostgreSQL, and Express with Sequelize, supporting multi-vendor shops, commission splits, and Nautical headless checkout.

Key features

Klaviyo catalog sync

  • Catalog API v17 bulk sync for products, variants, and categories via Serverless Framework Lambdas
  • Idempotent upserts keyed by external_id, with metafield mapping for custom attributes (color codes, supplier IDs, cost)
  • SQS retry queue + DLQ for automatic replay, exponential backoff, and post-mortem visibility on failed syncs
  • Bottleneck-based rate limiter (~2 req/sec) plus bulk job polling for async completions, staying inside Klaviyo's 60-req/min limit
  • EventBridge-scheduled syncs every 6 hours, with manual on-demand triggers via API Gateway

Fulfilment & shipping

  • Dual-state model: Shopify fulfilment status (pending / success / cancelled) plus AfterShip sync state (pending / synced / failed)
  • Shopify webhook handler ingests fulfilment events and queues AfterShip lookups for tracking number and URL
  • FulfillmentTracking entity carries AWB, carrier (UPS, FedEx, DHL, regional), and delivery events for unified reporting
  • Delivery-status updates wired into order notifications and Klaviyo flows

Admin dashboard (React)

  • Shop-level fulfilment list with filters by status, date range, customer, and carrier
  • Shipping rule builder: weight bands, destination zones, per-carrier selections
  • Bulk product import, Klaviyo sync status dashboard, and category mapping UI
  • Order detail view with fulfilment timeline, tracking links, and commission breakdowns

Multi-vendor architecture

  • Per-shop fulfilment routing, commission rates, and shipping rules
  • Seller-earnings tracking split across item subtotal and shipping
  • ACH payouts via Stripe Connect for automated seller settlement
  • Role-based access (admin, creator, seller) with Firebase Auth

Integrations

  • Nautical Headless Commerce GraphQL for checkout creation with country validation and inventory check
  • Shopify inventory sync via GraphQL and fulfilment-webhook subscriptions
  • Stripe customer + Connect payouts for shopper and seller flows
  • Mux for product video; AWS S3 with signed URLs for documents

Challenges solved

Rate-limited bulk sync with automatic backoff

Bottleneck queues outbound requests inside Klaviyo's 60-req/min ceiling while batching products into 100-item bulk jobs. SQS retry + DLQ guarantees zero-loss sync and post-mortem visibility on every failure.

Decoupled fulfilment tracking state

Shopify order state and AfterShip sync state live in separate tables. AfterShip retries don't re-trigger Shopify webhooks, which is critical for high-volume sellers behind flaky carrier APIs.

Idempotent catalog sync via metafield mapping

Custom attributes map to Klaviyo metafields; updates key on external_id, so duplicate syncs are safe and never produce duplicate variants or categories.

Serverless event-driven architecture

EventBridge schedules + SQS fan-out replace cron management entirely. Lambda scales zero to thousands of concurrent syncs with no DB connection-pool bottleneck because each invocation is isolated.

Commission-aware order reconciliation

Order revenue is split (Rocket fee + creator commission + referrer fee) and persisted at creation. Stripe Connect handles multi-leg payouts to sellers from an audit-proof ledger.

Dual checkout: Nautical + Shopify

A unified Checkout controller abstracts Nautical GraphQL and Shopify REST behind one interface, so inventory checks, payment routing, and A/B testing happen server-side without client changes.

Structured observability for async work

Winston + CloudWatch capture sync ID, item counts, error context, and retry attempts on every Lambda invocation. CloudWatch Alarms on log patterns catch stuck syncs without a separate APM.

Outcomes

Live

Klaviyo product sync

Multi-carrier

Shipping integrations

Simplified

Product workflows

Let's talk

Have a product idea or a system to scale?

Tell us what you're building. You'll hear back within one business day - from a senior engineer, not a sales rep.

  • Free 30-min discovery call
  • Fixed-scope or T&M engagements
  • NDA on request - first reply within 24h