BouncerBouncer Docs
WooCommerce

Abandoned Order Recovery

Detect WooCommerce orders stuck in pending, on-hold, or failed and trigger a Bouncer follow-up


The Abandoned Orders screen (in the Bouncer WhatsApp sidebar) detects orders stuck in pending, on-hold, or failed past a threshold and sends an order.abandoned.* webhook to Bouncer so a workflow can follow up.

Activity

The Activity tab shows a live pipeline of orders currently in tracked statuses.

Abandoned Orders activity pipeline

Configure detection

Open the Settings sub-tab to configure detection:

Abandoned Orders detection settings with per-status thresholds
  1. Tick Enable tracking to run checks on a schedule.
  2. Choose a Check frequency (every 5, 10, or 15 minutes).
  3. Under Tracked Statuses, enable each status to watch and set its threshold in minutes. Each maps to a Bouncer event:
    • Pending paymentorder.abandoned.pending_payment (default 5)
    • On holdorder.abandoned.on_hold (default 1440)
    • Failedorder.abandoned.failed (default 60)
    • Set a threshold to 0 to disable that status individually.
  4. Leave Skip subscription renewals ticked to ignore renewal orders.
  5. Click Save settings.

Use Check Now to run a sweep immediately, or Send Test Webhook to verify Bouncer receives the payload.

Follow up with a workflow

Once the webhook reaches Bouncer, build a workflow triggered by the matching order.abandoned.* event to send a recovery message. See the step-by-step Abandoned Order Recovery workflow guide. To start the conversation over Meta Cloud API, you'll need an approved template — see Order Notifications for the template pattern and variable mapping.

For how these events flow into Bouncer workflows, deduplication, and signature verification, see the engineering reference in the repo at docs/integrations/woocommerce-abandoned-orders.md.

Troubleshooting

SymptomFix
Abandoned webhook not sentTracking disabled, threshold not reached, or the status is unchecked in Abandoned Orders → Settings.
Webhook sent but no follow-upNo workflow is listening for the order.abandoned.* event in Bouncer.
Renewals firing unexpectedlyKeep Skip subscription renewals enabled.