Support & Troubleshooting

Troubleshooting

Real-time webhook debugging for developers. Fast fixes for common integration errors.

HTTP & Payload Errors

Error Codes

WebhookWatch captures and categorizes every failed delivery. Below are the most frequent status codes and payload rejections encountered during Shopify, Stripe, and GitHub integration testing.

⚠️

Connection Refused (ERR_CONNECTION_REFUSED)

Your local tunnel or staging server is not accepting inbound TCP connections on port 443. Verify that ngrok or localtunnel is actively forwarding traffic and that your firewall isn't blocking inbound HTTPS requests.

GET /webhooks/checkout-events HTTP/1.1
Host: 203.0.113.45:443
[TIMEOUT] Connection reset by peer
📦

Invalid JSON (400 Bad Request)

The payload contains malformed syntax, often caused by unescaped quotes in metadata fields or trailing commas in nested objects. WebhookWatch highlights the exact character offset where parsing fails.

{"order_id": "ORD-8842", "items": [{"sku": "WIDGET-A"},]
^ SyntaxError: Unexpected token ] in JSON at position 48
⏱️

Gateway Timeout (504)

Your endpoint exceeded the 10-second processing window. This typically happens when synchronous database writes or heavy image processing block the response thread. Switch to async queue processing.

POST /api/v2/webhook-handler HTTP/1.1
Content-Type: application/json
504 Gateway Time-out (nginx)
Debugging Workflows

Common Issues

When payloads drop or responses stall, follow these verified resolution paths used by our Amsterdam and Rotterdam engineering teams.

🔄

Retry Loop Exhaustion

Stripe and Shopify retry failed webhooks up to 4 times over 24 hours. If your server returns a 5xx, the queue will eventually discard the event. Return a 200 OK immediately, then process the payload asynchronously via RabbitMQ or AWS SQS.

🔍

Signature Verification Failures

Mismatched HMAC-SHA256 hashes usually stem from URL encoding differences between the provider and your parser. Ensure you are comparing the raw request body, not a parsed string, against the x-webhook-signature header.

📉

Payload Size Limits

Endpoints rejecting bodies over 1MB often hit Nginx client_max_body_size defaults. WebhookWatch caps test payloads at 512KB by default. Adjust your web server configuration or enable chunked transfer encoding for large media attachments.

98.4% Uptime SLA
<12ms Avg. Parse Time
24/7 Log Retention
Need More Help?

Contact Support

Our infrastructure team handles complex routing failures, custom TLS certificate issues, and enterprise webhook scaling requests.

Submit a ticket through our dashboard at app.webhookwatch.dev/support. Include your endpoint URL, the exact HTTP status code, and a sanitized payload sample. Priority tickets for Business and Enterprise plans receive a response within 2 hours during CET business hours.

For urgent production outages affecting more than 500 events per hour, email ops@webhookwatch.dev with your account ID. Do not include sensitive customer PII or raw payment tokens in support threads.