Webhook delivery is configured per account in the dashboard under Settings > Webhooks. Contact support if you need to set up webhook endpoints.
Event Types
| Event | Trigger | Description |
|---|---|---|
delivery | Message delivered or failed | Delivery status update from SMS provider |
unsubscribe | Contact replies STOP | Contact opted out of messages |
reply | Contact sends inbound SMS | Inbound reply from a contact |
Delivery Event
Sent when a message delivery status is updated by the SMS provider.Delivery Statuses
| Status | Description |
|---|---|
delivered | Message delivered to recipient’s handset |
undeliverable | Message could not be delivered |
expired | Message expired before delivery |
rejected | Message rejected by carrier |
pending | Message is being processed |
Delivery Failure Codes
Whenstatus is undeliverable or rejected, the status_detail field contains the provider-specific error:
| Detail | Description | Action Taken |
|---|---|---|
REJECTED_SPAM | Flagged as spam | Contact auto-removed |
REJECTED_DESTINATION | Invalid destination | Contact auto-removed |
REJECTED_ABSENT_SUBSCRIBER | Recipient not available | Retry threshold check |
REJECTED_OPERATOR | Rejected by carrier | Retry threshold check |
Unsubscribe Event
Sent when a contact replies with an opt-out keyword (STOP, STOPALL, UNSUBSCRIBE, QUIT, CANCEL).active: false) on the corresponding list. Future sends are blocked automatically.
Reply Event
Sent when a contact sends an inbound SMS that is not an opt-out keyword. Replies are also stored and viewable in the dashboard under Messages > Replies.Webhook Delivery
Request Format
Events are delivered as HTTP POST requests with a JSON body:Retry Policy
If your endpoint returns a non-2xx status code, Trackly will retry up to 5 times with exponential backoff:| Attempt | Delay |
|---|---|
| 1st retry | 1 minute |
| 2nd retry | 5 minutes |
| 3rd retry | 15 minutes |
| 4th retry | 1 hour |
| 5th retry | 2 hours |
The retry policy and HMAC-SHA256 signature apply to the partnerships webhook system (outbound event delivery). Raw provider webhook forwarding (DLR/reply forwarding to user-configured URLs via list settings) is fire-and-forget with no retries and no signature header.
Signature Verification
Each webhook request includes anX-Trackly-Signature header for verifying authenticity. The signature is an HMAC-SHA256 hash of the request body using your webhook secret.
Best Practices
Respond quickly
Respond quickly
Return a 200 status within 5 seconds. Process events asynchronously if needed.
Handle duplicates
Handle duplicates
Events may be delivered more than once. Use
message_id + event as an idempotency key.Verify signatures
Verify signatures
Always verify the
X-Trackly-Signature header to ensure events are from Trackly.Next Steps
Webhooks Integration
Configure webhook endpoints
Send Message
Send a message to trigger events