The bot does not answer at all
Work outwards from the flow, because the most common cause is the least technical.A published flow that is not active, and an active flow that was never
published, look identical from the outside: silence. Both columns are on the
flows list for exactly this reason.
It answered before and stopped
Something changed about where providers deliver. The usual cause is the public address moving — a tunnel restarted, a domain changed, an ingress driver switched — while channels keep the URL their provider already stored. Nothing warns you: deliveries go to an address that no longer answers.Messages arrive but nothing is processed
Redis or the workers.Everything is slow, and the gateway seems idle
Check thatREDIS_PREFIX matches between the application and the gateway. A
mismatch means the gateway reads an empty registry, concludes it knows nothing,
and forwards every request to PHP. Nothing breaks — the gateway simply stops
being a gateway.
gateway:doctor reports the prefix it resolves.
A conversation is stuck
Open Sessions and read the Current node column. Several sessions on the same node, all idle, is a diagnosis rather than a coincidence: that node asks something people are not answering. Sessions stuck on a node that should not wait — a message, a branch — mean the step before it never completed, and Flow logs says why. Publishing a fix does not rescue sessions already running. They hold the version they started with until they finish or time out.Flow logging stopped working
A missing monthly partition, which means the scheduler is not running.logs:create-partition runs on the first of the month, so the failure surfaces
weeks after the scheduler actually stopped.
The admin panel looks broken after an upgrade
Rebuild the front end:Migrations pending after a deploy
Tenant migrations do not run with the landlord ones. They run per tenant:What to collect before asking for help
- What
php artisan gateway:doctorreports - Whether Horizon is running, and its failed-job count
- The assistant’s error count for the last 24 hours
- For one broken conversation: its session id, and the flow log filtered to it