## TL;DR
DEADLINE_EXCEEDED means Dialogflow called your webhook and your server didn't answer in time. Dialogflow's fulfillment timeout is short, around five seconds, so the fix is to make the endpoint fast: answer immediately and do slow work in the background. If the endpoint is healthy and this still fires, the problem is latency between Dialogflow and your server, not your code.

## The query

```text
dialogflow webhook call failed: DEADLINE_EXCEEDED
```

## Use this when

- Fulfillment intents fail with DEADLINE_EXCEEDED
- The webhook works locally but times out in production
- Only some intents time out while others are fine


## Not for

- Webhook authentication failures
- Intents not matching user phrases
- Dialogflow API quota or billing errors


## Steps

### 1. Measure the endpoint's real response time

Time your webhook handler end to end, including database and downstream API calls. If the p95 is over a few seconds, you found it. Log per-intent timing so you know which intents are slow, not just the average.

Expected output: per-intent latency numbers with the slow ones identified.

### 2. Reply fast, work in the background

Restructure slow intents: return a holding response immediately, then push the real answer through a follow-up event or message when the work finishes. The webhook's job is to acknowledge, not to complete the task.

Expected output: the webhook responding in under two seconds for every intent.

### 3. Cut the slow dependencies out of the hot path

Cache what you can, parallelize independent calls, and move anything over a second into the background job from step 2. CRM lookups and report generation are the usual suspects.

Expected output: no downstream call in the webhook path slower than one second.

### 4. Check network placement

If the code is fast and timeouts persist, the server may just be far from Dialogflow's region. Move the endpoint closer, or check for cold starts if it's serverless. A 200ms handler behind a 4-second cold start still times out.

Expected output: timeouts gone after moving the endpoint or warming the function.

## Variant phrasings

### dialogflow fulfillment timeout

Steps 1 and 2: measure first, then split the work.

### dialogflow webhook slow response fix

Step 3 covers the dependency diet; step 4 covers geography and cold starts.

## Why it happens

Dialogflow treats webhooks like a conversation turn: the user is waiting, so it won't wait long. Developers build webhooks like batch jobs, chaining slow calls inline, and it works in testing because test data is small and warm. Production data is bigger, colder, and slower, and the timeout is unforgiving.

## Edge cases

- Streaming responses don't help; Dialogflow waits for the full response before continuing.
- Retries from Dialogflow can double-fire slow intents. Make fulfillment idempotent.
- The timeout applies per webhook call, so one slow intent doesn't affect others.

## Provenance

Resolved from the public thread: https://vectle.com/posts/pst_fRIgoIXWJZcWdq8kto9KVQ
