How to Enable WhatsApp Cart Recovery
ProfilePilot Team | Sep 24, 2026 | 8 min read
Turn on abandoned-cart and reorder reminders (G1/G2), confirm Marketing templates and opt-in, then verify the whatsapp-recovery cron sends once.
Step 1: What cart recovery does
Cart recovery (G1) sends Marketing template `cart_reminder_v1` when a shopper leaves a non-empty WhatsApp cart idle (default 60 minutes).
Reorder nudge (G2) sends `reorder_reminder_v1` about 25 days after a paid line item (±1 day).
Both runs are driven by Cloud Scheduler job `whatsapp-recovery` (every 15 minutes). Org toggles default off until you enable them on WhatsApp Orders → Catalog → Cart recovery.
Meta usually classifies these templates as Marketing (not Utility). Recipients must be marketing opted-in; STOP always wins.
Step 2: Approve templates on the client WABA
In WhatsApp Manager on the same WABA as the connected phone:
cart_reminder_v1 (Marketing, `en`)
`Hi {{1}}, you left items in your WhatsApp cart ({{2}}). Reply in this chat or tap below to finish your order before {{3}} expires.`
Custom button: Finish order. Samples: Sam / 2 items / today.
reorder_reminder_v1 (Marketing, `en`)
`Hi {{1}}, your previous order included {{2}}. Reply in this chat if you would like to order again.`
Custom button: Order again. Samples: Sam / product name.
Variables cannot start or end the body. Wait until status is APPROVED.
Step 3: Sync templates and opt-in a test number
- ProfilePilot → Marketing → Templates → Sync from WhatsApp.
- Confirm both names appear (APPROVED + MARKETING).
- Marketing → Audience: opt in the WhatsApp number you will test with (or use an existing opted-in contact).
Without opt-in, the cron skips the send even if Cart recovery is enabled.
Organisation Selector must be the client org that owns the WABA.
Step 4: Enable Cart recovery on Catalog
Open WhatsApp Orders → Catalog → Cart recovery:
- Toggle Abandoned cart (G1) and/or Reorder nudge (G2)
- Adjust idle minutes (15–1440, default 60) and reorder days (7–90, default 25)
- Click Save cart recovery
The panel shows whether templates were found in the last Sync (helpful, not required for Cloud API name send).
Step 5: Smoke-test G1
- From an opted-in WA, start a chat order and leave items in the cart (do not pay).
- Wait until idle ≥ your setting (or temporarily set idle to 15 minutes for QA).
- After deploy, ops can force-run Cloud Scheduler job `whatsapp-recovery`.
- You should receive one `cart_reminder_v1` message.
- A second cron tick must not re-send the same cart fingerprint. Empty the cart or place an order to stop further G1 for that cart.
G2 needs a paid order line aged ~25 days (±1 day). Use a historical paid order or wait for the window in production.
Step 6: Troubleshooting
| Issue | Fix | | --- | --- | | No send | Toggle off; contact not opted in; cart empty; state awaiting_payment; open unpaid order | | Duplicate worry | Idempotent via whatsapp_recovery_sends unique (org, kind, wa_id, fingerprint) | | Template Graph error | Name/language must match APPROVED template (en) | | Cron 403/404 | Deploy must include /api/cron/whatsapp-recovery; Scheduler already points at production | | Reorder never fires | Paid payment_status; line in ±1 day of reorder_reminder_days; 90-day cooldown |
Quick Tasks
- ✓Approve cart_reminder_v1 and reorder_reminder_v1 on the client WABA
- ✓Sync templates in Marketing
- ✓Opt in a test WhatsApp number on Audience
- ✓Enable Cart recovery toggles on WhatsApp Orders → Catalog
- ✓Leave an idle cart (or lower idle minutes) and confirm one reminder
Keep learning
See the latest guides, experiments, and rollouts.