How It Works

Learn how the ResponsiveWorks Integration Hub connects your e-commerce stores with backend systems

Overview

The ResponsiveWorks Integration Hub is a middleware platform that synchronizes data between your e-commerce stores (Shopify, WooCommerce, etc.) and backend systems (NetSuite, custom ERPs, and more). It handles:

  • Orders - Automatically sends orders from your store to your backend system
  • Products - Keeps product information synchronized between systems
  • Inventory - Updates stock levels in real-time or on a schedule
  • Fulfillments - Tracks shipments and updates your store when orders are fulfilled
Getting Started
1
Configure Host Platform Connection

Set up your backend system credentials. Each platform type has its own authentication method and setup instructions - API keys, OAuth tokens, or other credentials specific to the system.

2
Connect Your Store

Each e-commerce platform has its own setup process:

  • Shopify: The store owner installs the Integration Hub app and accepts the required permissions for orders, products, inventory, and fulfillments.
  • Other Platforms: Enter the store URL and API credentials as required by the platform.
3
Map Store Data Requirements

Configure how your store data maps to your host platform settings:

  • Location ID - Which warehouse or location to use for inventory
  • Subsidiary - The business unit for multi-company setups
  • Department - Cost center or department assignment
  • Product Filters - Which products to sync (by category, tag, or other criteria)
  • Payment & Shipping Methods - Map store payment types to host platform equivalents
4
Set Up Sync Schedules

Configure when synchronizations should run:

  • Recurring Schedule: Automatically sync at regular intervals (every 15 minutes, hourly, daily, etc.)
  • On-Demand: Manually trigger syncs when needed from the Scheduled Tasks page
5
Go Live!

Enable your store and start syncing. Monitor the dashboard for sync status and review execution logs for any issues.

Synchronization Types
Order Sync

Orders placed in your store are automatically created in your backend system as sales orders or transactions.

Product Sync

Keep product details, pricing, and descriptions synchronized between your store and backend inventory.

Inventory Sync

Stock quantities are updated from your backend system to your store, preventing overselling and keeping inventory accurate.

Fulfillment Sync

When orders are shipped in your backend system, tracking information is automatically sent to your store and customers.

Data Flow
E-Commerce Store
Shopify, WooCommerce
Integration Hub
Transform & Route
Host Platform
ERP, Backend Systems
Bidirectional Sync: Orders flow from your store to your host platform, while inventory and fulfillment data flows back to your store.
Technical Documentation

Detailed technical diagrams showing how data flows through the system.

The ResponsiveWorks Integration Hub is a middleware platform that connects e-commerce stores with ERP/Host platforms.

