Abandoned checkout detection works differently from every other Shopify integration in Galantis. While customer, order, and product data are all event-driven — Shopify sends a webhook the moment something changes — there is no equivalent webhook for abandoned checkouts. Shopify does not emit a real-time event when a customer starts a checkout and leaves without completing it. Instead, Galantis polls the Shopify Admin GraphQL API every 10 minutes and queries for incomplete checkouts. This polling mechanism is reliable but introduces a timing gap that has direct implications for how abandoned checkout automations behave.Documentation Index
Fetch the complete documentation index at: https://docs.digifist.com/llms.txt
Use this file to discover all available pages before exploring further.
What this covers
- Why polling is used instead of a webhook
- How the polling mechanism works
- The 10-minute timing gap and what it means for automation configuration
- What qualifies as an abandoned checkout in Galantis
- Edge cases and timing considerations
Why polling is required
Shopify’s webhook system fires events for discrete state changes — a customer is created, an order is placed, a product is updated. Checkout abandonment is not a discrete event in Shopify — it is the absence of an event (order placement) after a checkout was started. Shopify has no mechanism to push a notification to an external app when this absence occurs. Theread_checkouts permission grants Galantis access to the Shopify Admin GraphQL API endpoint that lists incomplete checkouts. Galantis queries this endpoint periodically to identify checkouts that were created but have not resulted in a completed order within a qualifying timeframe.
How the polling mechanism works
Poll fires every 10 minutes
Galantis runs a scheduled job every 10 minutes that queries the Shopify Admin GraphQL API for incomplete checkouts — checkouts that were created within a recent time window and have no associated completed order.
Qualifying checkouts identified
The job filters results to identify checkouts that meet the abandonment criteria — a checkout exists, the customer has a WhatsApp number, and no completed order has been placed from that checkout session.
The 10-minute timing gap
The polling interval creates an inherent timing gap between the moment a customer abandons a checkout and when theABANDONED_CHECKOUT trigger fires in Galantis. This gap can be anywhere from near-zero (if a customer abandons immediately before a poll runs) to just under 10 minutes (if they abandon immediately after a poll runs).
Practical implication for automation configuration:
A Delay Node set to 30 minutes in an abandoned checkout automation does not mean the customer receives a message 30 minutes after abandoning. It means the customer receives a message approximately 30 to 40 minutes after abandoning — the delay runs from when the trigger fires, not from when the customer actually left.
This is not a defect — it is the expected behavior of a polling-based detection system. For most abandoned checkout recovery flows, a 10-minute variance has no meaningful impact on conversion rates. A customer who abandoned 35 minutes ago and one who abandoned 40 minutes ago have equivalent recovery likelihood.
For merchants who need more precise timing documentation in their analytics or reporting, the trigger fire time (when the automation enrolled the customer) is recorded in the activity log. The actual checkout abandonment time is available in Shopify’s checkout data.
What qualifies as an abandoned checkout
Galantis identifies a checkout as abandoned when:- A Shopify checkout record exists for a customer with a WhatsApp number
- The checkout has not been completed — no associated order exists
Edge cases and timing considerations
Customer completes the order between poll cycles If a customer abandons their checkout and then returns and completes the order before the next poll runs, Galantis may detect the incomplete checkout on its next poll. Since the order now exists, the checkout no longer qualifies as abandoned and the trigger should not fire. If the trigger fires between the abandonment and the order completion within the same 10-minute poll window — which is possible if the abandonment and completion both occur between polls — anORDER_RECENCY condition node in the automation can catch this. A condition that checks whether the customer placed an order within the last 30 minutes before the first action node will route completed-order customers to the NO path and suppress the recovery message.
Multiple abandoned checkouts from the same customer
If a customer abandons a checkout, receives a recovery message, and then abandons a new checkout within the frequency cap window, the cap prevents the second abandonment from triggering a new automation enrollment. The frequency cap check runs at trigger time — if the customer is within the cap window, the new abandonment is detected but no new enrollment occurs.
Checkouts without a WhatsApp number
Guest customers who have not provided a phone number, or customers whose phone number is not registered on WhatsApp, cannot receive a recovery message. The trigger may still fire for these customers if they have a Shopify customer record, but the subsequent message action will fail with a delivery error. An ABANDONED_CHECKOUT automation will attempt enrollment for any customer associated with the incomplete checkout — phone number validity is checked at the message dispatch step, not at the trigger evaluation step.
Related guides
- Automations — Triggers — ABANDONED_CHECKOUT trigger configuration including the polling timing note
- Automations — Recipes — Abandoned Checkout Recovery — Full recipe with delay configuration that accounts for polling latency
- Permissions — The
read_checkoutspermission required for polling