Back to Guides
Webhooks & Automation10 min

Troubleshooting

Solve common webhook issues โ€” error codes, retry configuration, timeout tuning, success conditions, and frequently asked questions for reliable automation.

What you'll learn

  • Common errors and solutions
  • Configuring retry
  • Timeout tuning
  • Success conditions
  • FAQ
  • Getting help
1

Common errors and solutions

When a webhook fails, the HTTP status code tells you what went wrong. Here are the most common errors and how to fix them. Timeout (408) means your endpoint took longer to respond than the configured timeout โ€” increase the timeout setting in your webhook configuration. Rate Limited (429) means the receiving service is throttling your requests โ€” enable retry with exponential backoff so Chattlebot will automatically re-attempt the request with increasing delays. Server Error (500โ€“504) indicates a problem on the receiving endpoint โ€” check your endpoint's health, logs, and whether the service is experiencing an outage. Bad Request (400) usually means your payload doesn't match the format the API expects โ€” verify your JSON syntax, check for missing required fields, and ensure variable names are correct. Authentication Failure (401/403) means your credentials are wrong, expired, or the token doesn't have the right permissions โ€” verify your authentication settings and rotate tokens if needed. Network Error means Chattlebot couldn't reach your URL at all โ€” verify the URL is correct, the server is publicly accessible, and you're using HTTPS. Start by looking at the error with the highest count in your health dashboard โ€” fixing it will have the most impact.

Common Errors & Solutions

Timeout408
Increase timeout setting (default 10s)
Rate Limited429
Enable retry with exponential backoff
Server Error500โ€“504
Check your endpoint health and logs
Bad Request400
Fix payload format โ€” check JSON syntax
Auth Failure401/403
Verify credentials or rotate token
Network Errorโ€”
Verify URL is reachable and uses HTTPS
2

Configuring retry

Retry with exponential backoff helps your webhooks recover from transient failures automatically. When enabled, Chattlebot will re-attempt failed requests with increasing delays: 1 second after the first failure, 2 seconds after the second, and 4 seconds after the third. This backoff pattern prevents overwhelming a struggling endpoint while still giving it a chance to recover. Retryable status codes include: 408 (Timeout), 429 (Rate Limited), 500, 502, 503, and 504 (Server Errors). These are all situations where a retry might succeed because the issue is likely temporary. Non-retryable codes like 400 (Bad Request), 401 (Unauthorized), 403 (Forbidden), and 404 (Not Found) are NOT retried because they indicate a configuration problem that won't fix itself โ€” you need to correct the payload, credentials, or URL. You can set the maximum number of attempts from 1 to 5 in your webhook settings. Each attempt is logged separately in the execution history, so you can see exactly which attempt succeeded and which ones failed.

Exponential Backoff

1
Initial request
2
1st retry
wait 1s
3
2nd retry
wait 2s
4
3rd retry
wait 4s

Retryable

408429500502503504

Non-retryable

400401403404422
Retry configuration with max attempts and backoff settings
3

Timeout tuning

The timeout setting controls how long Chattlebot waits for your endpoint to respond before giving up. The default is 10 seconds, and you can set it anywhere from 5 to 60 seconds. When to decrease (5โ€“8s): Use shorter timeouts for simple notification endpoints like Slack webhooks, email triggers, or basic data logging โ€” these should respond almost instantly, and a long timeout would just delay error detection. When to use the default (10s): The 10-second default works well for most CRM APIs, database operations, and standard webhook receivers. When to increase (15โ€“30s): Use longer timeouts for AI/ML APIs (like OpenAI or enrichment services), endpoints that do database lookups, or APIs that process data before responding. When to use maximum (30โ€“60s): Reserve the highest timeout values for batch operations, file processing, or slow third-party services that you know need extra time. For AI-callable webhooks, keep timeouts reasonable โ€” the AI waits for the response during a live chat, so anything over 10 seconds will feel slow to the user.

Timeout configuration setting
4

Success conditions