FeatureDescription
Multi-Store ManagementConnect and manage multiple e-commerce stores
Multi-Platform ERPSupport for various ERP systems via plugin architecture
Automated SyncScheduled background jobs via Hangfire
Data TransformationMap store data to ERP-specific formats
CachingDatabase-backed cache for sync state and performance
Multi-TenancyIsolated data per tenant/organization
┌─────────────────────────────────────────────────────────────────────────────┐
│                        RESPONSIVEWORKS INTEGRATION HUB                       │
├─────────────────────────────────────────────────────────────────────────────┤
│                                                                              │
│   ┌──────────────┐    ┌──────────────┐    ┌──────────────┐                  │
│   │   SHOPIFY    │    │ BIGCOMMERCE  │    │  NOPCOMMERCE │    ...STORES     │
│   │    Store     │    │    Store     │    │    Store     │                  │
│   └──────┬───────┘    └──────┬───────┘    └──────┬───────┘                  │
│          │                   │                   │                          │
│          └───────────────────┼───────────────────┘                          │
│                              ▼                                              │
│   ┌─────────────────────────────────────────────────────────────────────┐   │
│   │                    STORE INTEGRATION LAYER                          │   │
│   │  ┌─────────────────┐  ┌─────────────────┐  ┌─────────────────┐      │   │
│   │  │ IStoreIntegration│  │IStoreOrderService│  │IStoreInventory │      │   │
│   │  │    Factory       │  │                 │  │    Service     │      │   │
│   │  └─────────────────┘  └─────────────────┘  └─────────────────┘      │   │
│   └─────────────────────────────────────────────────────────────────────┘   │
│                              │                                              │
│                              ▼                                              │
│   ┌─────────────────────────────────────────────────────────────────────┐   │
│   │                      CORE SERVICES LAYER                            │   │
│   │  ┌──────────────┐  ┌──────────────┐  ┌──────────────────────────┐   │   │
│   │  │ SyncService  │  │ScheduledTask │  │ StoreConfiguration       │   │   │
│   │  │ - Orders     │  │   Service    │  │      Service             │   │   │
│   │  │ - Products   │  │ - CRUD Tasks │  │ - Store CRUD             │   │   │
│   │  │ - Inventory  │  │ - Execution  │  │ - Host Mapping           │   │   │
│   │  └──────────────┘  └──────────────┘  └──────────────────────────┘   │   │
│   └─────────────────────────────────────────────────────────────────────┘   │
│                              │                                              │
│                              ▼                                              │
│   ┌─────────────────────────────────────────────────────────────────────┐   │
│   │                  HOST PLATFORM INTEGRATION LAYER                    │   │
│   │  ┌─────────────────┐  ┌─────────────────┐  ┌─────────────────┐      │   │
│   │  │IHostPlatform    │  │IHostPlatform    │  │IHostPlatform    │      │   │
│   │  │IntegrationFactory│ │  OrderService   │  │InventoryService │      │   │
│   │  └─────────────────┘  └─────────────────┘  └─────────────────┘      │   │
│   └─────────────────────────────────────────────────────────────────────┘   │
│                              │                                              │
│                              ▼                                              │
│   ┌──────────────┐    ┌──────────────┐    ┌──────────────┐                  │
│   │   NETSUITE   │    │  SALESFORCE  │    │ DYNAMICS 365 │    ...ERP       │
│   │     ERP      │    │     ERP      │    │     ERP      │                  │
│   └──────────────┘    └──────────────┘    └──────────────┘                  │
│                                                                              │
└─────────────────────────────────────────────────────────────────────────────┘

Shows how orders flow from e-commerce stores to the host ERP platform:

     SHOPIFY STORE                    INTEGRATION HUB                    NETSUITE
    ┌────────────┐              ┌─────────────────────────┐           ┌──────────┐
    │            │              │                         │           │          │
    │  Orders    │──────────────│►  1. Fetch Orders       │           │          │
    │  - Paid    │   REST API   │     (Last 7 days or     │           │          │
    │  - Unpaid  │              │      since last sync)   │           │          │
    │            │              │                         │           │          │
    └────────────┘              │                         │           │          │
                                │  2. Check Order Cache   │           │          │
                                │     ┌─────────────────┐ │           │          │
                                │     │  order_cache    │ │           │          │
                                │     │    (MySQL)      │ │           │          │
                                │     └─────────────────┘ │           │          │
                                │          │              │           │          │
                                │          ▼              │           │          │
                                │  3. Already Synced? ────┼───► SKIP  │          │
                                │          │ NO           │           │          │
                                │          ▼              │           │          │
                                │  4. Check Host Platform │           │          │
                                │     by External ID ─────┼──────────►│ SuiteQL  │
                                │          │              │           │  Query   │
                                │          ▼              │◄──────────│          │
                                │  5. Already Exists? ────┼───► SKIP  │          │
                                │          │ NO           │           │          │
                                │          ▼              │           │          │
                                │  6. Is Order Paid?      │           │          │
                                │     ┌─────┴─────┐       │           │          │
                                │     │YES        │NO     │           │          │
                                │     ▼           ▼       │           │          │
                                │  Create     Create      │           │          │
                                │  Cash Sale  Sales Order │           │          │
                                │     │           │       │           │          │
                                │     └─────┬─────┘       │           │          │
                                │           │             │           │          │
                                │           ▼             │           │          │
                                │  7. POST to NetSuite ───┼──────────►│ REST API │
                                │                         │           │ Create   │
                                │◄────────────────────────┼───────────│ Record   │
                                │  8. Receive NetSuite ID │           │          │
                                │                         │           │          │
                                │  9. Update Order Cache  │           │          │
                                │     - StoreOrderId      │           │          │
                                │     - HostPlatformId    │           │          │
                                │     - SyncStatus        │           │          │
                                │                         │           │          │
                                └─────────────────────────┘           └──────────┘
