SMS Inbox API
Pass incoming customer replies to another business tool without losing track of which messages it has processed.
In the CRM: Settings → Developer APIs → SMS Inbox API
Keep replies in the customer journey
Use SMS Inbox API when an external tool needs the replies sent to your business numbers. For example, a customer answering a consultation reminder can have that reply passed to the system coordinating the booking.
There are two approaches: a callback sends the message details to your web address, while inbox retrieval asks Mango9 for a batch of waiting replies. Agree which integration is responsible for processing them.
Receive replies through a callback
The callback setting is shared at account level. Changing it here replaces the same stored destination used by the SMS callback setting; it is not a separate destination for every developer API page.
- Have your developer prepare an HTTPS address that can receive the incoming message fields.
- Open SMS Inbox API → Incoming SMS Callback.
- Enter the complete address in the callback field. Review any existing integration before replacing it.
- Select Enable Callback URL when ready to save the account’s callback destination.
- Send an agreed test reply to the business number and confirm that the receiving tool processes it once.
Understand the callback fields
| Field | Meaning |
|---|---|
| timestamp | The incoming message time as a Unix timestamp. Convert it to the business’s city-based time zone for display. |
| reply | The incoming message content, URL-encoded. |
| from | The customer’s sending number. |
| to | The business number receiving the reply. |
| deliver_status | The status value supplied with the callback. |
Retrieve a batch when your tool asks for it
The retrieval endpoint is GET /smsapi/inboxapi with key and optional sdate and edate filters in YYYY-MM-DD format. It returns up to 100 waiting replies. Use the account’s server and the saved full API secret.
The current processed-message setting marks returned replies as processed. Opening the retrieval URL with a real key can therefore change what another consumer receives next. Use one coordinated polling process, retain each message ID and avoid using a live inbox request as a harmless connection test.
The response is pipe-delimited text, with HTML line breaks added by the current handler. It is not JSON. Each message contains its ID, sender, receiver, message text and timestamp. Newlines within the message are flattened.
message_id|sender|receiver|message|timestamp
Example fields:
12345|12025550147|12025550148|Yes, that time works.|10-21-2026 09:30:00Store each returned reply before the next poll and use its message ID to prevent duplicate processing. Keep the customer’s full message intact when parsing the separators.
Interpret an empty or rejected response
| Response | Meaning |
|---|---|
| -1|no sms replies found|3 | No waiting replies matched the request. |
| 0|user not allowed|3 | The key did not identify an allowed account. |
| 0|you ip is not whitelisted|3 | The requesting server is not allowed by the account’s API access setting. |
Make replies useful to the team
For appointment marketing, connect the reply to the same contact and booking so the agent can see whether the customer confirmed, asked a question or needs a new time. Review the account time-zone setting so staff and customers see meaningful local times.
Use the Mango9 conversation screens for the team’s ordinary replies. An integration should not start a second automated reply path unless that behavior is intended by the business workflow.