Shopware import: 33 hours to 3 hours for 530K SKUs
Cut Shopware 6 import time by 91% for a German retailer. 530K+ SKUs in under 3 hours using Redis, Symfony Messenger, and dynamic batch sizing.
The Challenge
A German retailer with 530,000 SKUs was running an import that took 33 hours. Daily catalogue updates were impossible. The team was running it as a weekend job and praying nothing crashed at hour 18.
Critical Pain Points
- A 33-hour import that blocked daily catalogue work
- Inventory drift led to overselling between weekly syncs
- Server resources buckled mid-run, killing performance for live shoppers
- No way to push partial updates: every change meant a full reimport
- Database locks during peak hours forced importers off business time
Weekly updates were the ceiling. Competitors with daily price feeds were eating their lunch on long-tail SKUs.
The Solution
I rebuilt the import pipeline so it stops doing the same lookups twice and runs in parallel.
Dynamic batch sizing
Batch size adjusts to payload weight on the fly. Light products move in big chunks, heavy ones in small ones, and memory never tips over.
Composite indexes where it counts
Profiled the import to find lookup hot spots, then added composite indexes that cut validation queries from milliseconds to microseconds.
Symfony Messenger queue
Multiple workers process import streams in parallel without stepping on each other. The pipeline scales horizontally if the catalogue grows.
Redis cache for the boring lookups
Category mappings and attribute IDs live in Redis. The import stops asking the database the same question 530,000 times.
Results & Business Impact
33 hours to 2.8 hours
Same catalogue, same data, 91% less time. Same-day updates are now routine instead of a weekend job.
Daily syncs unlocked
Inventory and pricing refresh every morning. Overselling tickets dropped to almost zero.
Server load down 60%
Imports run during business hours without any slowdown for live shoppers.
Delta imports under 30 minutes
Routine updates only touch what changed. The 3-hour full import is now the worst-case scenario.
Technologies Used
- Shopware 6
- PHP 8
- Symfony
- REST API
- MySQL
- Redis
- Messenger
- Doctrine
Imports eating your weekend?
If your Shopware import runs longer than your team's coffee break, there's usually a big speedup hiding in the pipeline. Let's find it.
Book a consultationRelated Case Studies
Pharmaceutical ERP integration
Bidirectional Shopware 6 to ERP sync for a German pharma distributor. 300K+ SKUs with batch tracking, expiry alerts, and audit trails. Zero fulfilment errors.
Read Case Study → B2B SolutionsIndustrial tender platform
Shopware 6 B2B tender plugin for a DACH industrial dealer. Multi-level approvals, status workflows, and a self-service dashboard. Cycle time cut from 6 weeks to 3.
Read Case Study → B2B SolutionsB2B RFQ platform
Shopware 6 RFQ platform for a German industrial distributor. Multi-item quote builder, ERP sync via OAuth2, DE/EN localisation, 24/7 self-service.
Read Case Study →