I’m trying to detect when a customer submits a self-serve cancellation request in Shopify.
As far as I can tell, there is no dedicated webhook/event for that moment. I did find fulfillment_orders/cancellation_request_submitted, but that seems to be a different flow between merchant/app and fulfillment service, not customer → merchant.
For fulfilment integrations, this is pretty important: a cancellation request can already be open while the order is still moving through picking or shipping prep. In that situation, we’d want to pause fulfilment before the request is approved or rejected.
I also noticed that self-serve returns do have a webhook model, so I’m wondering whether something similar exists or is planned for self-serve cancellations.
Is there currently a supported way to detect:
a self-serve cancellation request being submitted
the request being approved or rejected
whether the outcome is a full cancellation or a partial cancellation/refund
having the same issue. The only workaround I’ve found so far of getting any information on this is by actively scanning the events as at least the request is recorded as a BasicEvent with the action “requested_edit_requested”:
$ curl -sS -X POST \
"https://DOMAIN.myshopify.com/admin/api/VERSION/graphql.json" \
-H "Content-Type: application/json" \
-H "X-Shopify-Access-Token: $SHOPIFY_TOKEN" \
-d '{ "query": "query { events(first: 100, query: \"action:requested_edit_requested subject_type:ORDER\") { edges { node { __typename id createdAt action message ... on BasicEvent { subjectType subject { __typename ... on Order { id name } } } } } } }" }'
+1 for this. We need something as well that we can use to automate putting the order on hold until customer service has a chance to review the request. There’s not even a way to trigger a Flow in the Flow app when there is a cancel request. There is one for a return request but not a cancellation request.
Hello there @Jules_Picqer
Currently Shopify does not provide a specific webhook for the self serve cancellation request step. When cancelled_at is set, you only receive events downstream such as orders canceled, refunds created, or order updated. To get ahead, most partners create a hack with a custom cancel flow or app proxy button that writes a tag or metafield on the order prior to Shopify cancelling. Then, using fulfilment holds or rules in Shopify Flow, you can pause fulfillment until you have received final confirmation of the cancellation or rejection. This is the best pattern to use right now.