Sometimes an HTTP 200 status code doesn't actually mean success. Some APIs return 200 OK but include an error in the response body, like {"status": "error", "message": "Duplicate entry"}. Without a success condition, Chattlebot would mark this as a successful execution because the HTTP status was 200. To catch these cases, configure a success condition with two fields: a JSONPath expression that points to the field you want to check (e.g., $.status), and an expected value that field should contain (e.g., "success"). When a success condition is configured, Chattlebot checks both the HTTP status code AND the response body. The execution is only marked as successful if the HTTP status is in the success range (200โ€“299) AND the JSONPath field matches the expected value. This is especially important for workflow webhooks where subsequent steps depend on the webhook actually succeeding, and for AI-callable webhooks where a false success could lead to the AI presenting incorrect data to users.

Success condition configuration with JSONPath and expected value
5

FAQ

Here are answers to the most frequently asked webhook questions. 'Works in test but not on real leads' โ€” The most common cause is that the trigger settings aren't configured correctly. Check that the Lead Capture trigger is enabled and that the urgency filter isn't set too restrictively (e.g., High only when most leads come in as Medium). Test mode uses sample data and always fires regardless of trigger settings. 'Getting duplicate calls' โ€” This happens when the same webhook has both Lead Capture and AI-Callable triggers enabled. A single conversation might trigger both โ€” the lead capture fires when the visitor submits info, and the AI tool fires if the AI needs data during the same chat. Solution: use idempotent endpoints that handle duplicate calls gracefully, or use upsert logic in your receiving system. 'Variables are empty in the payload' โ€” Double-check your variable names against the Payload Reference guide. Variables are case-sensitive and must use the exact format: {{lead.email}}, not {{Lead.Email}} or {{lead_email}}. Also verify the data actually exists โ€” for example, {{lead.phone}} will be empty if the visitor didn't provide a phone number. 'Zapier webhook stopped working' โ€” First check if the Zap is paused in your Zapier dashboard โ€” Zapier automatically pauses Zaps that haven't triggered in a while or if there are repeated errors. Also verify the webhook URL hasn't changed (Zapier generates a new URL if you recreate the trigger).

Frequently Asked Questions

Works in test but not on real leads

Check trigger settings โ€” Lead Capture trigger might be disabled or urgency filter too strict.

Getting duplicate calls

Both Lead Capture and AI-Callable are enabled โ€” use idempotent endpoints or upsert logic.

Variables are empty in the payload

Double-check variable names against the Payload Reference โ€” they're case-sensitive.

Zapier webhook stopped working

The Zap might be paused โ€” check the Zap status in your Zapier dashboard.
6

Getting help

Before contacting support, follow this debugging checklist to gather the information you need. Step 1: Check the health dashboard โ€” look at success rates and error trends over the last 24 hours and 7 days to understand the scope of the problem. Step 2: Review the execution logs โ€” find the specific failed execution and note the timestamp, status code, trigger type, and response body. Step 3: Check the error breakdown โ€” identify which error category your failure falls into and try the suggested fix. Step 4: If the issue persists after following the suggestions, contact support with three pieces of information: your webhook ID (found in the webhook settings), the error status code and response body from a recent failed execution, and the timestamp of the failure. This gives our support team everything they need to investigate quickly. You can reach support through the help menu in your dashboard or by emailing support@chattlebot.com.

Debugging Checklist

Check health dashboard

Look for error patterns and success rates

Review execution logs

Find the specific failed execution and its details

Check error breakdown

Identify the error category and follow the suggestion

4

Contact support

Share webhook ID and error details with our team

When contacting support, include your webhook ID, the error status code, and a timestamp of the failed execution for fastest resolution.

Execution log showing retry attempts

๐Ÿ’กPro Tip

  • Keep your webhook configurations documented โ€” when you set up a new webhook, note the URL, authentication type, trigger settings, and any custom payload modifications. This makes troubleshooting much faster when issues arise weeks or months later.

Related Guides

Ready to get started?

Create your free account and start building your chatbot today.

Start Free Trial