Parcel Status Update

Parcel status update allows you to sync delivery status from your logistics platform back to EasyStore, keeping merchants and customers informed about their shipment progress.

How It Works

When there are status updates from your logistics platform (e.g., parcel picked up, in transit, delivered), you can use the Update Fulfillment API to sync the status back to EasyStore.

  1. Your logistics platform receives a delivery status update
  2. Your app calls the EasyStore Update Fulfillment API with the new status
  3. EasyStore updates the order's fulfillment status in the merchant's admin panel
  4. Customers can see the updated tracking status

Update Fulfillment API

curl --location --request PUT 'https://{shop}/api/3.0/orders/:order_id/fulfillments/:fulfillment_id.json' \
--header 'EasyStore-Access-Token: {app_access_token}' \
--header 'Content-Type: application/json' \
--data '{
    "courier": "AllSome",
    "tracking_number": "EN813659438MY",
    "tracking_url": "https://tracking_url.com/EN813659438MY",
    "status": "delivered",
    "service": "AllSome Fulfillment Malaysia",
    "message": "Delivered"
}'
      

URL Parameters

Parameter Description
:order_id The ID of the order
:fulfillment_id The ID of the fulfillment to update

Request Body Parameters

Parameter Type Description
courier string Name of the courier/logistics provider. When updating a fulfillment this field is called courier; when creating one it's tracking_company. Both set the same value.
tracking_number string Parcel tracking number
tracking_url string URL for tracking the parcel
status string Current status of the parcel
service string Name of the shipping service
message string Status message or description

📖 Full documentation on Update Fulfillment API: EasyStore Postman Collection

Status Values

Send one of these values in status. A value that isn't in this list is ignored without an error, and the fulfillment keeps its current status, so check your spelling.

Status Description
pending Shipment created, waiting to be processed
open Fulfillment created, not yet shipped (the default)
label_purchased Shipping label purchased
label_printed Shipping label printed
pending_pickup Waiting for the courier to pick up
successful_pickup Courier picked up the parcel
arrived_sorting_hub Parcel arrived at a sorting hub
in_transit Parcel is on the way
out_for_delivery Parcel is out for delivery
attempted_delivery Delivery was attempted but not completed
delivery_rescheduled Delivery was rescheduled
ready_for_pickup Ready for the customer to collect
available_for_pickup Available for the customer to collect
customer_picked_up The customer collected the parcel
delivered Parcel was delivered
fulfilled Fulfillment is complete
failure Delivery failed
error An error occurred with the shipment
cancelled Shipment was cancelled

Next Steps

Ready to test your integration? Check out the Testing guide to ensure everything works correctly.

icon-accounticon-add-newicon-add-storeicon-appicon-appleicon-archiveicon-arrowdownicon-ascicon-bookicon-cancelicon-cart-addonicon-checkouticon-cherryicon-collectionicon-comfirmicon-confirmicon-couponicon-creditsicon-currencyicon-dashboardicon-discounticon-disintegrateicon-domainicon-dscicon-duplicateicon-editicon-emailicon-exclamation-triangleicon-exporticon-eyeicon-eye-slashicon-fullscreenicon-fullscreen-closeicon-generalicon-gifticon-gridicon-hddicon-helpicon-importicon-infoicon-integrationicon-invoiceicon-likeicon-listicon-locationicon-logouticon-new-tabicon-not-secureicon-optionicon-ordericon-outline-arrowdownicon-pageicon-paymenticon-plusicon-posicon-pricingicon-printericon-producticon-product-sumicon-product-sum-xicon-redirecticon-reporticon-reseticon-searchicon-secureicon-settingicon-shippingicon-staricon-storeicon-switch-storeicon-tagicon-taxesicon-templateicon-themeicon-tickicon-trashicon-unarchiveicon-uploadicon-user-tagicon-usersicon-weighticon-wholesale