A split inventory view doubles the workload for retailers running Shopify alongside physical stores. One customer orders online after the store sells the same unit that morning. Another asks in-store about an item shown online as available, although the shelf has been empty for three days. These are signs that two inventory systems are counting differently, with neither aware of the other's activity.
For Spanish and European retailers, pairing Shopify with a physical POS is now the usual small-to-mid-size setup. Connecting the systems has been technically possible for several years. The practical work is deciding what to settle before connecting, how the link operates, and where day-to-day edge cases arise.
When inventory counts diverge
Independent Shopify and POS systems start drifting from day one. Within two weeks of ordinary trading, fast-selling SKU records at a typical retailer can differ by 10 to 25 percent between channels. After two months, popular-item gaps are often causing operational trouble, even when the retailer has not linked those issues to the underlying data.
Four sources drive the divergence:
- In-store sales that deduct from the POS but not from Shopify
- Online sales that reduce Shopify inventory but do not update the POS stock count
- Returns and exchanges processed in one channel that are not reconciled in the other
- Manual stock adjustments, receiving variances, or damage write-offs entered in one system and not the other
Each causes a minor mismatch. Over weeks of trading, these leave both systems with fictional records for any SKU sold through both channels.
Data flow between both systems
Inventory integration involves more than matching stock totals. Three data categories must move in both directions to keep the systems aligned:
Product catalog and variants. SKU codes, size and color definitions, and product identifiers must correspond in both systems. A different Shopify SKU and POS SKU cannot be matched, so the integration treats them as separate items. It sounds basic, yet inconsistent SKU naming is the most common source of mapping failures during setup.
Sales transactions. Each sale, return, and exchange completed in either channel must change the shared inventory count. Timing is critical: for high-velocity SKUs during peak periods, a 30-minute delay between sale and update can cause an oversell when stock is low in both channels.
Stock adjustments and operational movements. Damaged units written off, supplier stock received, and inventory moved between two physical stores must all enter the shared count, rather than only the system used by the person handling the task.
Align data before connecting
Before connecting Shopify to your POS, align the stock counts. Linking systems with different counts for one SKU, then allowing one to overwrite the other, spreads the wrong count across both systems.
Export current counts from Shopify and the POS for every shared SKU, then compare them. They will differ. For each gap, choose the correct figure, usually the POS figure for store stock because the terminal updates it directly, and fix the other system before connecting.
For a retailer with 300 to 600 active SKUs, this takes two to four hours. It is not the engaging part of the project, but it decides whether the integration rests on accurate data or errors accumulated by independent systems over months or years.
Connect Shopify and POS with Stockagile
Connecting both systems through Stockagile, rather than directly, makes Stockagile the inventory master. Stock movements from both channels enter Stockagile, which sends the authoritative count back to Shopify and the POS. This limits conflicts when separate transactions update one record at the same time.
Shopify connection setup:
- In Stockagile's Integrations panel, select Shopify and enter your store URL
- Authorize Stockagile in your Shopify admin (it requests read access to orders and products, write access to inventory levels)
- Run the initial catalog sync: Stockagile imports all active products and their variant structure from Shopify
- Map Shopify variant identifiers to your internal SKU codes if they differ
- Set your inventory buffer: the minimum units threshold below which Shopify shows a product as unavailable online
POS connection for Lightspeed, Square, or Holded:
- In Stockagile's Integrations panel, select your POS system
- Authorize with your POS admin credentials
- Map locations: each physical store in your POS becomes a Stockagile location
- Run the SKU match: Stockagile compares POS product identifiers against the Shopify catalog you already imported. Most matches are automatic if SKU codes are consistent
- Verify the aligned stock counts from your preparation step against the initial sync output
Managing operational edge cases
Most retailers meet problems in three situations during the first weeks after launch:
Online returns handled in-store. A customer returning an online purchase in person creates a POS transaction. Whether the unit returns to the shared pool or a particular fulfillment location depends on your setup. Set the rule in Stockagile before launch, or the return may create phantom stock in the wrong location.
Shopify flash sales and promotions. A promotion can accelerate online orders for one SKU and deplete shared stock faster than usual. If store staff do not know about it, they may sell units already committed online. For planned promotions, set a Stockagile allocation rule that reserves part of available stock for each channel before the sale begins.
Inter-store transfers. Moving 15 units from the Madrid store to Barcelona belongs in Stockagile as a transfer event, not a sale in one location followed by a purchase in another. Incorrect transfer records create a lasting discrepancy that will not reconcile on its own. Training store managers to record transfers properly is a one-time investment against recurring inventory errors.
Choosing the inventory source of truth
Every integration needs a clear answer when Shopify and the POS show different stock counts: which system takes precedence? There is no universal answer, but this framework is practical:
Stockagile owns stock quantities. Both channels report to it, and it sends the authoritative counts back. Correct discrepancies in Stockagile, not directly in Shopify or the POS.
Shopify owns the online product catalog. New products, variants, and content changes begin there and sync to Stockagile. This matches how most retailers manage product information.
This division prevents circular conflicts and shows where corrections belong.
What integration leaves manual
A unified inventory view shows the current stock position across channels. It does not decide what to reorder or when. Those choices need a demand forecast layer: sales speed by location, days of cover remaining, and the reorder point needed to avoid a stockout before the next delivery.
We are not saying Shopify-to-POS integration fixes inventory management end to end. It fixes data accuracy. Buyers and operations managers can work from correct figures instead of two incorrect sets. Forecasting demand and deciding reorders should improve with that data, but those decisions still require human action.
Retailers buying from disconnected counts often find surprises in the first few weeks after integration. An item may show as "available" online despite selling through in-store months ago. One store may hold excess stock while another is running low. The integration did not create these issues. It exposed existing ones and provided information for better buying decisions.
Setup takes an afternoon. Keeping the integration accurate requires continuing discipline: record transfers correctly, reconcile returns consistently, and plan promotional allocations. Retailers that treat this as ongoing work rather than a one-time configuration gain more accurate inventory data and better buying decisions over time.