Receiving SMS replies
When you send from a Short Code, customers can text it back. Each reply comes to your webhook as a message.received event, and shows in the app's Inbox.
You need
- A Short Code:
1234in the sandbox, or your own in live. Sender IDs can't receive replies. See Sender IDs and Short Codes. - A public
httpsURL on your server for the webhook.
Set up a webhook
Choose one, or both:
| Team webhook | Sender webhook | |
|---|---|---|
| Receives | Replies to all your team's numbers, and any other events you pick | Replies to one Short Code, and its messages' statuses |
| Set it up under | Settings › Developers › Webhooks, with the message.received event | SMS › Short Codes, then the Short Code's Webhook |
A sender webhook suits a Short Code whose replies go to a system of their own, such as a helpdesk. In the sandbox, use a team webhook: 1234 is shared, so it has no sender webhook.
To check your endpoint, choose Send Test Event on a team webhook. A sender webhook gets a test event when you save it, and is saved only if your endpoint answers 2xx. See Receiving webhooks.
Send from the Short Code
Send as usual, with your Short Code as the sender:
{
"sender": "1234",
"channel": "SMS",
"recipient": "+231880000100",
"externalId": "delivery-confirm-88",
"text": "Your order 88 is ready. Reply YES to confirm delivery tomorrow."
}
Receive the reply
When the customer replies, Ponitor posts the reply to your webhook:
{
"id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
"type": "message.received",
"createdAt": "2026-10-05T09:40:00.000Z",
"teamId": "7c9e6679-7425-40de-944b-e07fc1f90ae7",
"data": {
"id": "550e8400-e29b-41d4-a716-446655440000",
"channel": "SMS",
"direction": "INBOUND",
"sender": "+231880000100",
"recipient": "1234",
"status": "DELIVERED",
"failedReason": null,
"externalId": null,
"workspace": null,
"text": "YES",
"content": "YES",
"contact": { "id": null, "name": null, "whatsapp": null },
"replyTo": null,
"createdAt": "2026-10-05T09:40:00.000Z"
}
}
senderis the customer, andrecipientis your Short Code.contactis your saved contact for the customer's number, ornullfields if you haven't saved them.- A sender webhook's event also has
conversationId, the same for every message between you and this customer on this Short Code. - Answer
2xxas soon as you've stored it. If you don't, Ponitor tries again. Skip an event whoseidyou've seen.
The event reference lists every field.
Answer it
Send an SMS back from the same Short Code, to the customer's number:
{
"sender": "1234",
"channel": "SMS",
"recipient": "+231880000100",
"externalId": "delivery-confirm-88-thanks",
"text": "Thanks. We'll deliver tomorrow between 9 and 12."
}
Or answer from the app's Inbox, where the conversation shows with every reply.
Try it in the sandbox
- Send from
1234to the Simulator's number,+231880000100. - Open Simulator, then its Messages app, and open the conversation with
1234. - Type a reply and send it.
The reply reaches your Inbox and your team webhook within a few seconds, as a real one would.
What replies cost
Replies from customers aren't charged. Your answers are charged as any SMS you send.