Test your webhook integration before deploying to production. Use Xquik’s signed test delivery, local HTTPS tunnels, payload inspectors, and delivery logs to verify handlers before real monitor events arrive.Documentation Index
Fetch the complete documentation index at: https://docs.xquik.com/llms.txt
Use this file to discover all available pages before exploring further.
Test with Xquik first
Use the Test Webhook endpoint after you create a webhook. Xquik sends a realwebhook.test delivery to the configured URL with the same X-Xquik-Signature, X-Xquik-Timestamp, and X-Xquik-Nonce headers used for production monitor events.
webhook.test payloads contain eventType, data.message, and timestamp;
they omit deliveryId and streamEventId, so use them for reachability and
signature checks, not production de-dupe.
webhook.test payload, verify the HMAC before processing it, and return a 2xx response only after your handler accepts the event.
Local testing with ngrok
ngrok creates a public HTTPS tunnel to your local server, letting Xquik deliver webhooks to your development machine.Send a signed test delivery
Trigger a signed Inspect your app logs and the ngrok web inspector at
webhook.test request through the tunnel before waiting for real tweet events:http://localhost:4040.Testing with webhook.site
Use webhook.site to inspect webhook payloads without running a local server.Get a webhook.site URL
Visit webhook.site. A unique HTTPS URL is generated automatically:
webhook.site is useful for inspecting payload structure. For testing signature verification and handler logic, use ngrok with a local server instead.
Sending test payloads
Simulate a webhook delivery to your local handler without calling Xquik. This is useful for unit tests or offline debugging. For end-to-end verification of the configured webhook URL, preferPOST /webhooks/{id}/test.
deliveryId and streamEventId in offline fixtures so receiver idempotency tests match production deliveries. Test all event types by changing the eventType field: tweet.new, tweet.reply, tweet.quote, tweet.retweet.
Debugging delivery failures
Check delivery status
Query the deliveries endpoint to see delivery attempts and error details:Delivery statuses
pending
Queued for the next delivery attempt. Check recent deploys, tunnel uptime,
and receiver availability before forcing a new test.
delivered
Your endpoint returned
2xx. Confirm your handler verified the signature
and stored the event before it returned success.failed
The latest attempt failed and is retrying with backoff. Inspect
lastStatusCode, lastError, and your receiver logs.exhausted
All retry attempts are used, or the receiver returned
410 Gone. Fix the
endpoint, then send a new signed test delivery.Common failure reasons
Slow response
Slow response
We recommend responding within 10 seconds. If your handler is slow, return
200 immediately and process the event asynchronously using a background job queue.Non-2xx response
Non-2xx response
Any response outside the 200-299 range counts as a failure. Check your server logs for unhandled exceptions or validation errors in your handler. Common culprits: missing middleware (e.g.
express.raw()), JSON parse errors, or database connection failures.DNS resolution failure
DNS resolution failure
The webhook URL hostname could not be resolved. Verify your domain DNS records are correct. If using ngrok, confirm the tunnel is still running.
TLS/SSL errors
TLS/SSL errors
Webhook URLs must use HTTPS with a valid certificate. Self-signed certificates are rejected. Use a trusted CA (Let’s Encrypt, Cloudflare) or ngrok for local development.
Connection refused
Connection refused
The target server is not accepting connections. Verify your server is running and listening on the correct port. Check firewall rules if running on a cloud provider.
Signature verification failing
Signature verification failing
Compute the HMAC over the raw request body bytes, not a re-serialized JSON object. Re-serialization can alter whitespace or key ordering. Use
express.raw() in Node.js, request.get_data() in Flask, or io.ReadAll(r.Body) in Go.Webhooks Overview
How webhooks work, delivery format, and retry policy.
Signature Verification
HMAC-SHA256 verification in Node.js, Python, and Go.
Deliveries API
Query delivery attempts and statuses.