Missing public API for marking order as picked up in store

Hi,

If you create a pick up in store order, then it is possible to mark the order ready for pick up and customer receives an email notificaton - all good. Then, once the order has been picked up, it would make sense to set the order as picked up. There does not seem to be any public API to do this.

In the Shopify Admin portal, marking the order as picked up seems to submit the following information:

{
    "operationName": "MarkAsFulfilledSubmit",
    "variables": {
        "fulfillment": {
            "lineItemsByFulfillmentOrder": [
                {
                    "fulfillmentOrderId": "gid://shopify/FulfillmentOrder/8568810078370"
                }
            ]
        }
    }
}

However, there is no documented public mutation resembling MarkAsFulfilledSubmit - that I can find.

We can create a fulfillment for the order:

mutation {
  fulfillmentCreate(fulfillment:{
    notifyCustomer: true, 
    lineItemsByFulfillmentOrder: {
      fulfillmentOrderId: "gid://shopify/FulfillmentOrder/8568766333090",
      fulfillmentOrderLineItems: [
        {
          id: "gid://shopify/FulfillmentOrderLineItem/16463170699426",
          quantity: 1
        }
      ]
    }
  }) {
    fulfillment {
      id
    }
    userErrors {
      field
      message
    }
    
  }
}

Doing so marks the order as fulfilled, but doing so does not seem to send an email notificaton to the customer. Marking the order as picked up in the POS and admin does.

Am I missing something?

Hey @Evaldas_Raisutis, there is currently no public API to mark a pickup order as “picked up” with the same email notification behavior you see in the Admin UI and POS.

Using fulfillmentCreate (as you discovered) marks the order as fulfilled but doesn’t trigger the pickup completion email, even with notifyCustomer: true.

I’ve documented this as feedback as a feature request for the team. Feel free to share any additional details about your use case or workarounds you end up implementing so I can pass that on as well.

Might want to document this on the GraphQL docs that the notifyCustomer input is misnamed or has nuance on when it applies.

Thanks Patrick, I have passed that on as well.

Out of curiosity, after you create the fulfillment, have you tested to see if the fulfillmentEventCreate mutation with marked as delivered sends a notification?

It may be worth trying since the fulfillment APIs are designed more for orders that are shipped, not pickup in store.

Hi Kyle,

The enum does not have a value for delivered/picked-up - but it does have ready for pick up. Perhaps it’s incomplete?

Creating a new event with delivered status does nothing.

It looks like in the unstable version there is an enum for picked_up status?

Hey @Evaldas_Raisutis DELIVERED would be the enum to use in this case since you would be using the fulfillment APIs to create the fulfillment. Same limitation here in that there aren’t API’s for local pickup.

DELIVERED doesn’t trigger the notification to the customer :slight_smile: At least not when I tried it.

Thanks for testing that. That’s too bad it didn’t work. I do have that feature request in. Currently, you will then have to continue to use non API actions for pick up orders.

I find it baffling that there is no QraphQL mutation to mark items as picked up… How do large Shopify Plus clients with hundreds of locations manage order pick-ups without any API? Surely they don’t all use Shopify POS in-store. This makes store employees require the option to have access to Shopify and mark it as picked-up. It would be so easy to make this a public Flow action.