Public beta
Shopify
The Zippex Shopify integration adds same-day delivery as a shipping rate at checkout. After the customer pays, a delivery is created and a driver is dispatched automatically.
v1 integration shape
The Shopify app uses a store-scoped token issued by the Zippex portal. Your Shopify store never needs a raw
zx_live_...merchant API key for checkout rate requests.Merchant install flow
- Install the Zippex app from the Shopify App Store.
- Click Connect Zippex in the app settings.
- Sign in to the Zippex portal and approve the connection for your Shopify store.
- Return to Shopify with a store-scoped token.
- The Zippex carrier service is automatically registered — same-day delivery rates appear at checkout.
Start the hosted connect flow
POST
/api/v1/platforms/shopify/connect/startGenerate the hosted Zippex connect URL for a Shopify store.
curl -X POST https:"color:#6a9955">//portal.zippex.com/api/v1/platforms/shopify/connect/start \
-H "Content-Type: application/json" \
-d '{
"shop": "my-store.myshopify.com",
"return_url": "https://my-store.myshopify.com/admin/apps/zippex"
}'200 OK
{
"shop": "my-store.myshopify.com",
"connect_url": "https://portal.zippex.com/connect/shopify?shop=my-store.myshopify.com&return_url=https%3A%2F%2Fmy-store.myshopify.com%2Fadmin%2Fapps%2Fzippex",
"expires_in": 900
}Request checkout rates
POST
/api/v1/platforms/shopify/quoteReturn a Zippex shipping rate for the current Shopify cart and destination.
"color:#6a9955">// Shopify sends a POST to your carrier service callback URL.
"color:#6a9955">// Your app forwards this to the Zippex quote endpoint.
const response = await fetch(
'https://portal.zippex.com/api/v1/platforms/shopify/quote',
{
method: 'POST',
headers: {
'Authorization': `Bearer ${storeToken}`,
'Content-Type': 'application/json',
},
body: JSON.stringify({
cart_total: rate.items.reduce((sum, i) => sum + i.price * i.quantity, 0),
destination: {
city: rate.destination.city,
state: rate.destination.province,
country: rate.destination.country,
postal_code: rate.destination.postal_code,
},
}),
}
);200 OK
{
"serviceable": true,
"quote_id": "qt_sh_e42d4e7031b445f7a1",
"customer_price": 1087,
"currency": "cad",
"eta_minutes": 41,
"expires_at": "2026-03-10T14:15:00Z",
"service_level": "same_day"
}Create the delivery after payment
POST
/api/v1/platforms/shopify/orders/{orderId}/deliveryCreate a Zippex delivery from a paid Shopify order.
"color:#6a9955">// Listen for the orders/paid webhook from Shopify,
"color:#6a9955">// then create a delivery with the quote ID saved during checkout.
const response = await fetch(
`https:"color:#6a9955">//portal.zippex.com/api/v1/platforms/shopify/orders/${shopifyOrderId}/delivery`,
{
method: 'POST',
headers: {
'Authorization': `Bearer ${storeToken}`,
'Content-Type': 'application/json',
},
body: JSON.stringify({
quote_id: savedQuoteId,
customer_phone: order.phone,
customer_email: order.email,
}),
}
);201 Created
{
"id": "del_sh_b7af8252c2f6428886",
"external_order_id": "5678",
"quote_id": "qt_sh_e42d4e7031b445f7a1",
"status": "created",
"tracking_url": "https://zippex.com/track/del_sh_b7af8252c2f6428886",
"created_at": "2026-03-10T14:03:00Z"
}Shopify app structure
A Shopify app typically needs three components to integrate with Zippex:
- Carrier Service — registered via the Shopify Admin API, calls the Zippex quote endpoint at checkout.
- Order webhook — listens for
orders/paidevents and creates a Zippex delivery. - Settings page — embedded in the Shopify admin, manages the Zippex connection and delivery preferences.
Production hardening
The current runtime issues signed store tokens directly from the portal app so the flow can be exercised end to end. Before production, back the same endpoints with persistent merchant-store records and webhook/event storage.