TXTImpact can forward inbound messages, SMS, MMS, RCS and WhatsApp events to your system using one of the webhook formats below.
When is a webhook fired?
A webhook is triggered when an inbound message is received and a workflow action is configured as Webhook (Forward to URL).
To configure webhook to receive messages, go to WorkFlow -> Inbox Rules -> Add New Rule and provide webhook URL.
The other way to receive reply to a sent message, include ReplyPath in the Send SMS request.
Authentication (X-W2A-Token header)
If you configured a webhook token under Account → VAS Attributes → Webhook Token, TXTImpact echoes it back on every webhook request as an HTTP header:
X-W2A-Token: <your-secret>Your endpoint should reject any request whose X-W2A-Token header does not match your stored copy. Empty/unset = no header sent.
Note: Earlier versions of this webhook passed the token as a w2atoken / w2aToken querystring or form-body parameter. That delivery method is being retired — please migrate your validator to read the X-W2A-Token header.
Common Fields (Concepts)
| Field | Description |
|---|---|
| message | Inbound message text |
| mobileNumber | Sender’s phone number (E.164 digits, e.g. 12129204690) |
| shortCode | Your TXTImpact number that received the message |
| operatorId | Internal operator id (carrier/route identifier) |
| rcvd | Date/time message was received |
| smsInboxId | TXTImpact inbound message ID (string) |
| subscriberName | Subscriber/customer name (if known) |
| attachments + baseUrl/baseURL | Attachment info for inbound media (see notes below) |
Attachment Handling
If an inbound message includes media (MMS), TXTImpact may include:
attachments(list of attachments comma separated; string, optional)baseUrlorbaseURL(string)
Base URL example: https://cloud.wire2air.com/mms/Inbound/
How to build a downloadable URL:
- If
attachmentsis present, combinebaseUrl + attachments. - If
attachmentsis empty, there is no media for that message.
1) V2 Webhook — POST (JSON Body)
Method
POST
Content Type
application/json; charset=utf-8
Sample JSON Body
{
"attachments": "",
"baseURL": "",
"message": "V2 Get",
"mobileNumber": "1212920xxxx",
"operatorId": 470,
"rcvd": "2026-02-10T15:20:28",
"shortCode": "17329641232",
"smsInBoxId": 14121296,
"subject": "",
"subscriberName": "John Doe"
}Note: You may see baseUrl or baseURL depending on the sender/config.
V2 JSON Field Definitions
| JSON Field | Type | Required | Notes |
|---|---|---|---|
| smsInBoxId | string | Yes | Inbound message id |
| operatorId | number/string | No | Internal operator id |
| rcvd | string | No | Receive timestamp (ISO recommended) |
| shortCode | string | Yes | TXTImpact receiving number |
| mobileNumber | string | Yes | Sender number |
| subscriberName | string | No | Subscriber name if available |
| subject | string | No | Optional (MMS) |
| message | string | No | Message text |
| attachments | string | No | Attachment filename(s) or blank |
| baseUrl | string | No | Attachment base path |
Headers & Client IP
During testing (e.g., Pipedream), you may see values like traceparent or client_ip. Those are receiver/environment details and are not guaranteed as part of the TXTImpact payload format.
Recommended Implementation Notes
- Treat all fields as strings and parse defensively.
- Store
smsInboxId/smsInBoxId/MOLOGIDas the unique inbound id for idempotency. - If
attachmentsis present, build the media URL usingbaseUrl + attachments.