Order Data Transformation:
Shopify Order
order_number: "1001"
total_price: 99.99
financial_status: paid
line_items: [...]
NetSuite Record
externalId: "SHP_1001"
total: 99.99
recordType: cashsale
item: [...]

Bidirectional inventory synchronization between host platform and stores:

    NETSUITE                      INTEGRATION HUB                     SHOPIFY
    ┌──────────┐              ┌─────────────────────────┐           ┌──────────┐
    │          │              │                         │           │          │
    │ Inventory│              │  1. Request Inventory   │           │          │
    │ Balances │◄─────────────┤     Levels              │           │          │
    │          │   SuiteQL    │     - By Location       │           │          │
    │ ┌──────┐ │   Query      │     - Paginated (100)   │           │          │
    │ │SKU-A │ │              │                         │           │          │
    │ │Qty:50│ │──────────────│►                        │           │          │
    │ └──────┘ │              │  2. Receive Inventory   │           │          │
    │ ┌──────┐ │              │     Response            │           │          │
    │ │SKU-B │ │              │     ┌─────────────────┐ │           │          │
    │ │Qty:25│ │              │     │ SKU  │ Qty     │ │           │          │
    │ └──────┘ │              │     ├──────┼─────────┤ │           │          │
    │ ┌──────┐ │              │     │SKU-A │  50     │ │           │          │
    │ │SKU-C │ │              │     │SKU-B │  25     │ │           │          │
    │ │Qty:100│              │     │SKU-C │ 100     │ │           │          │
    │ └──────┘ │              │     └─────────────────┘ │           │          │
    └──────────┘              │                         │           │          │
                                │  3. Merge with Cache    │           │          │
                                │                         │           │          │
                                │  4. Prepare Update      │           │          │
                                │     Payload             │           │          │
                                │                         │           │          │
                                │  5. Bulk Update ────────┼──────────►│ GraphQL  │
                                │     Inventory           │   API     │ Mutation │
                                │                         │           │          │
                                │  6. Save Updated Cache  │           │ Inventory│
                                │                         │           │ Updated  │
                                └─────────────────────────┘           └──────────┘

How product catalog data flows from the host platform to the cache:

    NETSUITE CATALOG                  INTEGRATION HUB
    ┌──────────────────┐         ┌─────────────────────────────────────────┐
    │                  │         │                                         │
    │  ┌────────────┐  │         │  1. Query Items from Host Platform      │
    │  │ Item Record│  │         │     - SuiteQL: SELECT itemid, name...   │
    │  │ ─────────  │  │         │     - Paginated: 100 per request        │
    │  │ SKU: ABC   │  │◄────────┤     - Filters: Active items only        │
    │  │ Name: Prod │  │  Query  │                                         │
    │  │ Price: $99 │  │         │                                         │
    │  │ Cost: $50  │  │─────────│►  2. Receive Item Data                  │
    │  └────────────┘  │         │                                         │
    │                  │         │  3. Map to ProductReportItem            │
    │  ┌────────────┐  │         │     - SKU, Name, Description            │
    │  │ Item Record│  │         │     - Price, Cost                       │
    │  │ SKU: DEF   │  │         │     - InventoryQuantity                 │
    │  │ Price: $49 │  │         │     - NetSuiteId                        │
    │  └────────────┘  │         │                                         │
    │                  │         │  4. Load Existing Product Cache         │
    └──────────────────┘         │     product_cache (MySQL)               │
                                 │                                         │
                                 │  5. Merge: Update existing, add new     │
                                 │                                         │
                                 │  6. Save Updated Cache to Database      │
                                 │                                         │
                                 └─────────────────────────────────────────┘

