- Message delivery webhooks: Configure using the
callback_urlparameter of your send request to receive delivery updates - Subscription management webhooks: Configure through your subscription management config (managed by our Customer Success team) to receive subscription events (STOP, START, HELP)
Message delivery events
The event object
The unique identifier of the event.
The type of the event, possible values are:
| Type | Description |
|---|---|
transactional.message.created | The message was sent successfully |
transactional.message.pending_delivery | The message is pending delivery |
transactional.message.delivered | Delivery succeeded |
transactional.message.failed | Delivery failed, see status and reason. |
transactional.message.unknown | Unknown delivery, see status and reason. |
The payload of the event, whose structure depends on the event type.
The timestamp of the event creation.
How to set up your Webhook
To start receiving webhook events in your app, create and register a webhook endpoint by following the steps below. You can register and create one endpoint to handle several different event types at once, or set up individual endpoints for specific events.1
Implement the handler
Develop a webhook endpoint function to receive event data POST requests.
2
Pass the URL
Add your webhook endpoint URL to your Notify API requests to start
receiving message delivery events.
3
Return OK
Return a
200 OK HTTP response to the POST request to acknowledge receipt
of the event. If you don’t, Prelude will retry sending the event with
exponential backoff for up to 2 weeks. Retries are spaced progressively
further apart (1 min, 2 min, 4 min, … up to 12 hours) to allow your
endpoint time to recover if it’s temporarily down.Delivery statuses
Failed delivery statuses come with astatus field which can have two values: failed or expired.
An additional reason provides more information about the failure. Some of these may be retriable — Prelude will automatically retry delivery until we reach the expiry window defined in the expires_at field of the Send Message request.
Here are the possible reason values:
| Reason | Code | Description | Retriable |
|---|---|---|---|
| Unavailable Recipient | unavailable | The recipient is unavailable due to a temporary problem (e.g. no cell network). | |
| Generic Reason | generic | No detailed information has been received from the underlying carrier. | |
| Network Issue | network | The recipient’s carrier network is temporary unreachable. | |
| Unknown Recipient | unknown_recipient | The number is not associated with an active line. | |
| Insufficient Balance | insufficient_balance | Your balance is insufficient to make an attempt. | |
| Carrier Rejected | carrier_rejected | The recipient’s mobile carrier blocked the message (e.g. lack of registration, invalid content or local traffic restrictions). | |
| Unknown | unknown | The delivery status cannot be determined due to unspecified issues or lack of detailed information from the carrier or network. |
IP whitelisting
You should whitelist the following IP addresses to ensure that your webhook endpoint receives events from Prelude:Subscription management events
When users interact with your messages by sending subscription keywords (STOP, START, or HELP), Prelude will send webhook events to the callback URL configured in your subscription management config.
Subscription event object
The unique identifier of the event.
The type of subscription event:
| Type | Description |
|---|---|
marketing.subscription.stop | User opted out by sending STOP keyword |
marketing.subscription.start | User opted back in by sending START keyword |
marketing.subscription.help | User requested help by sending HELP keyword |
The subscription action keyword sent by the user. Possible values:
STOP, START, HELP.The phone number that sent the subscription keyword (E.164 format).
The destination phone number (your short code or long code).
The timestamp when the subscription keyword was received.
The timestamp of the event creation.
Example subscription webhooks
Handling subscription events
When you receive a subscription event:- STOP: The user has been automatically unsubscribed. Subsequent API calls for this phone number will return an error.
- START: The user has been resubscribed and can receive marketing messages again.
- HELP: The user requested information. A default help message is automatically sent, but you may want to log this event.