Multichannel inventory automation for a fashion retailer: a worked example

Note: this article is an illustrative example based on a typical inventory automation project. It does not describe a specific Onlitions client, and the figures are rough estimates.
Summary of the example: an automatic inventory system for a fashion retailer managing 1,200 SKUs across Shopify, Amazon and a physical shop. Estimated result: around 45 hours saved a month, far fewer stock errors and about €12,500 in operational savings a year. Indicative cost: €3,500 + €150/month. Timeline: 4 weeks.
The problem: manual inventory updates don't scale
Every Monday morning, the operations manager at the retailer in our example spent 4 hours updating inventory spreadsheets. By Thursday the data was already out of date. Items shown as "in stock" on Amazon had sold out in the shop. Shopify listed products that had been sent to Amazon FBA days earlier.
This isn't unusual. Most multichannel retailers with 10–50 employees face the same problem: inventory data lives in silos, and syncing it by hand takes time and causes errors.
The real cost isn't just the 15 hours a week on spreadsheets. It's the €2,000–€5,000 in revenue lost every month to stock-outs, Amazon's penalties for overselling (€100–€500 per incident) and the operational chaos of firefighting inventory discrepancies.
Business profile (example): a growing fashion retailer
Company profile:
- Sector: fashion retail (women's accessories and clothing)
- Location: Valencia, Spain
- Team size: 25 employees
- Annual turnover: €2M
- Sales channels: Shopify (60%), Amazon Spain (30%), physical shop (10%)
- Product catalogue: 1,200 active SKUs
- Monthly order volume: 800–1,200 orders
Its growth problem:
The company had grown 140% year on year. What worked at €800K turnover—tracking inventory by hand in Excel—collapsed at €2M. They had hired an operations coordinator specifically to manage inventory, but she spent 60–70% of her time on data entry instead of strategic work.
The challenge: three systems, zero real-time sync
The technical landscape:
-
Shopify store (main e-commerce platform)
- Custom theme with 1,200 product variants
- Inventory managed in the Shopify admin
- No automatic sync with other channels
-
Amazon Seller Central (Spanish marketplace)
- FBA (Fulfilment by Amazon) for 40% of the catalogue
- FBM (Fulfilled by Merchant) for the remaining 60%
- Inventory counts separate from Shopify
-
Physical POS system (Lightspeed Retail)
- In-store inventory tracking
- Manual CSV export every week
- No API integration with the e-commerce platforms
The manual process (before automation):
- Monday AM: export the Shopify inventory report → update the master Excel file
- Monday PM: export the Amazon inventory report → reconcile with Excel
- Tuesday AM: export the previous week's sales from the POS → adjust Excel
- Tuesday PM: manually update product quantities in Shopify from Excel
- Wednesday AM: upload the inventory file to Amazon Seller Central via CSV
- Thursday: find and fix discrepancies (usually 20–30 SKUs with errors)
- Friday: repeat spot checks, prepare the reorder list for suppliers
Time spent: 15 hours/week = 60 hours/month
Error rate: about 2–3% of SKUs had wrong inventory counts at any given time, causing:
- 12–15 preventable stock-outs a month
- 4–6 overselling incidents a month (selling products already sold out)
- Average time to resolve each error: 45 minutes
The solution: real-time inventory sync with n8n
The solution is a webhook-based automation system that removes manual data entry while keeping all three platforms accurate.
Tech stack:
- Orchestration: n8n (self-hosted on a cloud server)
- Database: PostgreSQL (tracking inventory state)
- APIs: Shopify Admin API, Amazon Selling Partner API (SP-API), Lightspeed Retail API
- Notifications: Slack + email
- Hosting: a small cloud server (4 GB RAM, 2 vCPUs)
- Monitoring: uptime monitoring + custom health checks
Architecture overview:
Four main workflows work together:
1. Real-time inventory sync workflow
Trigger: webhooks from Shopify, Amazon and the Lightspeed POS Frequency: real time (< 30 seconds from sale to sync)
Logic flow:
A sale happens on any platform
↓
n8n receives the webhook
↓
Identify the SKU and quantity sold
↓
Check PostgreSQL for the current inventory state
↓
Calculate new inventory levels for every channel
↓
Update Shopify via the Admin API
↓
Update Amazon via SP-API
↓
Update the POS via the Lightspeed API
↓
Log the transaction in the database
Key technical detail: a "source of truth" reconciliation layer in PostgreSQL. When conflicting inventory data arrives from different channels (for example, someone manually adjusted inventory in the Shopify admin), the system flags it in Slack for manual review instead of creating a sync loop.
2. Low-stock alert system
Trigger: scheduled check every 6 hours Notification channels: Slack + email
Alert thresholds:
- Critical (red): < 5 units left
- Warning (amber): < 15 units left
- Info (blue): < 30 units for fast-moving SKUs
Slack message format:
⚠️ LOW STOCK ALERT - CRITICAL
SKU: WA-BL-001 (Women's Leather Bag - Black)
Current stock: 3 units
Average daily sales: 2.1 units
Days until stock-out: 1.4 days
Supplier: Accessories Supplier SL
Last order date: 2024-12-15
Reorder point: 15 units
[Reorder Now] [Snooze 24h] [Mark as Ordered]
Intelligence layer: the system calculates "days until stock-out" from the 30-day average sales pace, taking day-of-week patterns into account (for example, Monday sales are typically 40% higher than Thursday's).
3. Automatic reorder workflow
Trigger: low-stock threshold + supplier parameters Output: a pre-filled purchase order emailed to the supplier
When inventory falls below the reorder point AND the supplier's minimum order quantity can be met, the system:
- Generates a draft purchase order with recommended quantities
- Calculates the order quantity based on:
- Current stock level
- Lead time (supplier-specific: 7–14 days)
- Sales pace
- Target stock level (30 days of inventory)
- Sends the draft order to the operations manager in Slack for approval
- Once approved, emails the supplier with the order attached (a generated PDF)
Result: reorder decisions go from "reactive, when we notice a stock-out" to "proactive, with 5–7 days of lead time".
4. Stock-out prevention logic
The problem:
Amazon penalises sellers who cancel orders because of stock-outs. Each cancellation costs €100–€500 in penalties plus negative seller metrics.
The solution:
A "reserve buffer" system:
- When inventory falls to ≤ 10 units, automatically reduce the quantity available on Amazon to 50% of actual stock
- This keeps a buffer for in-store and Shopify sales while Amazon orders are fulfilled
- When stock is replenished above 30 units, remove the buffer
Example of the business logic:
Actual inventory: 8 units
Quantity listed on Amazon: 4 units (50% buffer)
Quantity listed on Shopify: 8 units (no buffer - faster fulfilment)
Available in the POS: 8 units (physical shop has priority)
In this example, Amazon stock-out penalties drop from 4–6 a month to zero in the first 90 days.
Technical implementation: the 4-week build
Week 1: discovery and API integration
- Document the current inventory flow with process mapping
- Set up the n8n instance
- Configure API access for Shopify, Amazon SP-API and Lightspeed
- Build a test environment with 50 SKUs
Week 2: building the main sync workflow
- Build the real-time webhook handlers
- Design the PostgreSQL schema for inventory state
- Implement two-way sync logic
- Test with a subset of 200 SKUs
Week 3: alerts and reorder automation
- Build the low-stock alert workflow with Slack integration
- Build the sales-pace calculation engine
- Create the automatic reorder system
- Set up email templates for supplier purchase orders
Week 4: testing, fine-tuning and go-live
- Parallel run: automation alongside the manual process for 1 week
- Reconcile discrepancies (typically a handful of SKUs with wrong starting inventory)
- Train the team on the new Slack-based approval workflows
- Full production launch with all 1,200 SKUs
After launch: 2 weeks of daily monitoring, then weekly check-ins for a month.
Results: 45 hours saved, €12,500 in annual savings
Time saved
Before automation:
- Inventory updates: 15 hours/week
- Firefighting stock-outs: 3 hours/week
- Supplier coordination: 2 hours/week
- Total: 20 hours/week = 80 hours/month
After automation:
- Monitoring alerts: 2 hours/week
- Approving reorders: 1 hour/week
- Handling exceptions: 2 hours/week
- Total: 5 hours/week = 20 hours/month
Net saving: 60 hours/month (we conservatively use 45 hours to allow for the training and adjustment period)
Fewer errors
| Metric | Before | After | Improvement |
|---|---|---|---|
| Stock-out incidents/month | 12–15 | 1–2 | 87% fewer |
| Overselling errors/month | 4–6 | 0 | 100% fewer |
| Amazon cancellation penalties | €300–€500 | €0 | 100% fewer |
| Inventory accuracy | 97% | 99.8% | +2.8 points |
| Time to detect a stock-out | 2–3 days | < 6 hours | 90% faster |
Financial impact
Direct cost savings (annual):
- Operations coordinator's time (60 h/month × €25/h × 12 months): €18,000
- 75% of that time is reassigned to higher-value work (actual salary saving: €0)
- Operational efficiency value: €13,500/year
Lower cost of errors (annual):
- Amazon penalties eliminated: €4,800/year
- Stock-out revenue protected (conservative): €8,000/year
- Less overstock (better reorder timing): €2,200/year
- Total savings on errors: €15,000/year
Net annual benefit: €28,500
Investment required
Implementation costs (estimate):
- Discovery and planning: €800
- Building the n8n workflows: €2,200
- API integrations: €1,200
- Testing and training: €600
- Total one-off cost: €4,800 (more complex POS APIs, such as Lightspeed's, can push a €3,500 estimate up to this level)
Recurring costs:
- Server hosting: €48/month
- n8n licence (self-hosted community edition): €0
- API calls (Shopify, Amazon): €15/month
- Monitoring tools: €12/month
- Maintenance (2 hours/month of support): €75/month
- Total monthly cost: €150/month = €1,800/year
3-year ROI:
- Total investment (3 years): €4,800 + (€1,800 × 3) = €10,200
- Total savings (3 years): €28,500 × 3 = €85,500
- Net ROI: €75,300 over 3 years (739% return)
Payback period: 2.2 months
Technical challenges and how to solve them
Challenge 1: Amazon API rate limits
Problem: Amazon limits how often inventory can be updated per seller account. With 360 SKUs on Amazon, updating them one by one would take minutes.
Solution: a smart queue:
- Only sync SKUs that actually changed (delta updates)
- Batch updates wherever possible (using Amazon's bulk feeds)
- Typical sync time drops to 15–30 seconds in normal operation
Challenge 2: the POS doesn't support webhooks
Problem: the Lightspeed Retail API is polling-based, not event-based. There's no real-time notification of in-store sales.
Solution:
- Query the Lightspeed API every 5 minutes for new sales
- Store the timestamp of the last check in PostgreSQL
- Only process sales created since the last check
- Acceptable delay: 5–10 minutes for in-store sales to reach the e-commerce channels
Challenge 3: mapping product variants across platforms
Problem: the same product has different IDs on Shopify, Amazon and Lightspeed. For example:
- Shopify: Product ID 8234567890, Variant ID 4523456789
- Amazon: ASIN B08XYZ1234, SKU WA-BL-001-M
- Lightspeed: Item ID 98765
Solution:
- A master SKU mapping table in PostgreSQL
- The SKU field as the universal identifier (WA-BL-001-M)
- A one-off mapping script to link IDs across all platforms
- Ongoing: new products need a manual mapping entry (about 2 minutes)
Lessons learned: 3 key insights for retailers
1. Start with a webhook-based architecture, not scheduled syncs
A scheduled sync every 15 minutes is tempting, but real time makes the difference.
Why real time matters:
- A customer sees "3 in stock" on Shopify at 10:14 AM
- A customer in the physical shop buys the last 3 units at 10:18 AM
- The online customer completes their purchase at 10:20 AM
- With a 15-minute sync: overselling detected at 10:30 AM → order cancelled
- With webhook sync: inventory updates at 10:18 AM → online customer sees "sold out" → no overselling
Implementation tip: not every platform supports webhooks. For those that don't (like the Lightspeed POS), poll every 5 minutes. For those that do (Shopify, Amazon), use webhooks straight away.
2. Build manual override options
Automation is powerful, but operations teams need escape valves.
Example scenarios that need a manual override:
- The shop manager needs to hold 10 units for a corporate bulk order
- Damaged inventory needs to be removed from e-commerce without being counted as "sold"
- Seasonal promotions need different reorder logic
Solution: a simple Slack command interface:
/inventory hold WA-BL-001 10 "Corporate order"
/inventory release WA-BL-001 10
/inventory status WA-BL-001
An operations team would use these commands a few times a week. Without them, automation creates frustration instead of efficiency.
3. Obsess over the "source of truth" problem
When inventory data exists in several systems, conflicts are inevitable. Someone manually adjusts Shopify inventory, forgetting the automation exists. Amazon reports a return that never reaches Shopify. The POS has a data entry error.
Bad approach: "last write wins" (whichever system updated most recently becomes the truth) Better approach: conflict detection + human resolution
When the system detects conflicting inventory data:
- Flag it in Slack with details: "Shopify shows 15 units, Amazon shows 18 units, POS shows 14 units for SKU WA-BL-001"
- Show the recent transaction history from the database
- Pause automatic sync for that SKU until it's resolved
- The operations manager investigates and sets the correct value by hand
- The system resumes automatic sync
Expected result: conflicts are frequent in the first month (mostly manual adjustments during the transition) and drop to 1–2 a month after that.
When inventory automation makes sense
Not every retailer needs this level of automation. Here's a decision framework:
Strong candidates for automation:
- ✅ Selling on 2+ channels (e-commerce + marketplace + physical)
- ✅ 200+ active SKUs
- ✅ 10+ hours/week spent on manual inventory updates
- ✅ Experiencing stock-outs or overselling at least monthly
- ✅ Growth rate > 50% year on year (manual processes won't scale)
Weak candidates:
- ❌ Single-channel retailers (Shopify only, no POS or marketplaces)
- ❌ < 100 slow-moving SKUs
- ❌ The manual process works fine and takes < 3 hours/week
- ❌ No technical resources to maintain the automation
The threshold question: if it saves you 40+ hours a month, is a recurring €150/month plus €3,500–€5,000 of implementation worth it? If yes, automation makes financial sense.
Implementation timeline: what to expect
In a typical inventory automation project:
Week 1: discovery (4–6 hours of your time)
- Map the current inventory process
- Document all platforms and data flows
- Identify pain points and error patterns
- Set up API access credentials
Weeks 2–3: build and testing (2–3 hours of your time)
- Weekly progress check-ins
- Test workflows in a staging environment
- Review alert formats and thresholds
- Get trained on the new Slack-based workflows
Week 4: go-live (8–10 hours of your time)
- Parallel run: automation + manual process at the same time
- Reconcile discrepancies
- Adjust thresholds based on real data
- Full production launch
Weeks 5–8: fine-tuning (2 hours/week of your time)
- Daily monitoring (first week)
- Weekly check-ins (weeks 2–4)
- Adjust reorder logic based on actual supplier lead times
- Fine-tune alert thresholds to reduce noise
Total time from your team: 25–35 hours over 8 weeks
Next steps: start automating your inventory
If you spend more than 10 hours a week updating inventory across several channels by hand, automation is likely to pay for itself within a few months.
Option 1: free inventory automation assessment (30 minutes)
We review your current process and give you:
- Estimated time savings (in hours/month)
- A technical feasibility assessment
- Approximate implementation cost and timeline
- An ROI projection based on your numbers
No commitment, no sales pitch. Book a slot.
Option 2: do it yourself
If you have technical resources in-house, our n8n tutorial covers the basics you'll need to build your own workflows.
Option 3: turnkey implementation
Typical project scope:
- Duration: 4–6 weeks
- Investment: €3,500–€7,500 (depending on the number of platforms and SKUs)
- Recurring: €150–€300/month (hosting + maintenance)
Contact: info@onlitions.io
Frequently asked questions
Q: What happens if n8n goes down? Do all my sales stop?
A: No. Your Shopify store, Amazon listings and POS keep working independently. You only lose automatic sync while it's down. Monitoring alerts us within minutes of any outage. In the rare case of an extended outage, you'd temporarily go back to manual inventory checks.
Q: Does it work with platforms other than Shopify and Amazon?
A: Yes. The same approach works with WooCommerce, PrestaShop, eBay and most POS systems that have an API. The core logic stays the same; only the API connections change. Most e-commerce platforms and marketplaces have APIs suitable for this kind of automation.
Q: What if I adjust inventory manually in the Shopify admin? Will it break the automation?
A: No. The system detects manual adjustments via webhooks and syncs them to the other platforms. However, if you manually adjust the same SKU on several platforms at once with different values, the system flags it as a conflict and asks you to resolve it. Best practice: make manual adjustments in one place (usually Shopify) and let the automation spread the change.
Q: How are product returns handled?
A: Returns are processed as negative sales. When you process a return in Shopify or Amazon, the system receives a webhook, adds the quantity back to inventory and syncs across all channels. In-store returns (POS) follow the same logic. Special case: if a return is damaged goods, you can flag it in Slack and the system won't add it back to sellable inventory.
Q: Do I need technical knowledge to manage this after implementation?
A: No. Day-to-day management happens through Slack commands and a simple admin dashboard. Common tasks (approving reorders, checking stock levels, handling alerts) need no technical knowledge. In this example, the operations coordinator has no programming experience and could run the system on her own after a short training session.
Q: What's the difference between this and a tool like Syncio or Sellbrite?
A: SaaS tools like Syncio (€99–€249/month) are ready-made solutions with fixed logic. They work well for standard use cases but can't be customised for unique business rules (like the "reserve buffer" logic for Amazon, or reorder triggers based on each supplier's lead times). A custom n8n approach costs less in the long run (€150/month vs. €200+/month) and fits your exact workflow. Trade-off: SaaS tools are plug-and-play (no implementation time), while custom automation needs 4–6 weeks of setup.
Q: Can you migrate an existing SaaS inventory tool to a custom solution?
A: Yes. The usual reason is having outgrown the SaaS tool or wanting to cut monthly costs. A migration usually takes 2–3 weeks (shorter than a new implementation because the inventory mapping already exists).
Do you run an online shop or sell on several channels? See how we do it in automation for online shops.
About Onlitions: we design and implement process automation and private AI for SMEs, at a fixed price and with data in the EU. If you'd like to see what we could automate in your business, book a free consultation.
Written by the Onlitions team | Published 15 January 2025
Need help with automation?
Book a free consultation and find out how we can help you save time and costs with tailor-made automations.
Book your free consultation