The Shopify OAuth 2.0 flow for store connection:

    MERCHANT               INTEGRATION HUB                    SHOPIFY
    ┌───────┐              ┌───────────────┐               ┌───────────────┐
    │       │              │               │               │               │
    │   1   │  Creates     │               │               │               │
    │  ───► │  Store ──────│► StoreConfig  │               │               │
    │       │  Config      │  Created      │               │               │
    │       │              │               │               │               │
    │   2   │  Click       │               │               │               │
    │  ───► │  "Connect"───│► Generate     │               │               │
    │       │              │  Install URL  │               │               │
    │       │              │               │               │               │
    │   3   │◄─────────────│  Redirect ────│──────────────►│               │
    │  ◄─── │              │  to Shopify   │  /oauth/      │               │
    │       │              │               │  authorize    │               │
    │       │              │               │               │               │
    │   4   │              │               │               │  ┌─────────┐  │
    │  ───► │  Merchant    │               │               │  │ Install │  │
    │       │  Approves ───│───────────────│──────────────►│  │  App?   │  │
    │       │              │               │               │  │  [Yes]  │  │
    │       │              │               │               │  └─────────┘  │
    │       │              │               │               │               │
    │   5   │              │               │◄──────────────│  Redirect     │
    │       │              │               │  /callback    │  with Code    │
    │       │              │               │  ?code=xyz    │               │
    │       │              │               │               │               │
    │       │              │  6. Validate  │               │               │
    │       │              │     State     │               │               │
    │       │              │               │               │               │
    │       │              │  7. Exchange  │               │               │
    │       │              │     Code ─────│──────────────►│  POST         │
    │       │              │               │               │  /access_token│
    │       │              │               │               │               │
    │       │              │  8. Receive   │◄──────────────│  Return       │
    │       │              │     Token     │               │  Token        │
    │       │              │               │               │               │
    │       │              │  9. Store     │               │               │
    │       │              │     Token     │               │               │
    │       │              │               │               │               │
    │  10   │◄─────────────│  Redirect     │               │               │
    │  ◄─── │  Success!    │  to Store     │               │               │
    │       │              │               │               │               │
    └───────┘              └───────────────┘               └───────────────┘
Scopes Requested:
  • read_products, write_products
  • read_inventory, write_inventory
  • read_orders, write_orders
  • read_fulfillments, write_fulfillments
  • read_locations

