TopEdge Docs

Abandoned cart recovery on WhatsApp

Cart recovery has two halves that fail independently: capturing a phone number when the checkout is abandoned, and sending an approved template afterwards. Get the capture working first — a perfect journey sends nothing to a cart with no phone number.

Install the three storefront tracking layers so abandoned checkouts arrive with a phone number, get three cart-recovery templates approved by Meta, then publish a journey on the cart abandoned trigger with waits of roughly 25 minutes, 6 hours and 24 hours. Recovered revenue is attributed to the journey on last touch for seven days.

Before you start

How recovery actually works

A customer reaching checkout and leaving creates an abandoned checkout in Shopify. TopEdge records that as a cart lead. A scheduler then checks for live cart journeys and enrolls the lead, and each wait in the journey becomes a scheduled send. If the customer orders at any point, remaining steps cancel and the cart is marked recovered.

The default three-message ladder The first reminder is deliberately not instant — a customer who stepped away for two minutes does not need chasing.

Step 1 — get the phone number

All three layers have to be healthy The checkout extension is the one that captures the phone number, so a green theme embed alone will not produce recoverable carts.
  1. Open website tracking Store growth → Website tracking. You should see a health row per layer.
  2. Install each layer Use the one-click install for the theme app embed, the web pixel extension and the checkout extension. Each has to 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, then Save. A preview theme does not count. This is the single most common reason tracking looks installed but captures nothing.
  4. Run a test abandonment In an incognito window, add to cart, reach checkout, enter a real phone number, then close the tab without paying.
  5. Confirm the cart row Store growth → Abandoned carts. Within a few minutes a row should appear with the phone number populated.

If you use a third-party checkout

One-page and COD-optimised checkouts replace Shopify’s native checkout, so the checkout extension never runs. Website tracking has a third-party checkout section — 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:

<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: three WhatsApp templates with a live product image header, body variables already mapped, and a button back to the checkout. Create all three from the blueprint and submit them — a cart journey should not go live with only the first one approved.

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 with the cart abandoned trigger.
  2. Set the capture delay The trigger has a cart delay — how long after abandonment the customer is enrolled. 25 minutes is the default and a sensible starting point.
  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 do not send anything themselves — they add delay to the next step that does. Chain them as 6 hours and then 24 hours.
  5. Optionally also send email Cart-recovery nodes can send a matching email alongside WhatsApp. Needs Gmail connected — see Email.
  6. Add trigger filters if you need them You can restrict by cart value or specific products. All rules combine with AND, so two narrow rules can exclude every cart.
  7. Publish Publish freezes the graph and the trigger. A saved draft sends nothing, and editing a published journey changes nothing until you publish again.

How to 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 most recent 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 goes to your site directly still counts, which is the honest way to measure it.

If recovery is not working

Abandoned carts list is empty
  • Confirm every layer on Store growth → Website tracking is green.
  • Enable the TopEdge app embed on the live theme, not a preview.
  • Test in incognito with ad blockers off — blockers stop the pixel.
  • On a third-party checkout, configure the partner webhook and retest through their flow.
Cart rows exist but the phone column is blank
  • The customer left before the phone step. For browse abandonment this is expected.
  • On a custom phone or OTP page, add data-topedge-phone="true" to the input.
  • Check your checkout is not suppressing the phone field for logged-in customers.
Carts have phone numbers but no message is sent
  • The journey is in Draft. Publish it.
  • A template is still pending. All three should read Approved.
  • Trigger filters exclude the cart — a minimum cart value rule is the usual culprit.
  • You have reached your plan’s send cap for the cycle — see limits.
Recovered revenue stays at zero
  • Nobody has completed a checkout after receiving a message yet — attribution needs a real order.
  • Confirm the test order used the same phone number as the cart.
  • 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.

Updated 2026-10-04