# Shopify integration

> How the Maxmove Shopify app connects a store, prices same-day delivery at checkout, imports paid orders, and writes fulfillment status back to Shopify.

The Maxmove app for Shopify shows Maxmove same-day delivery as a shipping rate at checkout, turns paid orders with that rate into Maxmove deliveries, and reports delivery progress back to the Shopify order.

For click-by-click setup, see [Set up the Maxmove Shopify app](https://maxmove.com/en/help/business-api/shopify-maxmove-setup).

## How it connects

The app is an embedded Shopify Admin app, listed in the Shopify App Store at [apps.shopify.com/maxmove](https://apps.shopify.com/maxmove).

- **Not the public API.** The app talks to Maxmove through its own server-to-server interface, not the `/v1` API, and doesn't use `/v1` API keys. Its orders send no `/v1` webhook events.
- **Linking.** From the app, an owner or admin of a Maxmove business workspace signs in to Maxmove and approves the link. One Shopify store is linked to one workspace.
- **Shopify access.** The app requests access to locations, orders, products, inventory, fulfillment orders, shipping, and fulfillments, so it can register the shipping rate, read orders, and create fulfillments.
- **Shopify webhooks.** Maxmove receives `app/uninstalled`, `orders/create`, `orders/updated`, `orders/cancelled`, and Shopify's privacy compliance topics, and verifies their HMAC signatures.

## Checkout rates

Maxmove registers a carrier service called **Maxmove Same-Day Delivery**. The merchant adds it to a shipping zone in Shopify.

- **Price.** Maxmove prices the cart live. The shopper sees the price from the store's pricing policy: the live price with a markup or discount, a fixed price, free delivery above a cart subtotal, and an optional cap on the carrier cost.
- **Pickup times.** Depending on the policy, the shopper picks the earliest pickup or a 2-hour slot, up to 35 hours ahead.
- **Vehicle.** A default vehicle type per pickup location, or an automatic choice based on package dimensions and weights from product variant metafields.
- **Failures.** Maxmove answers within 2.5 seconds. If it can't price the cart, it returns no rate and Shopify shows the store's other rates.

Carrier-calculated rates from apps need a Shopify plan that supports them: Grow with yearly billing, Advanced, Plus, or a development store. Letting shoppers choose extra services at checkout needs Shopify Plus.

## Data flow

**1. Order placed**

Shopify sends `orders/create`. Maxmove stores the webhook and processes it in the background, with retries.

**2. Import checks**

With auto-import on, Maxmove imports the order by itself. With auto-import off, it imports nothing until the merchant sends the order with **Send to Maxmove** on the app's **Orders** page. Either way, the order must use a Maxmove shipping rate, have one shipping line, one open fulfillment order, and one origin location, and be paid (by default, Maxmove waits until the order is paid). Maxmove re-prices the route and checks the result against what the shopper accepted.

**3. Delivery created**

One Shopify order becomes exactly one Maxmove delivery, even if it is sent more than once. A background reconciliation job catches missed webhooks. With auto-import on, it imports orders whose webhook was missed. With auto-import off, it only applies missed updates and cancellations to orders that were already sent.

## Status sync

Once a courier accepts the delivery, Maxmove creates a Shopify fulfillment with the tracking company **Maxmove**, the Maxmove order id as tracking number, and a tracking link. For live orders, Shopify notifies the customer.

Maxmove then adds fulfillment events as the delivery progresses: confirmed, in transit, picked up by carrier, out for delivery, and delivered (with a proof-of-delivery summary). The estimated delivery time comes from the courier's ETA. A cancelled delivery adds a failure event.

## Payment

The shopper pays the Shopify store. Maxmove charges the workspace's company card per delivery: it authorizes the amount without the merchant present when it imports the order, and captures it after completion. A cancellation releases the authorization.

## Cancellations

- Cancelling the order in Shopify cancels the Maxmove delivery while that is still possible, whether auto-import is on or off.
- Orders that are no longer paid or change materially are cancelled too.
- A delivery cancelled by Maxmove adds a failure event to the fulfillment. It never cancels or refunds the Shopify order.

## Limits and requirements

- A Maxmove business workspace with the Integrations and Payments modules, and a company card ready for billing.
- At least one active pickup location with a default vehicle type.
- A currency with two decimals that matches the quote.
- Orders with more than one shipping line, fulfillment order, or origin location are not imported.

## Uninstall and privacy

Uninstalling the app deletes its Shopify tokens, deactivates the carrier service, and turns auto-import off. Maxmove processes Shopify's customer and shop redaction requests and keeps raw webhook events for 30 days.

---

Source: https://maxmove.com/en/developers/docs/integrations/shopify
