Catalog Automation
The ERP remains the single source of truth — products, prices, media, and stock flow to Shopify without manual maintenance or copy-paste errors
Automated synchronization of products, variants, prices, media, metafields, translations, and warehouse stock — from structured ERP exports straight into your Shopify store. Change-aware, oversell-safe, fully auditable.
The ERP remains the single source of truth — products, prices, media, and stock flow to Shopify without manual maintenance or copy-paste errors
On-hand-based inventory writes preserve committed order stock, so aggressive sync schedules never cause overselling
Checksum-based media diffing keeps Shopify image URLs permanent, protecting Google image rankings and Merchant Center feeds through every catalog update
Dry runs, full diff previews, snapshot exports, and per-run audit logs make every change verifiable and reversible
PM Shopify Product Sync connects your ERP system to Shopify without manual product maintenance. The tool reads structured JSON exports from your ERP, groups variant records into complete Shopify products, and syncs everything through the Shopify GraphQL Admin API — titles, descriptions, variants, prices, images, videos, metafields, collections, and translations.
Every sync run is change-aware: only data that actually changed is written to Shopify. Images keep their stable Shopify media URLs so Google and Merchant Center indexing is never disrupted. Prices with expiration dates handle themselves. Products go active or draft automatically based on your ERP's status flags.
A second module keeps your inventory honest: warehouse stock from XLS, XLSX, or CSV exports is pushed to Shopify as on-hand quantities — a deliberate design choice that preserves committed order stock and prevents overselling. Run everything from a browser dashboard with real-time progress, or fully automated via cron.
PM Shopify Product Sync is developed and operated by premotion media. Deployment and pricing are available on request.
Every building block is focused on a clear benefit and fits into existing processes.
The tool ingests variant-level JSON exports from your ERP, merges records that belong to the same product group, and builds complete Shopify products with color and size options. The designated master record supplies title, description, tags, and metafields; every record becomes a Shopify variant identified by its SKU.
The tool ingests variant-level JSON exports from your ERP, merges records that belong to the same product group, and builds complete Shopify products with color and size options. The designated master record supplies title, description, tags, and metafields; every record becomes a Shopify variant identified by its SKU. Product creation follows Shopify's current best practices: the product shell is created first, then variants are added in bulk with atomic replacement of the auto-generated default variant — avoiding the option collisions that break naive importers.
Product images are business-critical: their Shopify URLs are indexed by Google and referenced in Merchant Center feeds. PM Shopify Product Sync never re-uploads an unchanged image. A checksum-based diff engine with ten decision rules determines per image slot whether to upload, replace, or keep existing media — so stable images keep their permanent Shopify URLs forever.
Prices flow from up to three sources with a clear override hierarchy: a dedicated price export beats embedded status prices, which beat the base product export. Special prices carry expiration dates and retire themselves — no manual cleanup after a sale ends.
Your ERP decides what is sellable. A dedicated status export activates and deactivates variants; the tool translates that into Shopify product status: if any variant in a group is active, the product is set to Active — if all variants are inactive, it becomes a Draft.
Product attributes, care symbols, material compositions, bullet points, and wholesale prices are written as Shopify metafields with content-hash change detection and batched mutations. Multilingual stores are first-class: the tool registers translations for titles, descriptions, and metafields via Shopify's translation API.
The inventory module reads warehouse stock from XLS, XLSX, or CSV files and pushes it to Shopify as on-hand quantities — never as available quantities. Shopify then calculates availability itself, which means stock committed to open orders is always preserved and the store cannot oversell during a sync. A step-by-step wizard makes every run verifiable: parse the file, fetch current Shopify inventory, review a full diff of every change, then apply in batches. Before writing anything, you can export a snapshot of current Shopify stock as XLSX for manual rollback.
Every sync can be started from a clean, German-language browser dashboard with live progress via server-sent events, a result summary grid, and an integrated log viewer. The same pipeline is available as a command-line tool for cron automation — full syncs overnight, price updates hourly, status updates every quarter hour.
The sync is designed to run every night without a human watching. Failed products and variants are remembered and retried first on the next run. If a product was deleted in Shopify by hand, the tool detects the dead reference and recreates it. API throttling is handled adaptively based on Shopify's actual cost budget feedback.
Configure your Shopify store domain and credentials — either a static access token or modern OAuth client credentials with automatic token refresh. Grant the required product, inventory, and translation scopes.
Place your ERP's JSON exports in the data directory: the product export as the source of truth, plus optional price and status override files. For inventory, upload your warehouse XLS, XLSX, or CSV export.
Map ERP category IDs to Shopify collections and warehouse identifiers to Shopify locations. Set your master locale and translation locales.
Run a dry run from the CLI or the dashboard. Review exactly what would be created, updated, or removed — no changes are written to Shopify.
Start the sync from the browser with live progress, or schedule it via cron: full sync nightly, prices hourly, status every 15 minutes. The retry-first engine and audit log keep unattended runs reliable and traceable.
The solution is a particularly good fit for these teams, roles and business models.
Built for the realities of fashion data: color and size variant matrices, seasonal special prices with expiration dates, care symbols, material compositions, and per-color image sets — all mapped cleanly to Shopify's product model.
If your ERP is the source of truth, your shop should follow it automatically. Structured exports go in; a fully maintained Shopify catalog comes out — no manual product editing, no copy-paste errors.
Aggregate stock from multiple warehouses into one Shopify location, split it across locations for B2B and B2C, or exclude warehouses entirely — with a full diff preview before any quantity changes.
German master data with English translations out of the box, extendable to any set of locales via Shopify's native translation system.
Operate product data pipelines for clients with dry runs, audit logs, snapshot exports, and a dashboard clients can monitor — while cron handles the day-to-day.
Image URLs stay stable across syncs, so Google image rankings and Merchant Center feeds are never disrupted by a catalog update.
Products with titles, descriptions, and tags; variants with SKU, price, barcode, and weight; images and videos including sort order; product and variant metafields; translations; collection assignments; active/draft status; and warehouse stock levels.
No. The media engine compares checksums per image slot and only touches images that actually changed. Unchanged images keep their permanent Shopify URLs, so Google indexing and Merchant Center feeds stay intact across every sync.
It writes on-hand quantities instead of available quantities. Shopify then calculates availability itself by subtracting committed and reserved stock — so quantities reserved for open orders are never overwritten, even if a customer buys during the sync.
Yes. The product sync has a full dry-run mode, and the stock sync uses a step-by-step wizard that shows a complete diff of every change — old value, new value, and delta per SKU — before you apply anything.
The product sync reads structured JSON exports and the stock sync reads XLS, XLSX, or CSV files with automatic column detection for German and English headers. If your ERP can export in these formats, it can feed the sync. premotion media can advise on mapping your specific export format.
Yes. The CLI is designed for cron scheduling: full sync nightly, price updates hourly, status updates every 15 minutes — each mode runs independently. Failed items are retried first on the next run, and every operation is logged.
You decide. Orphan variants can be archived — price set to zero while keeping their Shopify ID stable — or deleted entirely. Orphan media is cleaned up automatically once the complete product has been synced.
Yes. It targets the Shopify GraphQL Admin API version 2026-01, uses the current product model with bulk variant mutations, and supports the modern OAuth client credentials flow with automatic token refresh alongside classic static tokens.
PM Shopify Product Sync turns your ERP exports into a fully maintained Shopify store — products, variants, prices, media, metafields, translations, and warehouse stock, all synchronized automatically and safely. Change-aware writes protect your SEO. On-hand inventory logic protects you from overselling. Dry runs and audit logs keep you in control. Talk to premotion media about connecting your ERP to Shopify — deployment and pricing are available on request.
Discuss your project