Home / Help Center / pos-app / Online Channels / Abandoned Carts
🛒 Online Channels

Abandoned Carts

Abandoned Carts lists shopping carts customers started on your online storefront/portal but never finished checking out, so you can send a one-click WhatsApp reminder and track which ones you eventually recovered.

📍 Menu path: Online Channels → Abandoned Carts
👤 Who uses it: All roles with Online Channels access

Overview

Three tabs — Active, Recovered and Dismissed — separate carts that still need follow-up from ones that converted or that you chose to ignore.

Each card shows the customer's name and phone (if captured), how long ago they were last active on the cart, the item list, the cart total, and — once sent — a note of when a reminder was last sent.

Clicking Remind builds a personalised WhatsApp message (the first three items plus the cart total) and opens it in wa.me in a new tab so you can send it with one more tap; the reminder timestamp is then recorded against that cart.

Clicking Dismiss removes a cart from the Active list without messaging the customer, moving it to the Dismissed tab.

Before You Start

Step-by-Step Guide

1 Review today's abandoned carts

  1. Open the Active tab (default view).
  2. Scan each card's "time ago" note to prioritise the most recent abandonments, since intent is freshest right after they leave.

2 Send a WhatsApp recovery reminder

  1. Click Remind on a cart — a WhatsApp chat opens in a new tab pre-filled with a message naming up to three items and the cart total.
  2. Send the message from WhatsApp as normal.
  3. Back in BazaarPOS, the card now shows "Reminder sent [time] ago" so you know not to message again too soon.

3 Dismiss a cart you don't want to follow up on

  1. Click the ✕ icon on the cart card.
  2. The cart disappears from Active and can be found later under the Dismissed tab.

4 Check which carts were eventually recovered

  1. Switch to the Recovered tab to see carts whose customers later completed checkout.

Every Field & Button, Explained

Field / ButtonWhat it does
Active / Recovered / Dismissed tabsFilters the cart list by its current recovery status.
Customer name / phone / time agoWho the cart belongs to and how long since their last activity on it.
Item summary lineQuantity × product name for every item left in the cart.
Cart totalFormatted total value of the abandoned cart via the shared currency formatter.
"Reminder sent … ago" noteShown once a reminder has been sent for that cart, with a relative timestamp.
Remind buttonOpens a pre-filled WhatsApp chat (wa.me link) with the customer's captured phone number; disabled if no phone number was captured.
Dismiss (✕) buttonRemoves the cart from the Active list into Dismissed, without sending anything to the customer.

Tips & Best Practices

Troubleshooting & FAQ

The Remind button is disabled/greyed out.
That cart has no customer phone number captured. Without a phone number there is no WhatsApp number to message, so the button stays disabled for that cart.
I dismissed a cart by mistake.
It moves to the Dismissed tab rather than being deleted — you can still see the customer and items there, though there is no button to move it back to Active.
Nothing shows up in Active even though I know customers abandoned carts.
Carts are only captured from your connected online storefront/portal checkout flow — in-person POS sales and quotations never appear here.
I clicked Remind but the reminder timestamp didn't save.
The WhatsApp chat still opens even if the background call to record the reminder timestamp fails — the message send itself is not blocked by that, but you may see the "Reminder sent" note missing on refresh.

🧑‍💻 Developer Notes

Source component(s):

  • frontend-app/packages/pos-react-lib/src/pages/AbandonedCartsPage.jsx

Backend endpoints used:

  • GET /marketing/abandoned-carts
  • PATCH /marketing/abandoned-carts/:id/remind
  • PATCH /marketing/abandoned-carts/:id/dismiss

Related tables (db-core repositories):

  • AbandonedCart

Feature flag key: integrations (requires advanced plan tier or above)

The WhatsApp link is built entirely client-side with wa.me/<digits>?text=<encoded message> — no WhatsApp Business API call is made from this page. Recording the reminder timestamp via PATCH …/remind is treated as best-effort: its failure is silently swallowed since the WhatsApp tab has already been opened by that point. All money values use the shared storeFmt.currency() helper.