> For the complete documentation index, see [llms.txt](https://docs.tryterra.co/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.tryterra.co/help-center/help-topics/webhook/failures-errors-and-retries/ack-fast-process-async-timeout.md).

# Why is my webhook returning 504 errors?

A 504 means your server did not respond within Terra's roughly 8-second delivery window.

A 504 means your server did not respond within Terra's roughly 8-second delivery window.

When an endpoint repeatedly times out, Terra throttles delivery of all non-auth event types to that destination until it stops timing out. Auth events bypass the throttle, and isolated non-timeout `5xx` responses do not trigger it.

**The fix is to acknowledge webhooks immediately:**

* Return `200` and process asynchronously via a background task or queue.
* And/or switch heavier flows to [ping mode](https://docs.tryterra.co/health-and-fitness-api/managing-user-health-data/receiving-data-updates) so payload size and processing time stop mattering.

To find the latency, replay a webhook body against your endpoint yourself and measure where the time goes.

{% hint style="warning" %}
If deliveries keep failing, Terra emails a warning at about 8 hours and again at about 16 hours. **After 24 hours of continuous failures the destination is disabled.** One successful delivery resets the clock. A disabled destination does not re-enable itself: fix the cause, then on the dashboard Connections page hover over the destination row, open the **...** menu and choose **Enable**.
{% endhint %}
