MPH WMS
IntegrationsPlatforms

Shopify

Connect your Shopify store to MPH WMS

Connecting

  1. Go to Settings → Integrations → Add integration and choose Shopify.
  2. Enter your store domain, for example my-store, and continue.
  3. Approve the permissions in Shopify.
  4. 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:

SettingReports when
on_shipmentThe shipment is booked
on_fulfillmentThe fulfilment is created
offNever. 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.

Turn it on with Register under Checkout rates on the same tab. This registers MPH WMS as a carrier service in Shopify, and the card shows since when. Repair registers it again, for example after the app was reinstalled or the service was removed in Shopify. Deregister removes it, and Shopify's checkout stops asking MPH WMS for rates.

A method can also carry visibility rules that decide whether it is offered at all: company name present or absent on the checkout address, and cart items by SKU or vendor. Rules are grouped; every rule in a group has to match, and the method is offered when any group matches. No rules means always offered. Cart rules look at every line: a positive rule means any line matches, a negative one means no line matches. The order value, weight and quantity limits on each currency row still apply on top. Typical use: a business delivery method only when the address has a company name.

Shopify documents the company name as possibly empty in rate requests to API-created carrier services, so run a test checkout with a company on the address and confirm the method appears before relying on a company rule.

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, or mark it Not handled here for a location someone else ships from, such as a retail store.

Routing works per line, because Shopify assigns each line of an order to a location. Every line is imported, so the order's totals and accounting stay whole. Lines at a location you do not handle are locked and marked Fulfilled by with that location's name. They are never allocated, picked or reported as shipped by MPH, and the order counts as fulfilled once your own lines have shipped. An order is skipped only when none of its lines is yours.

A location that is not listed at all follows the setting for unmapped locations. Import to the default warehouse treats its lines as yours and ships them from the connection's default warehouse. Not handled here treats them like any other location you do not handle: imported, locked, and left to someone else.

One limit: MPH reads up to 10 fulfillment orders per order and up to 50 line items in each. In a larger split order, the lines beyond that take the location of the first fulfillment order.

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:

  1. Check the connection status on Settings → Integrations.
  2. Look for a re-authorisation warning. Changed scopes need the merchant to re-grant.
  3. Check the cutoff - an order older than it will never import, and this is by far the most common cause.
  4. Check import rules and location routing. A rule that matches nothing imports nothing.
  5. Read the Logs tab for the actual error.

On this page