Shopify
Connect your Shopify store to MPH WMS
Connecting
- Go to Settings → Integrations → Add integration and choose Shopify.
- Enter your store domain, for example
my-store, and continue. - Approve the permissions in Shopify.
- You are returned to MPH WMS with the connection active.
Shopify access tokens now expire. Existing stores that were connected before this change must reconnect once - the app prompts you when this applies. Reconnecting is the only supported path; there is no silent upgrade.
Scopes
The scopes MPH requests are declared in the app's own configuration, not chosen during connection. They cover orders (including historical orders), products, inventory, locations, fulfilments and fulfilment orders, customers, returns, shipping, and Shopify Payments payouts.
If scopes change, merchants are asked to re-grant access. The app shows a re-authorisation warning on the connection when that is pending, and syncing stays degraded until it is done.
The order import cutoff
When you connect a store, MPH records the moment of connection as your go-live cutoff. Orders placed before it are never imported, however they arrive - including by webhook. This is what stops years of order history flooding a brand new warehouse.
Move the cutoff under Settings → Integrations → your connection → Settings, in the Sync orders from field.
To pull one specific older order without moving the cutoff, use Import a specific order on the connection's Overview tab and give the order number. That deliberately bypasses the cutoff, for that order only.
What syncs
Orders, inbound
Orders, refunds, returns, taxes, fulfilment orders, the assigned location, metafields, note attributes and line properties.
Two Shopify lines can point at the same variant and still be different things - the classic case is two engravings on the same product. MPH keeps them as separate lines and never merges them by SKU.
Products, inbound
Each Shopify variant becomes one MPH item, matched on SKU. Re-running a product sync updates rather than duplicates. Name, SKU, barcode and weight come across.
Inventory, outbound
Stock levels are pushed back to Shopify so the storefront's in-stock status stays honest. Requires a default warehouse on the connection.
Fulfilments, outbound
When an order ships, the fulfilment and tracking number are reported back. Fulfilment reporting on the connection decides when:
| Setting | Reports when |
|---|---|
on_shipment | The shipment is booked |
on_fulfillment | The fulfilment is created |
off | Never. Use when something else owns fulfilment reporting |
Returns, outbound
Approving or declining a return in MPH pushes the decision to Shopify, and a return label can be pushed with it so Shopify emails the customer. See Returns.
Checkout rates
MPH can serve live shipping rates to Shopify's checkout. Configure zones, methods and rates on the connection's Shipping tab: flat or weight-tiered pricing, free above a threshold, and minimum or maximum order value, weight or quantity. Pickup point support and the number of pickup points offered are set here too.
Import rules, mapping and routing
Three separate editors on the connection, all optional:
- Import rules - only import orders that match your conditions. Groups are OR'd, conditions within a group are AND'd. No rules means import everything.
- Field mapping - map channel fields, metafields and note attributes onto MPH fields, with transforms such as trim, upper, lower, number, first and join, and a static fallback. Identity and financial fields are deliberately not mappable.
- Location routing - map a Shopify location to an MPH warehouse. Setting a location to import nowhere is how you ignore a retail store's orders. Unmapped locations either fall back to the default warehouse or are skipped, your choice.
Use Preview import before switching rules on. It shows what would come in, without writing anything.
Webhooks and polling
Webhooks give near real-time updates for orders and products. A scheduled sync also runs in the background - products and inventory every 30 minutes, orders every 15 - so a missed webhook does not mean a missed order.
Because webhook payloads can be lossy, MPH re-fetches the full order before applying your rules, mappings and routing to it.
Bundles
A bundle is one line to Shopify; its components exist only in MPH. See Bundles for how fulfilment reporting handles that.
Logs and troubleshooting
The connection's Logs tab has separate sync and webhook views, which is the first place to look when something has not arrived.
If sync is not working:
- Check the connection status on Settings → Integrations.
- Look for a re-authorisation warning. Changed scopes need the merchant to re-grant.
- Check the cutoff - an order older than it will never import, and this is by far the most common cause.
- Check import rules and location routing. A rule that matches nothing imports nothing.
- Read the Logs tab for the actual error.