30 abandoned cart messages for WhatsApp (copy and paste)
By José Pedro · Co-founder of CRPRO
30 copy-paste WhatsApp templates for recovering an abandoned cart, organized by payment situation, plus the four rules that keep a good template from burning the list and the one mistake — charging someone who already paid — that has no way back.
Abandoned carts are almost always handled by email. The problem is the clock: a recovery email takes hours to get opened, and a Pix code expires in 30 minutes. By the time the message lands, buying intent has already cooled off — or the customer bought from a competitor.
WhatsApp flips that around. The message gets read in minutes, and it's the only channel where you can resend the Pix code within the window it's still valid.
Below are 30 abandoned cart messages organized by situation: Pix generated and not paid, boleto issued, card declined, abandonment before payment, and the follow-up attempts after that. Copy them, swap out what's in brackets, and adapt them to your store's tone.
Before you copy any template: 4 rules
A good template with the wrong trigger burns the list. These four rules matter more than the copy:
1. Check whether the person already paid — at the instant of sending, not when the flow started. This is the most expensive mistake in cart recovery. Charging someone who just paid destroys the trust the sale had just built.
2. Respect the payment method's window. Pix expires fast: the first message makes sense within 15 to 30 minutes. A boleto lives for days — sending one in 20 minutes is overkill.
3. Identify the store in the first line. A message from an unknown number talking about "your order" looks like a scam. Say the store's name before you say anything else.
4. One ask per message. "Finish your purchase, and grab the coupon, and check out the other products" doesn't convert. One message, one action, one link.
Pix generated and not paid
The most Brazilian scenario there is — and the one with the highest return, because the person has already chosen, already filled in their details, and already generated the code. All that's missing is one touch.
-
"Hi, [name]! This is [store]. Your Pix for [amount] is still open and expires in [time]. Want me to resend the code?"
-
"[name], your order is reserved, but the Pix hasn't come through yet. Here's the code to copy and paste: [code]"
-
"Hi! I saw you generated the Pix code for [store] and it expires in a few minutes. If anything goes wrong with the payment, message me here and I'll sort it out."
-
"[name], everything okay with the payment? Your Pix for [amount] is still valid until [time]. After that the cart releases and the price may change."
-
"Hi, [name]! If the Pix already expired, no problem — I can generate a new one right now. Want me to?"
-
"Your order at [store] is one Pix away from being ready. 😊 Code: [code]. Any questions, just reply here."
-
"[name], the Pix for your order [number] expired. I generated a new one for you: [link]. Valid for another [time]."
How to run this without charging someone who already paid: see the Vega Checkout integration with WhatsApp.
Boleto issued and unpaid
A boleto has a long deadline, so the mistake here is the opposite: sending too early and coming off as annoying.
-
"Hi, [name]! Your boleto from [store] is due [date]. If you need a new copy, just ask."
-
"[name], your boleto for [amount] is due in 2 days. Barcode number: [number]"
-
"Hi! Just a heads-up that your order [number] is held for you until the boleto's due date, on [date]."
-
"[name], your boleto expired yesterday. I can issue a new one for the same amount — want me to?"
-
"If it's easier to pay by Pix, I can switch your order's payment method right now. Just let me know."
Card declined
Here the person tried to pay. They want to buy. Treat it as a technical issue, not as a collection.
-
"Hi, [name]! Your payment wasn't approved by the bank. That's usually a limit issue or a typo in the card details — want to try again?"
-
"[name], your card was declined, but your cart is still saved. Here's the link to try another card or pay by Pix: [link]"
-
"Hi! Something happened with the payment on order [number]. If you'd like, I can switch it to Pix and you can pay right away."
-
"[name], a card decline is almost always the bank, not you. 🙂 Give it another shot here: [link]"
Cart abandoned before payment
Here the intent is weaker — the person hadn't even picked how to pay. The message needs to remind them of the product, not collect anything.
-
"Hi, [name]! I saw you left [product] in your cart at [store]. Any questions I can help with?"
-
"[name], I set aside the [product] for you. Want me to hold it until tomorrow?"
-
"Hi! Your cart at [store] still has [product] waiting. If shipping was the issue, tell me your zip code and I'll look at a better option."
-
"[name], just confirming: was it the [product] in [color/size]? If you'd like to change it before checking out, there's still time."
-
"Hi, [name]! Before [product] sells out: your cart is right here 👉 [link]"
-
"[name], I noticed you got to checkout and stopped. Was there a problem on the site? Let me know and I'll help."
Second attempt (24 to 48 hours later)
If the first got no reply, the second changes the angle — asking instead of reminding.
-
"Hi, [name]! I don't want to push. Just tell me one thing: did you decide against the [product], or was it something with the payment?"
-
"[name], if you changed your mind, no problem at all — let me know and I'll release your reservation for someone else."
-
"Hi! Last time I'll bring this up 🙂 Your [product] is still available: [link]"
-
"[name], your cart expires today. If you still want it, just reply YES and I'll finish it for you."
Last chance with an incentive
Use sparingly. A discount on every recovery teaches customers to abandon their cart on purpose.
-
"[name], I got you [discount] off your [product] if you check out today. Valid until [time]: [link]"
-
"Hi! I unlocked free shipping on your cart — only until the end of the day. [link]"
-
"[name], it's the last [product] in stock. If you want, I'll hold it for you right now: [link]"
After the purchase is recovered
- "Payment confirmed, [name]! 🎉 Your order [number] is already being packed. I'll let you know when it ships."
The mistake that burns the whole list
Of all the ways to get cart recovery wrong, one is irreversible: charging someone who already paid.
The scenario is common. The flow triggers at 2:00pm with the message scheduled for 2:30pm. At 2:12pm the customer pays. At 2:30pm they get "your Pix is still open." The sale was closed and it turned into distrust — and it's the kind of thing people tell others about.
Two safeguards fix this:
- Re-check the cart's state at the instant of sending, not just when the flow started. It's a matter of minutes, and that's when the payment happens.
- Suppress by document ID. If any purchase under the same tax ID (CPF, Brazil's individual taxpayer registry number) was approved in the last 30 minutes, cancel the outreach. This covers the customer who generated two Pix codes by accident and paid one.
Whoever builds recovery in an email marketing tool rarely has both — the list gets built beforehand and sent afterward, with no re-checking at all.
How to automate this without becoming spam
A ready-made template solves the copy. What decides the result is who receives it and when.
On CRPRO, recovery reads checkout events and filters before sending. You can recover only Pix codes above a certain amount, only a specific product, or only people who haven't been contacted yet — and the message only goes out after re-confirming that the payment didn't come through.
The connection with Vega Checkout works via webhook, no token needed, and the "Recover unpaid Pix" preset already comes ready-made in the flow gallery.
If you're still getting your support organized before automating, start with the guide to automatic messages on WhatsApp — and it's worth reading what WhatsApp considers spam before turning on any automated sending, because poorly calibrated recovery is the fastest way to get the number banned.