When a webhook is not arriving, the logs tell you whether Arattai sent it and what your endpoint said back.
Field | What it tells you |
Event | Which event Arattai tried to deliver |
Endpoint | The URL it was sent to |
Attempt | Whether this was the first try or a retry |
Response status | What your endpoint returned, or that it did not respond |
Timestamp | When Arattai sent it |
Use the filters to narrow things down by event, endpoint or status. Logs are retained for a limited period.
Check that Arattai sent it. Find the event in the logs. If there is no entry, the problem is upstream, check that the webhook is not paused, and that the event is actually selected in your subscription.
Read the response status:
A client error usually means your handler rejected the request, most often a failed signature check.
A server error means your handler ran and crashed.
No response at all means a timeout or an unreachable host.
Count the attempts. Repeated retries against the same event tell you the failure is consistent, not a one-off.
Verify the signature check. If you recently rotated your shared secret, an endpoint still using the old one rejects everything. This is the most common cause of a sudden, total failure.
Check reachability. The endpoint must be publicly reachable with a valid certificate. A certificate that expired recently looks exactly like this.
Symptom | Cause |
Everything failing at once, starting at a specific moment | Secret rotation, an expired certificate, or a deployment |
Events failing intermittently | A timeout, your handler is doing too much work before responding |
To follow a single message from your API call to its outcome, take the message ID from the API response and search the logs for it. You will see chat.message.sent, then either chat.message.delivered or chat.message.failed, with the timestamps between them.