Case Study

Cross-Store Sync App

 Retail client operates two Shopify stores (Calgary = online + POS; Edmonton = POS-only) plus a shared AQ Warehouse location. Current multi-store synchronization relies on a third-party app (Syncio) and the client wants to fully eliminate this. We are building a custom Node.js/Express Shopify app that uses webhooks to centralize product creation/edits and keep inventory in sync across Calgary, Edmonton and AQ Warehouse. The solution removes the Syncio dependency, centralizes control, and makes inventory/product operations reliable across POS and web channels.

Case Study

Introduction

This project will deliver a custom Shopify app that guarantees consistent product state and inventory across two stores and a shared warehouse location. The app’s purpose is to centralize product creation/edits and reliably sync inventory changes arising from POS sales/returns, online sales/returns, manual edits, purchase receiving, and stock takes so front-end and back-end order flows always reflect true stock.

Project Name / Code:

Cross-Store Sync App

Category:

Retail / Ecommerce

Location

Calgary (default store for web sales & POS)

Project start date

2025

Project Name / Code:

Cross-Store Sync App

Category:

Retail / Ecommerce

Location:

Calgary (default store for web sales & POS)

Project Start Date:

2025

About

Problem Statement

Currently the client uses a third-party multistore sync tool (Syncio) and he wants to eliminate this fully.

Objectives

Implementation

Architecture (high level)

  • A Node.js + Express backend app installed as a private Shopify app on both stores (Calgary and Edmonton).
  • Use Shopify Admin API + Shopify Webhooks to catch and react to events. Core webhook events subscribed: orders/* (created, updated, cancelled, fulfilled), inventory_levels/*, products/* (created, updated, deleted), fulfillments/*
  • A synchronization engine that:
    • Normalizes incoming events into a canonical change (product change, inventory delta, location-change event).
    • Applies deterministic rules to update the other store(s): e.g., product creation in Calgary => create product + variants in Edmonton; inventory delta at location X => update inventory level in partner stores at the corresponding location mapping (Calgary, Edmonton, AQ Warehouse).
    • Handles idempotency & retries (webhook dedup, exponential backoff) and stores event receipts to avoid double-updates.
  • Location mapping & master rules: a small configuration layer defines which Shopify Location IDs correspond to Calgary / Edmonton / AQ Warehouse across both stores. That mapping is used to route inventory updates.
  • Reconciliation & audit endpoints: periodic background job or on-demand endpoints produce diffs between expected inventory and live store inventory to surface mismatches.
  • Manual override tools for operations to accept/reject automated sync changes and re-run fixes for batches of SKUs.
  • Security: HMAC validation for webhooks, OAuth or private app credentials scoped to necessary Shopify APIs only. Logs persisted for 90+ days for audit.

Key technical components

  • Node.js + Express server with webhook route handlers.
  • A message queue (in-process queue or persistent job queue) to serialize and reattempt synchronization tasks reliably.

Administrative UI (optional) or REST endpoints to view sync status, conflict logs, and mapping config.

Results / Outcomes

KPIs / Metrics to track

  • Removal of third-party dependency: 100% elimination of Syncio (app uninstalled) — target: complete within cutover release.
  • Sync success rate: % of inbound events that result in correct outbound state change (goal: ≥ 99% success after retries).
  • Time-to-consistency: average time between origin event and reflected change in other store (goal: 30-60 seconds for most webhook flows; provide SLA exceptions for heavy batched operations).
  • Reconciliation drift: number of SKUs with inventory divergence > X units (goal: reduce to near-zero; target: < 0.5% SKUs with drift).
  • Manual fixes required: number of operational interventions per week (goal: large reduction vs current baseline).

Before & after comparison (illustrative)

  • Before: Reliance on Syncio
    After: Centralized webhook-driven sync; near real-time inventory parity across

Technologies

Technologies / Tools that We used to achieve this task