On this page (6)
The ten-minute end-to-end check
- 1
Abandon a cart with your own number
Add an item on your storefront, start checkout, enter your own name and phone, then close the tab. Within a minute the cart shows up under Commerce → Abandoned Carts with your number on it.
- 2
Get the reminder
Either wait out reminder 1's delay, or temporarily set it to 1 minute. The message arrives on your phone with a working button back to your cart.
- 3
Pay
Complete the order. The cart flips to Recovered, remaining reminders stop, and the order message arrives.
- 4
Ship it
Mark the order fulfilled with a tracking number. The shipped message arrives with the tracking line filled in.
- 5
Try a COD order
Place one with Cash on Delivery, tap Confirm on your phone, and check the order picks up its confirmation (and its Shopify tag, if you set one).
- 6
Put the delays back
Return reminder 1 to its real delay and save. A one-minute reminder in production feels like a bot.
No carts are arriving at all
| Check | Fix |
|---|---|
| Store card status | Shopify: the webhook count should read 6 of 6 — click Re-sync if it is lower. WooCommerce: the plugin version should be shown, otherwise install or activate it. |
| Third-party checkout | GoKwik, Shiprocket and similar own the cart, so the platform's cart webhooks never fire. Post carts to the store's ingest URL from the checkout provider instead. |
| Last event received | Connection details shows when the store last sent anything. Nothing ever? The plugin or your code has not reached Wapzio — a firewall or a wrong URL. |
| Shopify app still installed | Uninstalling the custom app silently ends every event. |
Carts arrive but nothing is sent
| What the cart says | What it means and what to do |
|---|---|
| No phone number on the cart | Your checkout is not collecting one, or is not sending it. Make the checkout phone field required. On Shopify, also request protected customer data access for the app. |
| Skipped — no marketing consent | Require marketing consent is on and this shopper never agreed. Send whatsapp_opt_in from your checkout, or turn the requirement off if your legal position allows. |
| Skipped — daily message cap reached | The shopper hit Max carts reminded per contact per day. Raise it for future carts; the skip on this cart is final. |
| Skipped — below minimum cart value | Minimum cart value is above this cart's total. |
| Skipped — quiet hours | It is waiting for the window to end, not lost. |
| Reminder is on, nothing scheduled | That rung has no template. Pick one, or switch the rung off. |
| Recovery is off | The master toggle at the top of Recovery Flows. |
A message failed — what Meta's codes mean
| Code | Meaning | What to do |
|---|---|---|
| 131049 | WhatsApp is protecting this person from too much marketing this period, so the message was not delivered. | Nothing is broken. Send order updates as Utility templates, which this limit does not apply to, and space marketing further apart. |
| 131050 | The shopper has opted out of marketing from your number. | Only utility and service messages will reach them. Wapzio already skips them for promotional events. |
| 131026 | The number cannot receive WhatsApp messages. | Usually a landline, a mistyped number, or a country code missing. Set the store's default country code. |
| 132000 / 132012 | The template's variables do not match what was sent. | Re-open the flow and map every placeholder; re-check the template was not edited on Meta afterwards. |
| 470 / re-engagement | The 24-hour window closed for a free-form reply. | Reply with a template instead. |
Hover the red failed icon on any message in the inbox and Wapzio shows Meta's own reason for that send, code included — you do not need to read a log file to find out why one message failed.
Signing and security problems
| Status on the store card | Cause | Fix |
|---|---|---|
| Signed requests are failing | The signature did not verify. The reason is printed next to it. | Sign the exact string "<timestamp>.<body>" with the store's secret, send that same body, and keep the server clock within five minutes of real time. |
| Unsigned requests are still arriving | Requests are reaching Wapzio without the two headers. | Add them in your code, or update Wapzio Connect to 1.1.0 or later, which signs automatically. |
| Signed requests verified | Everything is correct. | Now switch Only accept signed requests on, so an ingest URL alone is no longer enough to post carts. |
- Rotate token on the store card's ⋯ menu if the ingest URL or secret was ever shared outside your team. Re-download the WooCommerce plugin afterwards, or update the URL in your code — the old one stops working immediately.
- Never put the ingest URL or signing secret in browser JavaScript, a mobile app, or a public repository. Both belong on your server.
Still stuck?
Open a chat with support from inside the panel and tell us the store name, the cart or order number, and roughly when it happened. That is enough for us to follow one specific cart from your store's request to the WhatsApp delivery receipt.