When a Shopify store shows real courier prices at checkout — "Delhivery Surface ₹87, Xpressbees ₹92, Porter Same-Day ₹110" — those numbers didn't come from Shopify. They came from a CarrierService callback: Shopify POSTed the cart to an app, and the app answered with rates in a couple of seconds. Building that answer is simpler than it sounds, and stranger than it looks.

The callback contract

Register a carrier service on a store (via the GraphQL API or the app config), attach it to shipping zones, and Shopify calls your callback_url every time a checkout in those zones needs rates. The POST carries the origin, destination (usually to PIN granularity), and every item's weight and dimensions. Your response is a JSON array of rate options — name, price, delivery description — and Shopify renders them in checkout verbatim.

~10s
Response budget before Shopify falls back to static rates
POST
The contract: destination + items in, rate options out
1
Carrier service per app per store — one callback owns your checkout rates

The engineering realities

Latency is the boss constraint. Real courier quote APIs take hundreds of milliseconds each; a synchronous checkout waits for none of them. The survivable pattern is a short-cached rate table (your own card + lane estimates), with live quotes only for the carriers fast enough. Item data is approximate. Shopify sends what the product records carry — garbage weights in, garbage rates out. Registration is ownership. The carrier service belongs to the app that created it — a service registered by one app can't be managed by another, which is how dev and production apps collide on shared names.

Checkout rates aren't a Shopify feature you enable. They're a contract you answer — every cart, every zone, every few seconds of patience.

Pure Parcel registers a CarrierService on your store and answers it with your real carrier rates — the checkout shows what shipping actually costs.

See how →

The bottom line

CarrierService is the difference between "shipping: ₹99 flat" and "shipping: ₹87 surface, ₹121 express" at the moment the buyer decides. The contract is one POST and a fast answer — the work is making the answer real, fast and right per lane.

Ship every courier without leaving your store

Pure Parcel is the multi-courier layer for Indian stores — hyperlocal and national carriers in one booking flow.

Porter, Borzo & national carriers, on the order page
Live rate comparison on every order
Your own courier accounts or ours — your rates apply
Carrier rate & platform fee shown as separate lines
COD collection & tracking built in
Works with Shopify & WooCommerce
You're on the list — we'll reach out to get you set up.

Free 14-day trial · No card required · Set up in minutes