Webhook Delivery Problems
Symptom: Webhook not receiving events
- Confirm the correct event types are selected (Order Status Change, Order Item Status Change, Order Item Delivered, QR Code Scans).
- Confirm the endpoint URL is publicly accessible - webhooks cannot reach
localhostor internal network addresses. - Use the Send Test feature to send a test event to your endpoint.
- Confirm the webhook is registered on the correct account/subaccount - events from a subaccount only fire that subaccount's webhooks, not the parent's.
Symptom: Receiving duplicate events
thanks.io delivers at-least-once. Return a 2xx response as quickly as possible, and make your consumer idempotent - store the event ID and skip processing if you've already handled it.
Symptom: Payload missing expected fields
- Review the full payload structure for each event type at docs.thanks.io.
- Log the raw incoming payload and compare to the documented schema.
- Use the Send Test dashboard feature to capture a sample payload.
Symptom: Endpoint returning 4xx/5xx and events not retrying
- Fix the underlying error in your endpoint. Check your server logs.
400 Bad Requestusually means a parser mismatch - verify your endpoint parsesapplication/json.401/403means your endpoint is enforcing auth - remove it for the webhook path.- Once your endpoint is healthy, send a test event to confirm delivery is restored.
Symptom: Wrong account events being received
Webhooks are scoped per account/subaccount. To receive events from both parent and subaccounts at the same endpoint, create a separate webhook subscription in each account context pointing to the same URL.
Symptom: Birthday or thank-you campaign webhook not firing
- Confirm the campaign is enabled and actively sending. Go to Automated Campaigns and check that the Status column shows the automation as ON.
- Confirm the correct webhook event type is subscribed: Order Item Status Change (fires on each piece sent) or Order Item Delivered (fires on delivery). Birthday/holiday campaigns create orders just like any other campaign, so the same webhook events fire.
- Confirm the webhook is registered on the same account or subaccount as the campaign. Subaccount webhooks do not fire on the parent account's webhook subscriptions.
- Check your webhook endpoint with Send Test to confirm delivery is working end to end.
- If the campaign has never fired at all, check Campaign Not Triggering first.