integration
Shopify to ERPNext operations suite
Shopify orders become submitted Sales Orders, Invoices and Delivery Notes on a schedule, with monitors for orders and products.



Overview
A one-way sync that makes ERPNext the system of record for a Shopify shop: a cron job every 10 minutes turns new and changed orders into submitted Sales Orders, Invoices and Delivery Notes, and ERPNext pushes nothing back. Two Desk pages, the Order Monitor and the Product Monitor, show what is synced, shipped and paid without opening raw documents. Live in production since May 2026.
Features
Order sync
- Shopify order becomes a submitted Sales Order; a Sales Invoice follows once paid
- Delivery Note when Shopify reports a successful fulfilment, partials included
- Cancellation in Shopify unwinds the order, all or nothing, only if nothing shipped
- Shopify quantity variants map to pack sizes on one item via Item Sales Pack
- Keyed on the Shopify order id: re-running a window never duplicates a document
Monitors
- Order Monitor reads Shopify and checks each order against ERPNext documents
- Sync, Re-sync and Import historical orders from the card
- Product Monitor with Shopify, ERPNext and Inventory tabs and bulk sync
- Sync Monitor maps 401, 403, 429, 5xx and timeouts to plain errors, flags stale runs
Reliability
- Cron every 10 minutes over a watermark window with overlap, under a Redis lock
- Cursor pagination against the Shopify API with a page cap per run
- Client-credentials access token refreshed on a schedule
- Historical import reconciled with compensating Stock Entries
- Integration tests run against a real site with bench execute
Technical details
- Built with
- Python, Frappe v16, ERPNext, Shopify REST 2025-10, Shopify GraphQL, Redis, RQ background jobs, MariaDB
- Type
- integration
- Status
- In production
Private code. Contact me for details.
Have something slow, manual, or fragile in production?
Tell me what it is. I reply within two working days, with questions.
Let's connect