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
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.
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.
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
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
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
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.
| Feature | Description |
|---|---|
| Multi-Store Management | Connect and manage multiple e-commerce stores |
| Multi-Platform ERP | Support for various ERP systems via plugin architecture |
| Automated Sync | Scheduled background jobs via Hangfire |
| Data Transformation | Map store data to ERP-specific formats |
| Caching | Database-backed cache for sync state and performance |
| Multi-Tenancy | Isolated 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:
order_number: "1001"total_price: 99.99financial_status: paidline_items: [...]
externalId: "SHP_1001"total: 99.99recordType: cashsaleitem: [...]
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_productsread_inventory, write_inventoryread_orders, write_ordersread_fulfillments, write_fulfillmentsread_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:
| Preset | Expression | Description |
|---|---|---|
| every5min | */5 * * * * | Every 5 minutes |
| every15min | */15 * * * * | Every 15 minutes |
| hourly | 0 * * * * | Every hour |
| daily | 0 0 * * * | Daily at midnight |
| daily9am | 0 9 * * * | Daily at 9:00 AM |
| weekdays | 0 9 * * 1-5 | Weekdays 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:
| Benefit | Description |
|---|---|
| Persistence | Data survives container restarts in production environments |
| Deduplication | Prevents re-syncing already processed records |
| Incremental Sync | Only process new/changed data since last sync |
| Error Recovery | Resume from last successful point after failures |
| Performance | Indexed lookups without external API calls |
| Audit Trail | Track what was synced and when with full history |
| Scalability | Managed database can scale with your needs |
Frequently Asked Questions
Quick Actions
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.