N
NoPOS
Back to Blog
Integration Guide

Integrating NoPOS with Shopify

Jessica Park10 min read

Unify your online and offline sales channels by integrating Shopify with NoPOS. This guide walks through the complete integration process.

Why Integrate Shopify with NoPOS?

Combining Shopify's e-commerce platform with NoPOS's in-store capabilities provides:

  • Unified Inventory: Real-time sync between online and in-store stock
  • Omnichannel Experience: Buy online, pick up in store (BOPIS)
  • Centralized Orders: Manage all orders from one dashboard
  • Customer Data Sync: Unified customer profiles across channels

Setup Overview

The integration uses webhooks and APIs to keep data synchronized:

  1. Shopify webhooks notify NoPOS of online orders
  2. NoPOS webhooks update Shopify inventory
  3. Both systems maintain consistent product catalogs

Step 1: Configure Shopify App

First, create a private Shopify app:

  1. Go to Shopify Admin > Apps > Develop apps
  2. Create a new app with these permissions:
  3. Copy your API credentials

Step 2: Set Up NoPOS Integration

Configure the Shopify integration in NoPOS:

const integration = await fetch('https://api.nopos.dev/v1/integrations/shopify', {
  method: 'POST',
  headers: {
    'Authorization': 'Bearer YOUR_NOPOS_API_KEY',
    'Content-Type': 'application/json'
  },
  body: JSON.stringify({
    shop_domain: 'your-store.myshopify.com',
    api_key: 'YOUR_SHOPIFY_API_KEY',
    api_secret: 'YOUR_SHOPIFY_API_SECRET',
    sync_inventory: true,
    sync_orders: true,
    sync_customers: true
  })
});

Step 3: Configure Webhooks

Set up webhooks for real-time synchronization:

Shopify → NoPOS Webhooks

// Configure in Shopify Admin
const webhooks = [
  {
    topic: 'orders/create',
    address: 'https://api.nopos.dev/webhooks/shopify/orders'
  },
  {
    topic: 'products/update',
    address: 'https://api.nopos.dev/webhooks/shopify/products'
  }
];

NoPOS → Shopify Webhooks

// Configure in NoPOS dashboard
const noposWebhooks = [
  {
    event: 'inventory.updated',
    url: 'https://your-store.myshopify.com/webhooks/inventory'
  },
  {
    event: 'product.created',
    url: 'https://your-store.myshopify.com/webhooks/products'
  }
];

Step 4: Initial Data Sync

Synchronize your existing product catalog:

// Sync products from Shopify to NoPOS
const syncProducts = await fetch(
  'https://api.nopos.dev/v1/integrations/shopify/sync/products',
  {
    method: 'POST',
    headers: {
      'Authorization': 'Bearer YOUR_NOPOS_API_KEY'
    }
  }
);

Handling Inventory Sync

When inventory changes in-store, update Shopify:

// Inventory update webhook handler
app.post('/webhooks/nopos/inventory', async (req, res) => {
  const { product_id, variant_id, quantity, location_id } = req.body;
  
  // Update Shopify inventory
  await updateShopifyInventory(variant_id, quantity, location_id);
  
  res.status(200).send('OK');
});

Best Practices

  1. **Handle Conflicts**: Implement conflict resolution for simultaneous updates
  2. **Monitor Sync Status**: Set up alerts for sync failures
  3. **Test Thoroughly**: Test with a subset of products before full rollout
  4. **Batch Updates**: Use batch APIs for bulk operations

Troubleshooting

Inventory Discrepancies - Check webhook delivery logs - Verify location mappings - Review sync error logs

Order Sync Issues - Confirm webhook endpoints are accessible - Check API rate limits - Verify order status mappings

Next Steps

  • Set up [multi-location inventory](https://developer.nopos.dev/multi-location)
  • Configure [customer loyalty sync](https://developer.nopos.dev/loyalty)
  • Enable [BOPIS functionality](https://developer.nopos.dev/bopis)

Visit the Developer Portal for detailed API reference.

Ready to dive deeper?

Explore our comprehensive API documentation and code examples.

Developer Portal

More from NoPOS Blog