Guides

Abandoned cart recovery on WhatsApp

Cart recovery has two halves that fail on their own: capturing a phone number at checkout, and sending an approved template afterwards. Get capture working first, because a perfect journey sends nothing to a cart with no phone number.

Open Journeys

Short answer

Install the three storefront tracking layers so abandoned checkouts arrive with a phone number, and get three cart-recovery templates approved. Then publish a journey on the cart abandoned trigger with waits of about 25 minutes, 6 hours and 24 hours. Recovered revenue is credited on last touch within seven days.

Before you start

How recovery actually works#

  1. Customer leaves checkout

    Shopify records an abandoned checkout, and TopEdge saves it as a cart lead.

  2. The lead is enrolled

    A scheduler finds your live cart journeys and enrols the lead. Each wait in the journey becomes a scheduled send.

  3. The customer orders

    If they order at any point, the remaining steps cancel and the cart is marked recovered.

The cart is captured at abandonment, reminders go out after about 25 minutes, 6 hours and 24 hours, and the cart is marked recovered with attributed revenue when the customer orders.0 minCheckout abandonedphone captured+25 minReminder 1cart contents+6 hrReminder 2objection handling+24 hrReminder 3last nudgeOn orderMarked recoveredrevenue attributed
The default three-message ladderThe first reminder is deliberately not instant — a customer who stepped away for two minutes does not need chasing.

Step 1 — get the phone number#

The theme app embed, web pixel extension and checkout extension each have to be installed and healthy before an abandoned cart arrives with a phone number attached.Theme app embedstorefront eventsWeb pixelextensioncart + browseCheckout extensionphone at checkoutCart lead with aphone number
All three layers have to be healthyThe checkout extension is the one that captures the phone number, so a green theme embed alone will not produce recoverable carts.

About 15 minutes

  1. Open website tracking

    Store growth → Website tracking. You should see one health row per layer.

  2. Install each layer

    Use one-click install for the theme app embed, the web pixel and the checkout extension. Each must report green.

  3. Enable the app embed on your live theme

    Shopify admin → Online Store → Themes → Customize on the live theme → App embeds → enable the TopEdge embeds → Save.

    A preview theme does not count. This is the most common reason tracking looks installed but captures nothing.

  4. Run a test abandonment

    In an incognito window, add to cart and reach checkout. Enter a real phone number, then close the tab without paying.

  5. Confirm the cart row

    Open Store growth → Abandoned carts. Within a few minutes a row should appear with the phone number filled in.

A healthy setup shows carts with the phone column filled in.

If you use a third-party checkout#

One-page and COD-optimised checkouts replace Shopify’s native checkout, so the checkout extension never runs.

Open the third-party checkout section in Website tracking and copy the webhook URL into your provider’s dashboard. Then run the same test abandonment through their flow and confirm the phone reaches TopEdge.

If you have a custom phone or OTP page#

A hand-built login or OTP step is not detected automatically. Mark the phone input so TopEdge can read it:

html
<input type="tel" autocomplete="tel" data-topedge-phone="true" />
Either data-topedge-phone="true" or autocomplete="tel" is enough. Without one of them a custom OTP page captures nothing.

Step 2 — get three templates approved#

Meta Manager ships a cart recovery blueprint of three WhatsApp templates. Each has a live product image header, mapped body variables and a button back to checkout.

Create and submit all three. Do not take a cart journey live with only the first one approved.

What each message in the ladder is for
MessageTimingJob
Reminder 1~25 minutesShow what they left. Product image, item name, one link back to checkout. No discount.
Reminder 2~6 hoursHandle the objection — shipping time, returns, payment options, COD availability.
Reminder 3~24 hoursLast nudge. This is where a discount earns its place, if you use one at all.

Step 3 — publish the cart journey#

  1. Open or create the cart journey

    Journeys → the cart recovery playbook, or a new journey on the cart abandoned trigger.

  2. Set the capture delay

    The trigger’s cart delay is how long after abandonment the customer is enrolled. Start with the 25-minute default.

  3. Map each WhatsApp step to an approved template

    Each cart-recovery node takes one approved template. The product image and checkout link fill from the live cart at send time.

  4. Set the waits between steps

    Wait nodes send nothing; they delay the next step that does. Chain them as 6 hours, then 24 hours.

  5. Optionally also send email

    Cart-recovery nodes can send a matching email alongside WhatsApp. This needs Gmail connected; see Email.

  6. Add trigger filters if you need them

    You can filter by cart value or specific products. Rules combine with AND, so two narrow rules can exclude every cart.

  7. Publish

    Publish freezes the graph and the trigger. Drafts send nothing, and edits to a published journey apply only after you publish again.

Check it worked

  • A test abandonment creates a cart row with a phone number.
  • The journey shows Published with the cart abandoned trigger.
  • All three templates read Approved.
  • Reminder 1 arrives after the capture delay — not instantly.
  • Completing the checkout marks the cart recovered and stops remaining messages.

How recovered revenue is counted#

Attribution is last touch within seven days. If a cart message was the latest TopEdge touch before the order, that journey gets the revenue.

The customer does not have to click your link. Someone who gets the reminder and then visits your site directly still counts.

If recovery is not working#

Abandoned carts list is empty

  1. Confirm every layer on Store growth → Website tracking is green.
  2. Enable the TopEdge app embed on the live theme, not a preview.
  3. Test in incognito with ad blockers off — blockers stop the pixel.
  4. On a third-party checkout, configure the partner webhook and retest through their flow.

Cart rows exist but the phone column is blank

  1. The customer left before the phone step. For browse abandonment this is expected.
  2. On a custom phone or OTP page, add data-topedge-phone="true" to the input.
  3. Check your checkout is not suppressing the phone field for logged-in customers.

Carts have phone numbers but no message is sent

  1. The journey is in Draft. Publish it.
  2. A template is still pending. All three should read Approved.
  3. Trigger filters exclude the cart — a minimum cart value rule is the usual culprit.
  4. You have reached your plan’s send cap for the cycle — see limits.

Recovered revenue stays at zero

  1. Nobody has completed a checkout after receiving a message yet — attribution needs a real order.
  2. Confirm the test order used the same phone number as the cart.
  3. Orders placed more than seven days after the last touch fall outside the attribution window.

Frequently asked questions

How soon should the first abandoned cart message go out?
Around 25 to 30 minutes after abandonment. Sending instantly annoys customers who simply switched tabs, and waiting several hours loses the people who were still deciding. The default capture delay is 25 minutes and most stores never need to change it.
Why is my abandoned cart missing a phone number?
Because the customer left before reaching a step that collects one, or because the checkout extension is not capturing. Adding to cart alone never produces a phone number. Check that all three tracking layers are green and that the TopEdge app embed is enabled on your live theme.
How many cart recovery messages should I send?
Three is the standard ladder: a reminder, an objection-handling message, and a final nudge. More than three starts costing you more in conversation fees and goodwill than it recovers, and it raises your chance of being blocked or reported.
Does cart recovery need marketing opt-in?
Cart recovery templates are reviewed by Meta like any other template, and promotional framing belongs in the Marketing category, which does require consent. Keep the ladder transactional in tone and treat consent as a requirement whenever a message carries an offer.

Run these automations on your own store

Connect Shopify and WhatsApp in one sitting. Compare plans on the pricing page, or see every feature first.