Skip to main content
Webhooks apply to the V2 OAuth API only. They are separate from Delivery Receipts (DLRs) and Inbound Messages.
When you send an SMS via the V2 API, Phonovation sends an HTTP POST to your webhook URL for each recipient in the request. If you send to 5 numbers in one API call, you receive 5 webhook payloads — one per mobile number. This gives you an immediate, per-recipient status report on how the message was processed — including any errors.

Setup

Provide your webhook URL to support@phonovation.com and we will configure it against your account. The endpoint must:
  • Accept HTTP POST requests
  • Respond with a 200 OK

Payload

Each payload is a JSON object sent in the POST body.
{
  "Status": "MESSAGE_SUCCESS",
  "FinishedAt": "2026-04-09T14:39:40.69257Z",
  "Message": "Your message has been queued.",
  "NotifyId": "order-001"
}

Fields

FieldTypeDescription
StatusstringProcessing outcome — see Status values below
FinishedAtstringISO 8601 timestamp (UTC) of when processing completed
MessagestringHuman-readable description of the outcome
NotifyIdstringThe notifyId you assigned to this recipient when sending — empty string if not set

Status values

StatusScopeMeaning
MESSAGE_SUCCESSPer recipientMessage accepted and queued for delivery
MESSAGE_ERRORPer recipientMessage could not be processed for this recipient
CAMPAIGN_ERRORPer recipientThe send was rejected before any messages were queued — one payload fires per recipient
CAMPAIGN_ERROR payloads do not include a NotifyId field. The error is campaign-level (e.g. an invalid sender ID), but a payload is still sent for each recipient in the request.

Common Message values

MessageStatusWhat it means
Your message has been queued.MESSAGE_SUCCESSRecipient accepted, message in queue
Sender is not validCAMPAIGN_ERRORThe from value is not a valid or approved sender ID
Error trying to add a new message. No credits availableMESSAGE_ERRORAccount has insufficient SMS credits
null/empty MSISDNMESSAGE_ERRORThe recipient number was blank or missing
Error trying to add a new message to SMSBroadcastMessageMESSAGE_ERRORInternal processing error — contact support if this persists

One payload per recipient

Webhooks fire once for each recipient mobile number in the send request, not once per API call.
Recipients in requestWebhook payloads received
11
55
100100

Tracking recipients with notifyId

Set a notifyId per recipient when sending and it will be echoed back in the NotifyId field of every webhook payload for that recipient. The same value also appears in DLRs and can be used to correlate inbound replies — making it the single identifier that spans your entire send-to-reply flow. If no notifyId is set, the NotifyId field will be an empty string. See notifyId for full details, use cases, and end-to-end flow examples.

Relation to DLRs

Webhooks and DLRs serve different purposes:
WebhookDLR
TriggerAPI message processing completeNetwork delivery confirmed
TimingImmediate, after the API callMinutes to hours after sending
ScopeV2 OAuth API onlyAll send methods
PurposeConfirms message was accepted/rejected by PhonovationConfirms delivery to the handset
Use webhooks to confirm your API call was processed correctly. Use DLRs to confirm the message reached the recipient’s device.
Last modified on April 9, 2026