All use cases

Convert

Cart-abandonment recovery for grocery and rapid delivery

A half-full grocery basket goes quiet at 6pm — and the delivery slot, the fresh produce, and the dinner plan all expire within the hour unless someone steps in.

Close the loopGet aheadBehavioral triggerPushWhatsAppSMSChatE-commerce & Retail

What it does

Grocery and rapid-delivery baskets don't abandon the way a considered purchase does. The shopper is mid-aisle when something blocks them — the slot they wanted is filling up, an item shows out of stock at pick, or they're a few pounds short of the minimum order — and the window to recover is measured in minutes, not the days a templated coupon email assumes. The agent re-engages fast on the channel the shopper opted into, names and resolves the specific blocker — offer the next slot, propose a substitution, or suggest the item that clears the minimum — and recovers the basket before the intent and the slot are both gone. A discount is the last resort, not the opener; across the industry around 70% of online baskets are abandoned, and most of these were lost to friction, not price.

How it works

  1. 1
    Trigger. a cart_abandoned signal fires on a fast threshold suited to same-hour delivery, with basket contents, the selected or last-viewed delivery slot, and live stock state attached.
  2. 2
    Decision. the agent reads what blocked the shop — a slot filling up, an item flagged out of stock at pick, a basket below the minimum order — against persistent memory of the shopper and their usual substitutions, then checks consent and frequency caps; a judge gates every unprompted message.
  3. 3
    Action. a short, specific message on the shopper's opted-in channel — push, WhatsApp, SMS, or chat — that resolves the actual blocker: "your 7pm slot is almost full, want me to lock it?", a one-tap substitution for the out-of-stock item, or the small add that clears the minimum and frees delivery; the conversation continues in chat to confirm and check out.
  4. 4
    Follow-through. because perishables and slots decay, the cadence is tight and the outreach is cancelled the instant the shopper checks out or the slot expires; recovered baskets are measured against a holdout; the client keeps owning the send channels throughout.
Example
AgentYour basket's still here, but your 6:30pm delivery slot is nearly full — want me to lock it in before it goes? One thing: the oat milk you added just sold out at the store. I can swap in the barista oat you bought last week, or drop it — your call.
CustomerSwap it, and yes lock the slot.
AgentDone — barista oat swapped in and your 6:30 slot is held. You're £3 under the free-delivery minimum; adding the bananas you usually get would clear it. Want me to, then send you straight to checkout?

Configuration

How the agent is wired for this use case.

Triggera cart_abandoned event from the grocery/q-commerce app on a short same-hour threshold, carrying basket contents, the selected delivery slot, and live pick-time stock state.
Tools & actions
  • Commerce / basket backend · read basket contents, the minimum-order gap, and the selected delivery slot; update the basket on a confirmed substitution or add.
  • Inventory / pick system · check live stock at the fulfilling store and propose substitutions for items flagged out at pick.
  • Slot / fulfilment system · surface and hold the next available delivery slot before it fills.
  • Messaging channel · send the blocker-specific nudge on the opted-in channel and continue the conversation in chat to checkout.
  • Order system · attribute the recovered basket against a holdout and write back the outcome.
Autonomythe nudge, substitution proposal, and slot offer run unattended under judge gating; basket changes and the slot hold are confirmed by the shopper before they take effect; any discount is bounded by explicit merchant policy and is never the default move.
Channelspush · whatsapp · sms · chat
Escalationa payment problem, a complaint, or a request the basket flow can't resolve hands off to support with the basket and slot context attached.

What you need

The inputs this use case runs on. Your channels stay yours; the agent supplies the judgment.

Signals

cart_abandoned events on a fast threshold, order_completed and slot_expired for stale-send cancellation, pick-time stock-out and minimum-order-gap context.

Data

basket contents, the selected delivery slot, live store stock, the shopper's usual substitutions and purchase history, per-channel consent state.

Guardrails

explicit per-channel consent and frequency caps; judge gating on every unprompted message; a tight cadence with automatic cancellation when the basket converts or the slot expires; substitutions confirmed by the shopper, never silently applied; discounts only under explicit merchant policy.

Metrics it moves

  • cart-recoveryup: blockers specific to grocery — a filling slot, an out-of-stock pick, a minimum-order gap — get resolved in the minutes that matter instead of an hour-late coupon.
  • recovered-revenueup and provable: every recovered basket is attributed against a holdout, including the slot that would otherwise have lapsed empty.
  • conversion-rateup: naming and fixing the real friction closes the shop, where a generic discount would have arrived after the slot was gone.

See it on your own customer journey

Bring one drop-off, one churn cliff, or one silent segment. We will show you what a proactive agent with memory and judgment does with it.

Book a demo