Cart recovery & post-purchase
How to use it
Activate the highest-ROI flows in one click each:
- Turn on cart recovery — the default multi-channel flow works out of the box. (Communications → Flows → Cart recovery)
- Turn on the post-purchase journey to drive the second order. (Communications → Flows → Post-purchase)
- Enable the post-purchase upsell offer to lift AOV right at checkout. (Communications → Post-purchase upsell)
- Customize discounts & timing to your margins, then measure with a holdout.
⏱ ~5 min each · 💳 Starter+ · 🎯 First recovered cart the same day
Why this matters for your business
Two moments in the customer journey are worth more than any other:
- The cart abandonment moment. Customer browsed, added to cart, didn't check out. They were interested enough to commit one click; the next click is what you need. Most stores leak ~70% of carts at this stage; recovering even 15% adds meaningful revenue.
- The post-first-order moment. Customer just bought. Their trust in your brand is at its peak. The next 30-60 days are when they're most likely to buy again — if you stay in conversation. Most stores send a thank-you and then go silent until the next campaign.
Cart recovery + post-purchase journeys are the pre-built answers to both. Multi-channel (email + WhatsApp + SMS), customizable (start with defaults, tune later), measurable (per-step funnel + revenue + lift). They activate with one click each and start producing revenue in days.
What this typically unlocks
| Outcome | Result |
|---|---|
| Cart recovery rate | 8-22% typical |
| Second-order rate within 60d | +34% lift vs. no journey |
| Revenue per recovered cart | same as average order |
| Setup time | 5 minutes (defaults work) |
| Time from activation → first recovery | same day |
| Annualized revenue (median brand) | +$30K-200K |
Cart recovery — what you actually get
A 4-6 step flow with multi-channel + smart fallback:
Step-by-step rationale
| Step | Why this timing/content |
|---|---|
| Wait 30 min | ~40% return on their own; don't nag |
| Email + 10% off | Email lower fatigue cost than WA; modest discount |
| Wait 24h | Give breathing room; opened-not-clicked = considering |
| Skip if email opened | Opener saw you; nagging via WA = unsub trigger |
| WA interactive | High-engagement; quick-replies cut friction |
| Wait 48h | Last legit window |
| Final email + 15% off | Higher discount, last chance, end gracefully |
Customizable bits
- Discount amount per step
- Wait times
- Channel order (default WA before SMS; reverse if SMS preferred)
- Exit on purchase (default yes — don't keep nagging after order)
- Re-enrolment policy (default: new cart = new flow)
Post-purchase — what you actually get
A 4-6 step flow timed to the natural cadence after first order:
Step-by-step rationale
| Step | Why this timing/content |
|---|---|
| Wait 1h | Customer expects order confirmation immediately |
| Thank you + receipt | Builds trust, sets expectations |
| Skip 'first?' check for repeat customers | Don't infantilize them |
| 7-day check-in | Order should have arrived; ask how it was |
| 14-day review request | Product had time to be used |
| Loyalty incentive | Reward for review; seeds 2nd order |
| 21-day cross-sell | Out of post-purchase honeymoon; gentle next-product |
Post-purchase upsell offer (in-checkout)
Distinct from the post-purchase journey above (which is email/WhatsApp/SMS over days), the post-purchase upsell offer appears in Shopify's checkout flow immediately after payment — a one-click add-on the customer can accept without re-entering payment details. It's the single highest-converting upsell placement in commerce, because the purchase decision and trust are already made.
Two surfaces, never both
The offer can render on two surfaces, and the platform keeps them mutually exclusive so a customer is never shown a duplicate:
| Surface | Role | Availability |
|---|---|---|
| Classic post-purchase extension | Primary — a true post-checkout offer page | All plans |
| Thank-You-page block | Fallback when the classic extension isn't available | All plans |
Historically a true post-purchase page was effectively Plus-only. The classic extension brings it to all plans; the Thank-You-page block remains as a fallback. A heartbeat between the two surfaces ensures that when the classic extension is live, the Thank-You block stands down — so exactly one offer shows.
Use the upsell offer to lift AOV on this order (seconds after payment); use the post-purchase journey to drive the next order (over the following weeks). They complement each other.
Real merchant scenarios
Scenario A — Cart recovery on a $400 AOV brand
Setup. $4M brand, AOV $90. Activates default cart-recovery flow.
60-day result:
- Carts abandoned in window: 1,840
- Recovered: 252 (13.7%)
- Revenue recovered: $22,680
- WhatsApp step contribution: 41% of recoveries
- Avg discount cost (10/15% blend): $14 per recovery
- Net incremental revenue: ~$19K (after discount cost)
Scenario B — Furniture brand customizes flow for high AOV
Setup. Furniture brand, AOV $1,400, longer consideration cycle. Default flow's "30 min wait then push" was too aggressive.
Customization:
- Wait 24h instead of 30 min (matches their consideration cycle)
- Email: "Still thinking about [product]?" + design service offer (no discount)
- Wait 72h
- WhatsApp: "Quick question — is size or color your concern?"
- Wait 7d
- Email: "Last chance — your item is still in stock"
60-day result:
- Carts abandoned: 412
- Recovered: 89 (21.6%)
- WhatsApp reply rate: 38% — became a sales conversation
- Revenue recovered: $114K
- No discount given; full margin preserved
Scenario C — Coffee subscription post-purchase drives 2nd order
Setup. Coffee subscription brand. Activated default post-purchase flow.
90-day result for 1,200 first-time buyers:
| Metric | With journey | Holdout (no journey) |
|---|---|---|
| 2nd-order rate at 60d | 34% | 19% |
| Avg 2nd-order value | $42 | $39 |
| Review submission rate | 31% | 8% |
| Subscription opt-in (unrelated path) | 18% | 11% |
Lift: 15 percentage points on 2nd-order rate × 1,200 customers × $42 = ~$7,500 incremental revenue per cohort.
Scenario D — Replenishment journey for consumables
Setup. Skincare brand, customers reorder primary product ~every 35 days. Built custom journey on top of post-purchase.
Custom trigger: predictedReplenishProductId set on
Customer 360 (from sales engine) AND lastOrderAt > 30 days
ago.
Steps:
- Email: "Running low on [their product]?" with reorder link
- Wait 4d
- SMS: "Quick reminder: your [product] is ready to reorder"
- Wait 5d
- Email: "Maybe try our new [related product]?"
60-day result:
- Customers entered: 1,840
- Reordered after step 1: 612 (33%)
- Reordered after step 3: +280 (15% of remaining)
- Reordered after step 5: +124 (8%)
- Total replenishment revenue: $108K
The brand's CEO described this as "the journey that pays the team's salaries."
Scenario E — Brand catches review-request abuse risk
Setup. Default post-purchase asks for review at day 14. Brand notices: customers who haven't received their order yet (slow shipping) are getting review requests — bad reviews result.
Fix: Added condition: "Skip review-request step if
order's fulfilled_at < 7 days ago."
Result: Bad-review rate from review-request flow dropped from ~6% to <1%. Genuine reviews replace performance-anxious ones.
Best practices
✅ Activate both flows on day 1 of platform setup. They're the highest-ROI single-click activations.
✅ Customize discount amounts, not necessarily timing. The defaults are timing-tuned; discount levels depend on your margin.
✅ Watch the exit-reason mix. Cart-recovery exiting via
fatigue or unsub means it's too aggressive — tune.
✅ Use holdouts after 30 days to measure incremental lift. Otherwise you can't tell what the journey actually did vs. what would have happened anyway.
❌ Don't run cart recovery on flash-sale customers. They were already going to abandon at 50% rate; pinging them is fatigue with no recovery upside.
❌ Don't let the post-purchase flow run on every order. Skip for repeat customers (default does this); they don't need first-order onboarding again.
❌ Don't keep "last-chance" discounts indefinitely. End the flow gracefully; don't grind on customers who've moved on.
❌ Don't ask for reviews before order arrives. Common mistake; results in rage reviews.
Plan tiers
| Capability | Free | Starter | Pro | Agency | Enterprise |
|---|---|---|---|---|---|
| Built-in cart-recovery flow | ✓ (limited) | ✓ | ✓ | ✓ | ✓ |
| Built-in post-purchase flow | ✓ (limited) | ✓ | ✓ | ✓ | ✓ |
| Multi-channel (WA + email + SMS) | — | ✓ | ✓ | ✓ | ✓ |
| Customize defaults | — | ✓ | ✓ | ✓ | ✓ |
| Custom flow variants | — | — | ✓ | ✓ | ✓ |
| Per-segment flow targeting | — | — | ✓ | ✓ | ✓ |
| Holdout incrementality | — | — | — | ✓ | ✓ |
| Multi-store flow library | — | — | — | ✓ | ✓ |
See also
- Communications overview
- Sales engine journeys — these flows are built on the journey primitive
- Sales engine experiments + holdouts — measure flow lift formally
- WhatsApp engine — the channel that drives most cart recovery
- Email channel