Troubleshooting
The problems that actually happen, in the order they are worth checking.
Four causes explain most of it
Before working through a specific symptom, know that nearly everything reported as a fault is one of these:
| Cause | Looks like | Check |
|---|---|---|
| The scheduler is not running | No email, subscriptions never end, payouts never sent, scheduled posts never publish. | Scheduled tasks |
| A feature is switched off | A whole screen is missing for everybody. | Turning features on and off |
| Opening hours | Nobody can order from a restaurant. | Restaurant profile |
| A webhook is not arriving | Orders stuck unpaid, subscriptions not renewing. | Payments & gateways |
Nothing is being emailed
The commonest support case on the whole platform. Work down in this order:
- Open the email log. If it is full of Pending, the Email retry task is not running — that is the answer, and SMTP is not the problem.
- If entries are Failed, read the error. It is your mail server's own words, usually an authentication failure needing an app-specific password.
- If they say Sent but nothing arrives, it is deliverability — the from address and your SPF/DKIM records.
- If one particular message never sends, that template is switched off.
An order is stuck unpaid and the customer says they paid
The money is with the gateway. This is a recording problem, not a lost payment — do not ask them to pay again.
- Check the webhook status on Settings → Payment.
- Check the audit log for rejected webhook entries — a run of them means a signing secret is wrong.
- Confirm Reconcile payments is running. It re-checks the gateway and settles these automatically.
A restaurant is approved but not on the storefront
Approval is one of several conditions. All of these must also be true:
- At least one published, available dish.
- Opening hours set.
- A position on the map, if customers browse by distance — see Maps.
- Their subscription still active, on a paid plan — see Subscriptions.
A dish is not visible to customers
Five gates, and no category is the one people miss:
- Is it on sale?
- Does it have a category? Uncategorised dishes render nowhere. Filter by No category on Dishes.
- Is its serving time covering now?
- Is its stock item in stock?
- Is the restaurant open, or is scheduling available?
A subscription did not renew
- Is it an agreement or a single term paid by saved card? The second never auto-renews, and the panel says so — see Your plan & billing.
- Is the card current? Expiry is the commonest cause.
- Are webhooks arriving? A renewal charge the platform never hears about leaves the term untouched.
- Is Subscription expiry running?
Somebody cannot see a screen
Three gates, in this order — and the first is the one people skip:
- The service switch. A privilege cannot reveal a feature that does not exist.
- Their plan.
- Their role. Have them sign out and back in after a change.
Uploads fail
Nearly always the server's own limits rather than anything in the product. Raise
upload_max_filesize and post_max_size — if the post
limit is lower, the upload fails with no useful message. Then check
public/uploads is writable.
The kitchen has nothing and the customer ordered
The order is unpaid. Unpaid online orders are deliberately kept off the kitchen board and out of riders' hands.
A rider gets no assignments
They are offline. Only available riders are offered in the selector — see The driver app.
The customer's delivery map stopped moving
The rider closed the delivery page, refused location permission, or their session expired. In that order — see Working a delivery.
Figures disagree between two screens
| Symptom | Usually |
|---|---|
| Revenue lower than the order total | Refunds are subtracted; unpaid orders are not counted. |
| Two reports disagree | Different date ranges. They do not share one. |
| Sales up but earnings flat | Growth on low-commission plans. Read take rate. |
| Margin looks wrong | Dishes without a cost are excluded. The screen names the count. |
| Fulfilment time absurd | Orders left open until the end of service. |
Something changed and nobody knows who
The audit log — filtered by record type, which you usually know before you know who. It only works if logins are personal; one shared account makes it useless.
After an update, something broke
- Was
public/uploadspreserved? Overwriting it loses every uploaded image. - Was the database migration run? See Updating to a new version.
- Was your
.envfile preserved? It holds the database credentials and the application key.