WhatsAppMarketingCart recoveryOrders

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 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

  1. From an opted-in WA, start a chat order and leave items in the cart (do not pay).
  2. Wait until idle ≥ your setting (or temporarily set idle to 15 minutes for QA).
  3. After deploy, ops can force-run Cloud Scheduler job `whatsapp-recovery`.
  4. You should receive one `cart_reminder_v1` message.
  5. 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.

Back to Resources