Setting up Abandoned Cart Recovery
Cart Recovery wins back sales that would otherwise be lost. When a shopper adds items and then goes quiet, TitanCart notices the cart, waits a period you set, and sends a timed series of recovery emails — each carrying a one-click link that rebuilds the cart exactly as they left it, and optionally a single-use discount code to close the sale. Setting it up takes about twenty minutes, and assumes your store can already send transactional email.
1. Turn on Cart Recovery
Cart Recovery is included in Pro. There is no separate purchase and no second license key to enter — your Pro license covers it.
- Go to TitanCart → Extensions → Extensions Marketplace and install Cart Recovery. It carries an Included in Pro pill rather than a price.
- Once installed it appears under TitanCart → Extensions → Installed Extensions, already active.
- Open Growth → Cart Recovery and, on the Settings tab, switch Enable Cart Recovery on. Click Save settings.
Nothing is tracked and nothing is sent until Enable Cart Recovery is on. You can build your whole sequence and design every email first with the switch off — the builder stays fully editable — and turn it on when you are happy.
2. Set who the emails come from, and which carts qualify
The rest of the Settings tab controls sending. The fields are grouped into General, Sender, Sending guards and Capture popup.
- From name and From email — who recovery emails come from. Leave either blank to fall back to your site name and your site’s admin address. If you type something that is not a valid email address, the admin address is used instead.
- Minimum cart total — carts worth less than this are ignored entirely, so you are not chasing a single low-value item. The figure compared is the cart’s subtotal: item prices times quantities, before shipping, tax or any other discount. Set it to
0for no minimum. - Email guests — whether shoppers with no customer account receive recovery emails. Turn it off and guest carts are still tracked and still counted in your analytics, but nothing is sent to them.
- Dedupe window (hours) — a guard against emailing the same person repeatedly. If an address already produced a recovery inside this window, the next cart from that address is skipped completely: it is never tracked and it never appears on the Recoveries tab. The default is 24 hours.
3. Set the abandonment threshold
On the Sequence tab, Abandonment threshold is how long a cart must sit untouched before TitanCart treats it as abandoned. The default is 60 minutes. A background job sweeps for qualifying carts every fifteen minutes, so detection happens shortly after the threshold passes rather than exactly on it.
This matters more than it looks, because every step delay in your sequence is counted from the moment of detection, not from the moment the shopper stopped shopping. The real elapsed time a shopper experiences is the threshold plus the step delay:
- 60-minute threshold plus a 60-minute first step — the shopper hears from you about two hours after they left, not one.
- 60-minute threshold plus a 24-hour second step — about 25 hours after they left.
If you want a genuinely fast first touch, shorten the threshold rather than the step delay. A short threshold catches shoppers who are only browsing in another tab, so most stores settle somewhere between 30 and 120 minutes.
4. Build your recovery sequence
A sequence is an ordered list of steps. Each step is one email, sent a set number of minutes after detection. There is one sequence per store, and it ships ready to use with three steps:
- Step 1 — 60 minutes after detection. A light “you left something behind”.
- Step 2 — 1,440 minutes (24 hours) after detection. A reminder.
- Step 3 — 4,320 minutes (72 hours) after detection, carrying a 10% discount that expires 48 hours after the email is sent.
For each step you can change the delay, switch the step on or off, edit its email, and attach or remove a discount. Add step appends a new one. Delays are absolute rather than cumulative — they are all measured from the same detection moment, so a step set to 1,440 minutes sends a day after detection regardless of what the step before it was set to.
5. What editing the sequence does to carts already in flight
This is the part that surprises people, so it is worth reading once carefully.
When a cart is detected, TitanCart immediately works out the send time for every step and writes those times down. From that point the cart is queued, and the queue is built only once. Some later edits reach a queued cart and some do not:
- Changing a step’s delay — does not move anything already queued. The old send times stand. New carts detected after the change use the new delay.
- Adding a step — does not reach carts already queued. They keep the steps they were given.
- Switching a step off — does not stop an email already queued for it. Turn a step off and carts detected from then on skip it, but carts already in flight still receive it.
- Deleting a step — silently drops the queued email. It never sends, and no error is recorded.
- Editing an email’s subject, preheader or blocks — does reach queued carts. The email is assembled from your current content at the moment it sends.
- Changing a step’s discount — also does reach queued carts. The code is minted when the email sends, using whatever the step says at that moment.
The short version: wording and discounts are live, timing and structure are frozen. If you restructure your sequence and want the change to apply to everything, expect it to take effect for carts detected after the edit rather than for the ones already moving through.
6. Design the recovery emails
Click Edit email on any step to open the block builder. Blocks are stacked in order and dragged to rearrange: a heading, a paragraph of text, a product grid showing what was in the cart, a discount-code block, a call-to-action button, a divider, a spacer and a footer. The Preview pane renders the email as you build it.
Text fields accept placeholders that are filled in when the email sends. Click a token chip to insert one:
{{first_name}}— the shopper’s first name. Empty for guests, who have no name on file, so write greetings that survive it — “Hi there,” rather than “Hi {{first_name}},”.{{cart_total}}— the cart’s value at the moment it was detected, formatted in the cart’s currency.{{restore_url}}— the one-click link back to the cart.{{coupon_code}}— the discount code for this step, if it has one.{{site_name}}— your store name.{{unsubscribe}}— the opt-out link. Every email carries one automatically in the footer, so you only need this token if you want a second one in the body.
Each step can also hold more than one email as an A/B variant. Add a variant and TitanCart splits sends between them by weight, then reports how each performed on the Analytics tab. The variant is chosen when the cart is queued, so a cart already in flight keeps the variant it was assigned — and deleting the variant a queued email was assigned to means that email quietly does not send.
The one-click restore link
The restore link rebuilds the shopper’s cart from the snapshot taken at detection and drops them on your Cart page, not at checkout — they still choose shipping and payment themselves. It works on any device and does not require them to log in.
Two things worth knowing. The link points the visitor’s browser at the original cart, so if they have since started a new cart on that device, clicking the link replaces what they are currently looking at with the recovered one. And because the link identifies the cart, it is personal — it should not be published anywhere public.
7. Add a discount to a step
A step can carry a percentage or a fixed-amount discount. When the email sends, TitanCart mints a single-use code for that specific shopper — codes look like SAVE4K2P9X — so the offer cannot be forwarded, shared or reused. Set Code expires after in hours; the clock starts when the email is sent, not when the shopper clicks.
The discount applies to the cart as a whole rather than to particular items, and it stacks with any other promotion the cart already qualifies for.
Cart Recovery creates and maintains its own promotion rows behind the scenes, named Cart Recovery Discount (Step 1) and so on. You will see them in Growth → Promotions. Leave them alone — editing or deleting one interferes with code generation for that step.
8. Capture guest emails with a popup
Logged-in shoppers already have an address on file. Guests do not, and a guest cart cannot be recovered until the guest gives you an email address — that is an action only the shopper can take, so no setting on your side will recover a guest cart on its own. The optional capture popup is how you ask.
- Email-capture popup — turns the popup on. It only appears to guests who already have something in their cart.
- Popup delay (seconds) — how long to wait before showing it.
- Exit-intent — also show it when a guest moves to leave the page. Desktop only; there is no mobile equivalent of the gesture.
- Popup heading, Popup message, Button label and Thank-you message — your own wording. Leave any of them blank to use the default. If you are promising something specific, such as a discount, say so here and make sure a step actually carries one.
A shopper who dismisses the popup is not asked again for seven days. One who submits an address is not asked again for thirty. The popup script is only loaded on the storefront when at least one of the two triggers is switched on, so a store that does not use it never collects anything.
9. Track recoveries
The Recoveries tab lists every cart being tracked, with its email address, status, cart total, item count and detection time. Status chips across the top let you filter by Pending, Active, Recovered, Converted elsewhere, Unsubscribed or Expired.
Open a row for the full picture: the snapshot of the items as they were, and a timeline of what happened — detected, email captured, email scheduled, email sent, email failed, cart restored, recovered, unsubscribed. The detail view also names where the address came from: customer for a shopper who was logged in, capture for one who used the popup.
A cart that sits at Pending and never moves usually means there is no address attached to it yet. Nothing can be scheduled until there is.
10. Measure performance
The Analytics tab covers the last 30 days, 90 days, 1 year or all time, and shows:
- Four headline figures — Revenue recovered (with the average recovered order beneath it), Recovery rate, Carts recovered and Emails sent.
- A daily Revenue recovered chart.
- A Recovery funnel — detected, emailed, clicked, recovered — with each stage shown as a percentage of the one before it.
- A status breakdown of every tracked cart.
- A/B variant results, comparing each variant’s sends, clicks, click rate and recoveries.
There is no open rate, and that is deliberate — Cart Recovery does not embed tracking pixels in your emails. Clicked counts restore-link clicks specifically, which is a far better signal of intent than an open anyway.
Limits worth knowing
None of these are faults, but each one has surprised somebody:
- Recovered revenue is credited generously. If a tracked shopper places any order while their recovery is still open, that recovery is marked recovered and the whole order total is booked as recovered revenue — even if they never opened your email, and even if they bought something different. Treat the figure as an upper bound on the program’s contribution rather than a precise measurement.
- The funnel is not strictly a funnel. Because of the above, Recovered can exceed Clicked, and occasionally Emailed.
- Unsubscribing applies to one cart. The opt-out link stops the remaining emails for that cart. It is not a permanent suppression list — if the same shopper abandons another cart later, they enter recovery again.
- Analytics report in a single currency. If you sell in more than one, the totals are summed without conversion and labeled with whichever currency appears most often in the period.
- The cart snapshot is taken once. Emails show the items as they were at detection. If the shopper changes the cart afterwards, the email still shows the original contents, and the restore link restores the original cart.
- Everything depends on scheduled tasks running. Detection sweeps every fifteen minutes and sending runs on the same schedule. On a very quiet store, where WordPress’s scheduler only fires when someone visits, both can run late.
Troubleshooting
- Nothing is being tracked at all — check that Enable Cart Recovery is on and saved, and that your Pro license is active. Then check Minimum cart total and Dedupe window (hours): both exclude carts silently and neither leaves a trace on the Recoveries tab, because an excluded cart is never added to it.
- Carts are listed but stuck on Pending — a recovery cannot be scheduled without an email address. For guests, that means the capture popup, and a guest who has not submitted their address will sit at Pending indefinitely. It also means every step of your sequence is switched off, or the only step has no email content.
- Emails are scheduled but never arrive — open the recovery and look at its timeline. email failed means your store could not hand the message off, which is a mail configuration problem rather than a Cart Recovery one; test with any other transactional email. If the timeline shows email sent, the message left your store and the issue is downstream — check spam placement and your From address.
- The first email arrives much later than I set — step delays run from detection, not from the shopper leaving. Add your Abandonment threshold to the step delay, then allow up to fifteen minutes of scheduler latency. Shorten the threshold to pull everything forward.
- I changed the sequence and nothing changed — timing and structure are frozen once a cart is queued. See section 5; your edit applies to carts detected after it.
- Guests are still being emailed after I turned Email guests off — messages queued before the change are stopped from 1.0.3 onward. On 1.0.2 the switch does not gate sending at all.
- A discount code was rejected — codes are single-use and expire a set number of hours after the email was sent, not after it was opened. Check that the step still carries a discount, and that the Cart Recovery promotion rows in Growth → Promotions have not been edited or deleted.
- Product names are missing from the email — on 1.0.2 the product grid reads names from English translations only, so a store with no English translations renders the grid with blank names. Fixed in 1.0.3, which follows your store’s default language.
- A placeholder printed literally in a customer’s inbox — check the spelling against the token list in section 6; anything not on it is passed through as written.
{{cart_total}}specifically requires 1.0.3.
Several items above refer to 1.0.3. Check your installed version under TitanCart → Extensions → Installed Extensions, and update from Extensions → Updates if there is a newer one.