The Shopify abandoned cart webhook does not exist
There is no topic you can subscribe to that fires when a shopper abandons something, and there is a structural reason for that: abandonment is not an action. It is the absence of one, noticed later.
Which cart and checkout webhooks does Shopify actually have?
As of the current API version, the cart and checkout webhook topics are:
carts/createandcarts/update, for the online store cart.checkouts/create,checkouts/updateandcheckouts/delete, once checkout has started.
The word abandoned does not appear in that list, and that is not an oversight.
Why is there no abandonment event?
Every webhook corresponds to something that happened: a cart was created, a checkout was updated, an order was paid. Abandonment is the opposite. It is the recognition, some time later, that nothing else happened.
Whoever decides a cart is abandoned has to pick a waiting period, and that choice belongs to your business rather than to the platform. A store selling an impulse item might call thirty minutes abandoned. A store selling machinery would be wrong to call three days abandoned.
How do I detect an abandoned checkout without a webhook?
- Subscribe to
checkouts/createandcheckouts/update. Record the checkout and the time of the last update. - Run your own clock. A scheduled job looks for checkouts whose last update is older than your window and that have no matching order.
- Cancel on
orders/create. Otherwise you will treat a completed purchase as an abandonment, which is the most common bug in this shape of code. - Or skip the listening entirely. Shopify exposes abandoned checkouts through the Admin API, and for a low-volume store a periodic query is simpler than maintaining webhook state.
What do these webhooks never see?
All of this only sees shoppers who got far enough to create a cart or a checkout. The shopper who reads a product page, hesitates, and closes the tab generates none of these events. There is nothing to subscribe to, because from Shopify's point of view nothing happened.
That is the same boundary described in the guide on abandoned carts versus abandoned checkouts, seen from the API side instead of the marketing side. If you are trying to reach that group, webhooks are the wrong layer: it has to happen in the browser, before the tab closes.
Common questions
Is there a Shopify webhook for abandoned carts?
No. The cart and checkout topics Shopify publishes are carts/create, carts/update, checkouts/create, checkouts/update and checkouts/delete. None of them signals abandonment, because abandonment is inferred from a period of inactivity rather than emitted as an event.
How do I detect an abandoned checkout then?
Subscribe to checkouts/create and checkouts/update to learn that a checkout exists and when it last changed, then apply your own inactivity window. Shopify also exposes abandoned checkouts through the Admin API for the case where you would rather query than listen.
What is the difference between the carts and checkouts topics?
The carts topics fire for the online store cart, before checkout begins. The checkouts topics fire once the shopper has entered checkout, which is usually where an email address first exists. That difference decides whether you can contact the shopper at all.
Do the carts webhooks fire for every shopper?
Treat them as unreliable for analytics. They are tied to the online store cart and will not see a shopper who browses and leaves without adding anything, which is the largest group of people who do not buy.
Try it on your own store
Clinch is free to install. The Free plan costs $0 per month and takes 10% of revenue it actually recovers, so if it recovers nothing you pay nothing.
Install on Shopify