Skip to main content

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: 1234 in the sandbox, or your own in live. Sender IDs can't receive replies. See Sender IDs and Short Codes.
  • A public https URL on your server for the webhook.

Set up a webhook​

Choose one, or both:

Team webhookSender webhook
ReceivesReplies to all your team's numbers, and any other events you pickReplies to one Short Code, and its messages' statuses
Set it up underSettings › Developers › Webhooks, with the message.received eventSMS › 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"
}
}
  • sender is the customer, and recipient is your Short Code.
  • contact is your saved contact for the customer's number, or null fields 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 2xx as soon as you've stored it. If you don't, Ponitor tries again. Skip an event whose id you'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​

  1. Send from 1234 to the Simulator's number, +231880000100.
  2. Open Simulator, then its Messages app, and open the conversation with 1234.
  3. 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.