What counts as an abandoned checkout
Adding an item to the browser cart is not enough. Vacto creates or updates a server checkout after the customer checks the recovery-permission box and enters a valid Egyptian mobile number or email. The checkout must contain at least one current store item, the store must have an operational Pro entitlement, and no order may have consumed the tracking token.
- The default inactivity threshold is 30 minutes; the Growth Center shows the active configured value.
- The detector runs separately from the storefront. Production scans once daily, so a newly eligible row can appear after the threshold plus the next scheduled scan.
- Local development does not run Vercel schedules. On a disposable database, run npm run carts:detect-abandoned -- --store <slug> or add --dry-run to inspect counts without changing carts.
Contact permission and opt-out
Recovery permission is an explicit incomplete-order contact choice and is separate from marketing. It is stored with its capture time and checkout source. Unchecking the box withdraws permission and removes the saved contact fields from that recoverable checkout.
Send a recovery link
- 1
Open Growth Center → Abandoned carts.
Refresh after the displayed last successful scan if the inactivity window just passed.
- 2
Choose a recent recoverable cart.
Do not contact opted-out, converted, recovered, dismissed, or expired records.
- 3
Copy one recovery link.
Vacto limits attempts per cart and day. The URL contains a cryptographically random token, not cart contents or customer details, and expires after 14 days.
- 4
Send a short factual message.
Do not promise old prices, discounts, or stock; the restored cart revalidates current price, availability, and quantity.
- 5
Review recovered carts and revenue.
Opening the link records an open only. Recovery and revenue are attributed exactly once after a valid order uses the unexpired store-scoped token.
Why a cart may not appear
- The customer only viewed or added a product but did not grant recovery permission.
- The phone or email was invalid, the cart was empty, or the referenced product or variant did not belong to the store.
- The inactivity threshold or next scheduled scan has not passed.
- The checkout already converted, permission was withdrawn, the row expired, or Pro operations are locked after downgrade or suspension.