Back to BlogDeveloper Portal
Integration Guide
Integrating NoPOS with Shopify
Jessica Park••10 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:
- Shopify webhooks notify NoPOS of online orders
- NoPOS webhooks update Shopify inventory
- Both systems maintain consistent product catalogs
Step 1: Configure Shopify App
First, create a private Shopify app:
- Go to Shopify Admin > Apps > Develop apps
- Create a new app with these permissions:
- 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
- **Handle Conflicts**: Implement conflict resolution for simultaneous updates
- **Monitor Sync Status**: Set up alerts for sync failures
- **Test Thoroughly**: Test with a subset of products before full rollout
- **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.