Send and track
SMS supports multiple submission and delivery options to align with your business use case.
By default, SMS delivers simple text messages up to 160 characters (70 with Unicode) attributed to your sender name. When you exceed character limits, messages are split into parts and reassembled on the recipient's device.
Flash SMS [#flash-sms]
Flash SMS is a message that appears directly on the mobile screen without being saved to the inbox. Use it to catch immediate attention with alerts:
- Emergency alerts
- Weather notifications
- Traffic updates
- Time-sensitive warnings
Flash SMS is ideal when you need immediate visibility and do not require message archiving.
Single message to multiple recipients [#single-message-multiple-recipients]
You can send the same message to multiple destinations within one request. This delivery mode is suitable for announcements, service notifications, and time-sensitive alerts sent to a defined group. Messages sent in this way are grouped under a bulk identifier, which simplifies delivery tracking and reporting. Each recipient still receives an individually tracked message, with its own status and unique message identifier.
For more information, see Send SMS messages. This endpoint supports bulk messaging to many recipients in a single request.
Multiple personalized messages in one request [#multiple-personalized-messages]
You can send different messages to different recipients within a single submission. This delivery mode supports personalized promotions, targeted campaigns, and customer-specific notifications. Each message is processed and tracked individually, while still benefiting from grouped submission and consolidated reporting. This approach enables scalable personalization without requiring separate API calls per recipient.
For more information, see Send SMS messages. This endpoint supports submitting multiple message objects in one request, allowing you to send different message content to different recipients while maintaining individual tracking and delivery reporting.
Query-based submission [#query-based-submission]
For environments with limited integration capabilities, SMS messages can be submitted using a query-based format. This delivery mode encodes message data directly in the request URL, requires minimal integration effort, and supports dynamic value replacement through application-level placeholders. This option provides flexibility for simpler systems or legacy environments while maintaining access to delivery tracking and status reporting.
For more information, see Send SMS messages over query parameters.
SMPP [#smpp]
SMS can be sent using the Short Message Peer-to-Peer (SMPP) protocol, an industry-standard protocol designed for high-throughput messaging over persistent TCP connections.
Use SMPP when:
- You need very high message throughput that exceeds typical HTTP API limits
- You are integrating with an existing Short Message Service Center (SMSC)
- Your platform requires a persistent, low-latency connection rather than HTTP-based requests
SMPP is commonly used by telco operators, aggregators, and enterprises with established messaging infrastructure. Standard web or mobile integrations use the REST API instead.
For more information, see SMPP specification.
URL shortening and tracking [#url-shortening-and-tracking]
When your SMS contains a URL, you can shorten it and track recipient interactions. URL shortening and tracking enables:
- Shorter messages: Long URLs are replaced with compact links, preserving characters for message content
- Click tracking: Monitor which URLs were clicked, how many times, and by whom
- Click reports: Receive click data on your callback server in real time
- Custom domains: Use your own branded domain for shortened URLs
- Protocol removal: Optionally strip
https://to save additional characters (some devices may not recognize links without a protocol)
URL tracking requires shortening to be enabled first. You can configure these features through the API or the web interface.
For detailed setup instructions, see URL shortening and URL tracking.
Delivery reports via webhooks [#delivery-reports-via-webhooks]
Configure a webhook URL to receive delivery reports for your messages. Infobip sends delivery status, GSM error codes, pricing information, and other metadata to your callback server as soon as it is available.
Set up delivery reports [#set-up-delivery-reports-delivery-reports-via-webhooks]
You can set up webhook delivery reports in three ways:
- Per-request: Specify the webhook URL when sending messages
- SMS API v3: Use the
webhooks.deliveryobject withurl,contentType,intermediateReport, andnotifyoptions. See v3 Send SMS message endpoint for details. - SMS API v2 (legacy): Use
notifyUrlandnotifyContentTypeparameters. See v2 Send SMS message endpoint for details. - If no webhook is specified in the request and
notifyis set totrueor not defined, your webhook subscription settings will apply
- SMS API v3: Use the
- Account-level default: Contact support to configure a default delivery report webhook for your account
- Webhook subscriptions: Set up and manage webhooks via the Subscriptions management API or Infobip portal
Webhook payload contents [#webhook-payload-contents-delivery-reports-via-webhooks]
The delivery report webhook includes system-generated fields (delivery status, error details, timing, message identifiers, network codes, and pricing) plus any custom fields you include in your send request. For a complete reference of all system-generated fields and their meanings, see Receive outbound SMS message reports.
Fields in the delivery report webhook:
The webhook contains system-generated fields plus optional fields from your send request. Their behavior differs between API versions.
Always present:
messageId: Unique message identifier for matching and tracking. Always included in the webhook regardless of API version. If you set a custom value in the request, that value is returned in the webhook. If you omit it, Infobip auto-generated ID appears instead.
Behavior differs by API version:
| Field | Description | SMS API v3 | SMS API v2 (legacy) |
|---|---|---|---|
bulkId | Bulk identifier for grouped messages or multiple recipients | Not customizable. Infobip always generates its own and includes it in every webhook. | If you set a custom value, it appears in the webhook. If you omit it, the field is absent from the webhook. |
callbackData | Additional custom data (up to 4000 characters): order IDs, customer references, or any metadata your system needs | If you include it in the request, the same value appears in the webhook. If you omit it, the field is absent from the webhook. | Same as v3. |
campaignReferenceId | Campaign tracking ID for analytics and organization | If you include it in the request, the same value appears in the webhook. If you omit it, the field is absent from the webhook. | Same as v3. |
entityId / applicationId | CPaaS X entity and application identifiers for multi-tenant setups | The platform object is always present in the webhook. If you set values, they are populated. If you omit them, they appear as null. | The platform object is omitted entirely from the webhook if not set in the request. |
Push retry cycle [#push-retry-cycle-delivery-reports-via-webhooks]
If your webhook endpoint is unavailable, Infobip retries according to this formula:
1min + (1min × retryNumber²)
The following table shows the first few retry attempts. The maximum number of retries is 20. The last retry occurs 41:30h after the initial one. If your endpoint is unavailable for the whole retry period, the data is lost.
| Retry | Interval | Cumulative |
|---|---|---|
| 0 | 1 min | 0:01h |
| 1 | 2 min | 0:03h |
| 2 | 5 min | 0:08h |
| 3 | 10 min | 0:18h |
| 4 | 17 min | 0:35h |
| 5 | 26 min | 1:01h |
| 6 | 37 min | 1:38h |
Polling as an alternative [#polling-as-alternative-delivery-reports-via-webhooks]
If you prefer polling over webhooks or do not have a public endpoint, you can poll for delivery reports. Call the Get outbound SMS message delivery reports endpoint on your schedule. Each call returns new reports from the last 48 hours.
Schedule SMS [#schedule-sms]
Scheduling enables you to define when an SMS message is delivered instead of sending it immediately. This feature supports:
- Time-based campaigns
- Reminders and notifications
- Announcements
- Regulatory compliance scenarios where delivery timing matters
Scheduling options [#scheduling-options-schedule-sms]
- SMS API: Define a future delivery time as part of your outbound SMS request. See the step-by-step tutorial Schedule an SMS using Infobip API.
- Infobip MCP server: Send and schedule SMS messages using AI prompts. See the step-by-step tutorial Send SMS using an Infobip MCP server and an AI client.
- Answers: Schedule outbound SMS as part of chatbot flows and automated interactions.
- Broadcast: Campaign-based scheduling through the web interface.
When to schedule [#when-to-schedule-schedule-sms]
- Time zone-based delivery: Send at optimal times per recipient's location
- Campaign timing: Coordinate message delivery with marketing campaigns
- Compliance: Meet regulatory requirements for delivery windows
- User preference: Respect recipient's preferred contact times
- Load balancing: Distribute delivery load over time
Conversion tracking [#conversion-tracking]
Conversion tracking is a data-sharing mechanism where you report which SMS messages actually converted (recipient entered OTP code, confirmed action, completed desired behavior, and so on).
You enable tracking on outbound messages and call an API endpoint to report conversions. Infobip uses this conversion data as additional signal to monitor route quality and identify delivery problems across the network. If poor performance is detected on routes or traffic patterns you use, Infobip can optimize them. You may see improved delivery as a result, but only if your routes were underperforming.
The data exchange is minimal and GDPR compliant: only the message ID is shared.
How it works:
Enable tracking
When sending SMS, set useConversionTracking: true and define conversionTrackingName (for example, "ONE_TIME_PIN") in the conversionTracking object. See Send SMS message for full parameter details.
Message is delivered
Recipient receives the SMS.
User acts
Recipient enters code or completes desired action.
Report conversion
When conversion happens, call POST /ct/1/log/end/messageId with the message ID. See Confirm conversion for full implementation details.
Routes improve
Infobip uses this data to optimize delivery paths for your traffic type.
API versions:
- SMS API v3: Uses
conversionTrackingobject. See v3 Send SMS message for details. - SMS API v2 (legacy): Uses
trackingobject. See v2 Send SMS message for details.
Communication options
Understand one-way and two-way SMS.
Multilingual SMS
Character encoding, NLI, and transliteration.
Reports and insights
Track delivery status and analyze performance.