Hello!
We are implementing cash on delivery function in our system. We want to send customer an order and give him tracking number. When the customer receive and pay for the order (we are using some shipping provider API for that), we want to update fulfilment and payment status in Shopify system. As I know the only way to give tracking number is to create a fulfillment and created fulfilment means fulfilled order? So is it even possible to update tracking number without updating fulfillment status?
Hey @serious_tom - there are a couple of ways you can update the tracking info for a fulfillment and it should not require you to update the fulfillment status. There’s this mutation here if you’re using our GraphQL API, or this call in REST.
Hope this helps!
Al | Shopify Developer Support
Hi @ShopifyDevSup ,
in the mutation provided mutation here, there is a required parameter “fulfillment_id” in rest and “fulfillmentId” in graphQL to make request and same is required in the rest API call.
This fulfillment_id value is the the value which we get after creating a fulfillment request with the request on https://shopify.dev/docs/api/admin-rest/2023-04/resources/fulfillment#post-fulfillments this endpoint, apart from this we don’t have fulfillment_id to pass in the calls due to which I am unable to add tracking information without changing the status from “accepted” to “fulfilled”.
i hope i have made my point clear and would definitely prefer if you can help me in this matter
Hey @shivamAgarwal , you can query the FulfillmentOrder.fulfillments to get the fulfillment ID you’re looking for.
For a more high-level overview on how to best manage the fulfillment process, reviewing our documentation on fulfillment service apps will be useful! https://shopify.dev/docs/apps/fulfillment/fulfillment-service-apps
Hope that helps!
Hey @serious_tom,
You’ve got it right, in Shopify’s model, tracking info is tied to a fulfillment. There’s no native way to attach a tracking number to an order while keeping it in an “unfulfilled” state. As soon as you create a fulfillment (partial or full), Shopify considers those items fulfilled.
A couple of workarounds merchants use:
-
Partial fulfillments: You can create a fulfillment with the tracking number but only for certain line items, leaving others “unfulfilled” until payment clears.
-
Custom order metafields / notes: Store the tracking number temporarily in a custom field, then push it into the fulfillment object once the COD payment is confirmed. This way, you can still expose it to the customer if you’re building a custom frontend.
-
Third-party apps: Tools like ParcelPanel Order Tracking sync whatever tracking numbers are in Shopify and display them in a branded “Track My Order” page. If you decide to go the metafield route, you can still push the number into Shopify later and ParcelPanel will handle the customer-facing part automatically.
But strictly speaking: no, Shopify doesn’t let you attach tracking to an order independently of creating a fulfillment. The official path is to create the fulfillment with tracking, then adjust status once COD is completed.
Docs for reference: Shopify Fulfillment API.
Hope this clears it up! If it does, feel free to mark it as a solution so others can find it too 