How Hangfire executes scheduled sync tasks:

    USER                    WEB APP                    HANGFIRE            SYNC
    ┌───┐               ┌─────────────┐            ┌──────────────┐    ┌────────┐
    │   │               │             │            │              │    │        │
    │ 1 │  Create Task  │ Scheduled   │            │              │    │        │
    │───│──────────────►│ TaskService │            │              │    │        │
    │   │               │             │            │              │    │        │
    │   │               │ ┌─────────┐ │            │              │    │        │
    │   │               │ │ Task:   │ │            │              │    │        │
    │   │               │ │ Orders  │ │            │              │    │        │
    │   │               │ │ 9:00 AM │ │            │              │    │        │
    │   │               │ └─────────┘ │            │              │    │        │
    │   │               │      │      │            │              │    │        │
    │ 2 │               │      ▼      │            │              │    │        │
    │   │               │ Save to DB  │            │              │    │        │
    │   │               │      │      │            │              │    │        │
    │ 3 │               │      ▼      │            │              │    │        │
    │   │               │ Register ───│───────────►│ AddOrUpdate  │    │        │
    │   │               │ Recurring   │            │ RecurringJob │    │        │
    │   │               │             │            │              │    │        │
    │   │               └─────────────┘            │              │    │        │
    │   │                                          │              │    │        │
    │   │               ════════════════════════   │              │    │        │
    │   │                 TIME PASSES...           │              │    │        │
    │   │               ════════════════════════   │              │    │        │
    │   │                                          │              │    │        │
    │ 4 │               ┌─────────────┐            │  9:00 AM     │    │        │
    │   │               │             │◄───────────│  TRIGGER ────│───►│        │
    │   │               │ Hangfire    │            │              │    │        │
    │   │               │ JobService  │            │              │    │        │
    │   │               │             │            │              │    │        │
    │ 5 │               │ Execute ────│────────────│──────────────│───►│Execute │
    │   │               │ TaskAsync   │            │              │    │SyncAsync│
    │   │               │             │            │              │    │        │
    │   │               │             │            │              │    │ ┌────┐ │
    │   │               │             │            │              │    │ │Sync│ │
    │   │               │             │            │              │    │ │Ord-│ │
    │   │               │             │            │              │    │ │ers │ │
    │   │               │             │            │              │    │ └────┘ │
    │   │               │             │            │              │    │        │
    │ 6 │               │             │◄───────────│──────────────│────│ Return │
    │   │               │ Create      │            │              │    │ Count  │
    │   │               │ Execution   │            │              │    │        │
    │   │               │ Log         │            │              │    │        │
    │   │               │ ┌─────────┐ │            │              │    │        │
    │   │               │ │Complete │ │            │              │    │        │
    │   │               │ │Items:150│ │            │              │    │        │
    │   │               │ └─────────┘ │            │              │    │        │
    │   │               │             │            │              │    │        │
    └───┘               └─────────────┘            └──────────────┘    └────────┘
Cron Schedule Presets:
PresetExpressionDescription
every5min*/5 * * * *Every 5 minutes
every15min*/15 * * * *Every 15 minutes
hourly0 * * * *Every hour
daily0 0 * * *Daily at midnight
daily9am0 9 * * *Daily at 9:00 AM
weekdays0 9 * * 1-5Weekdays at 9:00 AM

MySQL Database Tables:
Database Tables
├── tenants                    # Organization/tenant data
├── stores                     # Store configurations
├── host_platform_configurations # ERP connection settings
├── store_host_mappings        # Store-to-host platform mappings
├── scheduled_tasks            # Task configurations
├── task_execution_logs        # Job execution history
├── product_cache              # Product catalog cache
├── order_cache                # Order sync tracking (SyncCache/)
├── permissions                # Security permissions
├── roles                      # User roles
├── role_permissions           # Role-permission assignments
├── email_templates            # Email template storage
└── application_settings       # App configuration (email settings, etc.)
Database Benefits:
BenefitDescription
PersistenceData survives container restarts in production environments
DeduplicationPrevents re-syncing already processed records
Incremental SyncOnly process new/changed data since last sync
Error RecoveryResume from last successful point after failures
PerformanceIndexed lookups without external API calls
Audit TrailTrack what was synced and when with full history
ScalabilityManaged database can scale with your needs
Frequently Asked Questions

You control the sync frequency through Scheduled Tasks. Set up recurring schedules (every 15 minutes, hourly, daily, etc.) or trigger syncs on-demand when needed. Orders can also sync in near real-time via webhooks.

Failed syncs are logged with detailed error messages. The system will retry failed operations, and you can view the execution logs to diagnose issues. Critical failures can trigger email notifications.

Yes! You can connect multiple stores and map each to different host platforms, locations, or use different configurations. Each store can have its own sync settings and schedules.

Products are matched using SKU codes. Ensure your store products have SKUs that match the item identifiers in your host platform for accurate inventory and order line item mapping.
Key Concepts
Tenant
An organization or business unit with its own stores and configurations.
Store
A connected e-commerce platform (Shopify store, WooCommerce site, etc.).
Host Platform
A backend system (ERP, order management, etc.) that receives and processes store data.
Platform Mapping
Configuration that defines how store data translates to host platform records.
Scheduled Task
An automated job that runs syncs on a defined schedule or on-demand.
Need Help?

If you're experiencing issues or need assistance with configuration, please contact your administrator or support team.