Zopping

Courier integration

Hand deliveries to a third-party courier — Shiprocket, Delhivery, Borzo, Dunzo, Porter and more — and receive status and tracking back. Requires the ShipRocket extension. Endpoints are under https://zopping.com/api/logistics-service.

Want to deliver with your own fleet instead? See Run your own logistics.

Supported couriers

  • National parcel: Shiprocket, Delhivery, DTDC, DHL, FedEx, Australia Post
  • Hyperlocal / same-day: Borzo, Dunzo, Porter, Qwqer, Volta, Loadshare, Blitz, Quickshift, Pikndel

1. Enable & add credentials

Enable the courier extension and store each courier's credentials in the organization's logistics config (e.g. Shiprocket email/password → token; Borzo token + callback token; Delhivery token). Map your store/warehouse pickup location to the courier account.

2. Choose how couriers are assigned

Set the org's logistics config:

  • CourierGeneration — MANUAL, SEQUENTIAL (priority by delivery type with cut-offs), or AUTO_ASSIGNMENT (first-fit, 5-minute cut-off).
  • Preference — FASTEST (default) or CHEAPEST.

3. Check eligible couriers

curl "https://zopping.com/api/logistics-service/courier-eligibility?organizationId=<org-id>&orderId=ORD-55012" \
  -H "Authorization: Bearer $ZOPPING_TOKEN"

Returns eligible vendors with shippingCost and pickup/delivery estimates.

4. Dispatch the shipment

On a packed order, create the courier shipment (or let auto-assignment do it when the order reaches PACKED):

curl -X POST https://zopping.com/api/logistics-service/courier \
  -H "Authorization: Bearer $ZOPPING_TOKEN" -H "Content-Type: application/json" \
  -d '{ "organizationId":"<org-id>","orderId":"ORD-55012","vendor":"SHIPROCKET","courierVendorId":"123" }'

The response carries the vendor order id, AWB / trackingId, trackURL and cost. Cancel with DELETE /courier/{id}; reverse pickups use POST /reverse-shipment.

5. Receive status (inbound webhooks)

Couriers push status changes to Zopping. Point the courier's webhook at the matching endpoint (POST /api/logistics-service/courier-event/{vendor}, e.g. /courier-event/borzo). Zopping verifies the signature, normalizes the vendor's status, updates the order and advances dispatch/completion:

Normalized statusMeaning
PENDING → ACKNOWLEDGEDCreated, courier assigned
PICKED_FROM_STOREPicked up
EN_ROUTE → OUT_FOR_DELIVERYOn the way
COMPLETEDDelivered
CANCELLED / RETURNEDCancelled / returned

6. Track

GET /track?orderId=ORD-55012&organizationId=<org-id> and GET /order-location?orderId=ORD-55012&organizationId=<org-id> return live status, ETA, location and the courier trackURL.

Flow

  1. Enable the extension and add courier credentials; map the pickup store.
  2. Order reaches PACKED.
  3. (Check eligibility →) dispatch — manually via POST /courier or automatically.
  4. Courier webhooks stream status; Zopping normalizes and updates the order.
  5. Track to delivery; on a courier cancellation, reassign.

Reference: Fulfillment & Delivery · Integrations overview.