The invisible infrastructure that keeps multi-store retail operations in perfect sync. Webhook-driven inventory, pricing, content, and image synchronization across unlimited Shopify stores — with echo-loop prevention, delta computation, and full reconciliation to ensure every storefront reflects the single source of truth in real time.
| Data Type | Trigger | Direction | Method |
|---|---|---|---|
| Inventory | Webhook (real-time) | Uni- or bidirectional | Delta computation with fetch-on-notify |
| Product Content | Webhook + scheduled | Unidirectional | Title, description, SEO, options, variants |
| Prices | Webhook or ERP import | Unidirectional | Base price + compare-at price per variant |
| Images | Content sync | Unidirectional | URL + alt text, per-variant images |
Receives Shopify webhooks with HMAC verification (timingSafeEqual). Returns 200 immediately, deduplicates by webhook ID (48h TTL), then queues async jobs per sync pair.
BullMQ Redis-backed queue with concurrency 5. Exponential backoff retry (4 attempts). Cost-based Shopify rate limiting (1000-point bucket, 50pts/sec restore).
12 Prisma models: Store, SyncPair, ProductMapping, VariantMapping, InventoryLevelCache, LocationMapping, SyncAction, SyncLock, and more. Full audit trail.
Prometheus metrics (webhook counts, sync duration, API latency, queue backlog). Winston structured logging with SSE live streaming. Slack alerts for failures and memory.
Dual-layer sync locks: in-memory Map (5-min TTL) + DB SyncLock (30s/120s TTL). Prevents infinite webhook loops between bidirectional stores.
Full inventory audit across all mappings. Source-wins authority. Detects quantity discrepancies, untracked items, and status mismatches. Dry-run + batch apply.
Excel/CSV file import with configurable column mapping. Barcode-to-SKU lookup, warehouse quantities, retail/cost prices. Full and partial import modes.
Unlimited stores via OAuth installation. Many-to-many SyncPair relationships. Per-pair granular config: direction, filters, schedules, toggles.
Never trusts webhook payload (may be null). Always fetches fresh state via Shopify GraphQL API, then computes delta against cached last-known quantity.
24 RESTful API endpoints for dashboard control. Live log streaming via SSE, sync action history, product/location mapping editors, and settings management.
Scheduled per sync pair via cron. Handles create, update, delete operations. SKU-based variant mapping. Smart sync: only update if source is newer.
Shopify-native 1000-point bucket with 50pts/sec restore rate. Per-shop rate limiter prevents API throttling across concurrent sync operations.
Slack notifications for queue backlog, failed syncs, and memory usage thresholds. Daily email digest via Resend with operation summaries.
Dockerized Express.js server. Auto-deploy via GitHub Actions. Health endpoint at /api/status.
PostgreSQL with Prisma migrations run as release_command on deploy.
Redis instance for BullMQ job queue, sync lock fast path, and rate limiter state.