Troubleshooting
Common admin tasks and fixes.
Customer bought but got no stamp
Find the order on the Orders page and read its Stamps badge. The badge records why the order did or did not earn a stamp, so start there.
| Badge | Cause | What to do |
|---|---|---|
| Under min (RM X short) | The subtotal after vouchers fell below the campaign minimum. Shipping and tax never count. | Nothing to fix. Tell the customer the shortfall the badge shows. |
| No app account | No app account matched the buyer's Shopify customer, or has verified the order's email or phone. The phone number a customer signs in with is verified. An email or phone typed into the profile is not, and the shipping phone never links an order. Customers often check out with a different email from the one in the app. | When an account verifies a matching email or phone, its paid orders from the last 30 days earn stamps on their own. For an older order whose email or phone the customer has verified, press Reprocess stamps. Otherwise ask an engineer, because the dashboard cannot link an order by hand. |
| Awaiting payment | Shopify has not reported the order paid. COD orders wait here. | Wait for payment. If Shopify shows it paid and the badge has not moved, mark it paid on the order page, which starts the stamp run. |
| Needs review | Either staff awarded this customer stamps by hand after the order, or the order matched the customer only through its shipping phone (often a gift the customer received). The system did not stamp it. | Check the customer's stamp history. If the manual award was not for this order, press Reprocess stamps. A shipping-phone match stays unlinked, so ask an engineer before giving that order to anyone. |
| No campaign | No stamp campaign was running when the order was processed. | Check the campaign dates. If the campaign should have been live, fix it and press Reprocess stamps. |
| Not awarded | A campaign qualified but refused the stamp, for example because it ended mid-run. | Press Reprocess stamps. If it stays, ask an engineer. |
| – (dash) | The order predates stamp outcomes, or its rewards run never finished. | Press Reprocess stamps. |
If the order is missing from the Orders page altogether, the webhook never arrived.
- Webhooks page. Check that every topic is registered, URLs are current, and no badge shows an error.
- Ask an engineer to check the backend dead-letter queue. Failed
orders/createevents land there after 5 retries.
Engineers can trace an order end to end in Order to Rewards.
Voucher code "can't be applied" in checkout
- Check the voucher's status (Issued page) — used/expired/cancelled codes are removed from Shopify.
- Channel restriction — app-restricted codes fail on the web storefront.
- If the customer insists it's unused and in-date, Reissue a fresh code and revoke the old one.
Shopify sync health shows unsynced codes
Vouchers overview → sync health card. Use Sync to Shopify from the templates bulk bar; if it persists, an engineer should check the shopifySyncPool for a backed-up queue.
Customer says their QR code says "already claimed"
Look the code up in the campaign's code table — if claimed by someone else, the code leaked; Reset claimed code ⚠️ if appropriate, and pull the printed batch. If claimed by this customer, their voucher is in their account (check Users → Loyalty).
Notifications aren't arriving
- Queue tab — stuck rows? Process Queue / Retry Failed.
- History — per-channel status shows push
suppressed(user preferences/quiet hours) vsfailed(no valid Expo token — ask the user to re-enable notifications in-app). - Before asking, find out which app version the customer runs. App version 1.10.0, and earlier builds back to late February 2026, never register a push token because of an app bug. For those customers
faileddoes not point at a setting they can change. They receive pushes again once they update to a release that carries the fix. - Templates render nothing automatically — a blank send means the compose fields were blank.
Access Denied on a deep link
Your role doesn't cover that area (see Overview & Roles). Ask a Super Admin — or for the audit log, note that it's admin-only by design.