I’m needing to create orders through the Shopify Admin API, with the resulting order to be recognised by Shopify as a pickup in store / local pickup order.
Specifically, after creation, I want the order in Shopify admin to follow the normal pickup workflow and show actions like:
Ready for pickup
Mark as picked up
I can’t find a supported way to set the delivery method to pickup so that Shopify treats it the same as an order where the customer selected pickup during checkout.
My questions are:
Does the Admin API support creating an order as a pickup order?
If it does, what is the correct way to do it?
If it doesn’t, is there any official workaround to trigger the pickup workflow on API-created orders?
Would appreciate any clarification from anyone who has dealt with this, or word from a Shopify staffer on whether this is a known limitation (and whether its being worked on).
Unfortunately the orderCreate mutation doesn’t support Local Pickup orders at this time, though I will be submitting some feedback on your behalf that you’d like to see this feature added in the future!
In the meantime I would recommend looking into creating orders via Draft Orders instead, with the draftOrderCreate mutation.
To do this, you can make a draftOrderAvailableDeliveryOptions query, before creating the draft order, and this will return the availableLocalPickupOptions field, with the pick up option handle.
Then you can create the Draft Order with draftOrderCreate and pass the availableLocalPickupOptions.handle in the input.shippingLine.shippingRateHandle argument.
So are you saying that we could follow the steps above, and then use the draftOrderComplete mutation to finalise the order, as a workaround to being able to create a (non-draft) order with Shopify-native pickup delivery method?
Yep you got it exactly! Once you close the draft order with draftOrderComplete it will create the actual order on the shop, and you can then manually mark the order as paid with the orderMarkAsPaid mutation, or via the order in the Shop Admin directly.
Alternatively, if the customer needs to pay for the order, you can create the Draft Order, then send an invoice to the customer with the draftOrderInvoiceSend mutation, and the order will be created automatically when the customer pays via the checkout link in the invoice, no need for draftOrderComplete in that scenario.
Here’s some more documentation on these mutations, and draft orders in general:
Just a follow-up to this. The process does work (thank you), however there seems to be no way to control whether an order confirmation email is sent when using draftOrderComplete like you can when using orderCreate. My understanding is Shopify will always send an order confirmation email when completing a draft, assuming there is a customer attached that has an email address. If there’s any workarounds to this one, please let me know.
As Kellan mentioned in the thread, orderCreate still can’t create an order that Shopify recognizes as a native local pickup order. Its shipping-line input doesn’t accept the pickup delivery method, location, or shipping-rate handle. The sendReceipt option available on orderCreate controls the confirmation email, but it doesn’t add pickup behaviour.
The draft-order option does create an order with Shopify’s native pickup workflow by applying the available local-pickup rate to the draft before completing it. However, your understanding of the notification behaviour is correct, with one distinction: the confirmation is triggered when the draft has an email address or phone number at completion, whether that contact information comes from an attached customer or was added directly. draftOrderComplete doesn’t provide a sendReceipt or notifyCustomer option to suppress it per order.
I’m going to submit a feature request based on the context you’ve shared here, noting that either path has a current limitation. I don’t have a timeline to share, but the team will have this use case for consideration. Hope this helps!
Hey @pan.wors thanks for adding your feedback here.
I’ve added it to the existing feature request which helps the team assess its potential impact. No guarantees here, but I’ll follow up in this thread if I have anything new to share.