Can Shopify send draft order ID to carrier service apps?

Topic summary

A developer is building a custom Shopify Carrier Service app that calculates shipping rates at checkout. The app receives shipping details and order items from Shopify but needs to identify whether the request originates from a draft order—specifically, they want to receive the draft order ID when customers use a draft order’s checkout link.

Proposed workaround:

  • Use line item properties to embed additional information, as the carrier service request structure is limited and poorly documented
  • Alternatively, query the shop’s backend for draft order details, though this risks slower response times (carrier services require fast responses and utilize caching)

Current limitations:

  • The Carrier Service API lacks robust documentation and flexibility
  • Similar feature requests have existed for over a decade without implementation
  • With Shopify’s focus shifting to Shopify Functions, future improvements to the Carrier Service API appear unlikely

Recommendation: Cross-post as a feature request on Shopify’s developer forums, though expectations for API enhancements should remain modest.

Summarized with AI on October 26. AI used: claude-sonnet-4-5-20250929.

I have a custom app that allows stores to enable the Shopify Carrier Service. When a customer enters their shipping details at checkout, Shopify sends our app a request with the shipping information and order items. Our app processes that data and returns the calculated shipping rates back to the checkout page. My question is: if the order is still in draft status, is it possible to receive the draft order ID in the request sent from the checkout page?

So here in my site i will create one draft order. and get checkout link of that draft order. when i redirect to checkout page from that checkout link then it is sending request to our app. so is there any way to get detail of that draft order?

Try line item properties
The carrier service request structure is limited and poorly documented.
So you’ll need to try to put extra info into line-item-properties for the orders items.
Or do a query to the shop on the backend to get the info but your apps response time in returning the rate still needs to be REALLY GOOD, and keep in mind the cache for the carrier service for similar requests.

I’d crosspost this as a feature request on the dev forums, keep in mind stuff like this has come up for over a decade but they’ve never really improved it even with simple attributes and now with the shopify-functions time investment i’m doubtful any improvements will ever happen for the carrier-service api ever again.