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:

CauseLooks likeCheck
The scheduler is not runningNo email, subscriptions never end, payouts never sent, scheduled posts never publish.Scheduled tasks
A feature is switched offA whole screen is missing for everybody.Turning features on and off
Opening hoursNobody can order from a restaurant.Restaurant profile
A webhook is not arrivingOrders stuck unpaid, subscriptions not renewing.Payments & gateways

Nothing is being emailed

The commonest support case on the whole platform. Work down in this order:

  1. 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.
  2. If entries are Failed, read the error. It is your mail server's own words, usually an authentication failure needing an app-specific password.
  3. If they say Sent but nothing arrives, it is deliverability — the from address and your SPF/DKIM records.
  4. 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.

  1. Check the webhook status on Settings → Payment.
  2. Check the audit log for rejected webhook entries — a run of them means a signing secret is wrong.
  3. 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:

  1. Is it on sale?
  2. Does it have a category? Uncategorised dishes render nowhere. Filter by No category on Dishes.
  3. Is its serving time covering now?
  4. Is its stock item in stock?
  5. Is the restaurant open, or is scheduling available?

A subscription did not renew

  1. 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.
  2. Is the card current? Expiry is the commonest cause.
  3. Are webhooks arriving? A renewal charge the platform never hears about leaves the term untouched.
  4. Is Subscription expiry running?

Somebody cannot see a screen

Three gates, in this order — and the first is the one people skip:

  1. The service switch. A privilege cannot reveal a feature that does not exist.
  2. Their plan.
  3. Their role. Have them sign out and back in after a change.

See What each role can do.

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

SymptomUsually
Revenue lower than the order totalRefunds are subtracted; unpaid orders are not counted.
Two reports disagreeDifferent date ranges. They do not share one.
Sales up but earnings flatGrowth on low-commission plans. Read take rate.
Margin looks wrongDishes without a cost are excluded. The screen names the count.
Fulfilment time absurdOrders 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

  1. Was public/uploads preserved? Overwriting it loses every uploaded image.
  2. Was the database migration run? See Updating to a new version.
  3. Was your .env file preserved? It holds the database credentials and the application key.
Before reporting a fault, check the scheduler. It is behind a genuinely surprising share of what looks like broken functionality, and it fails silently by design — a disabled job is a skip, not an error.