How to configure the SMPP Scheduled Delivery Time Field
What is the Scheduled Delivery Time Field?
The Scheduled Delivery Time field in SMPP (Short Message Peer-to-Peer Protocol) is an optional parameter in the submit_sm
PDU
that allows a message to be queued for delivery at a future date and time. This field is critical for:
- Delaying message delivery to off-peak hours
- Scheduling time-sensitive campaigns (e.g., birthday messages)
- Coordinating messages across time zones
Field Format and Structure
The SMPP v3.4 specification defines this field as a C-Octet String
(null-terminated) with a specific date-time format:
YYMMDDhhmmssnnp
Where:
Component | Description | Range |
---|---|---|
YY | Last two digits of the year | 00-99 |
MM | Month | 01-12 |
DD | Day | 01-31 |
hh | Hour (24h format) | 00-23 |
mm | Minute | 00-59 |
ss | Second | 00-59 |
nn | Tenths of seconds (optional) | 00-99 |
p | Time zone offset (e.g., +, -) | +/- followed by 4 digits (HHMM) |
-
NULL
(immediate delivery)-
000000000000000
(immediate delivery, legacy systems)
Example Time Strings
Time String | Interpretation |
---|---|
231015143000000+ |
Oct 15, 2023 14:30:00 UTC+0 |
231015143000000-0800 |
Oct 15, 2023 14:30:00 UTC-08:00 |
000000000000000 |
Immediate delivery (legacy) |
NULL |
Immediate delivery (recommended) |
Use Cases
1. Birthday Messages
Schedule a message to deliver exactly at midnight on the recipient’s birthday:
scheduled_delivery_time: "231016000000000+" // Oct 16, 2023 00:00:00 UTC+0
2. Off-Peak Delivery
Avoid network congestion by sending bulk messages at night:
scheduled_delivery_time: "231015020000000+" // Oct 15, 2023 02:00:00 UTC+0
3. Time Zone Coordination
Deliver messages at 9 AM local time for recipients in New York (UTC-5):
scheduled_delivery_time: "231015090000000-0500" // Oct 15, 2023 09:00:00 UTC-05:00
Example SMPP PDUs
Example 1: Immediate Delivery (NULL)
0000001D // Command Length (29 bytes) 00000004 // Command ID (SubmitSM) 00000001 // Sequence Number 00 // Source TON 00 // Source NPI 736F7572636500 // Source Address ("source") 00 // Dest TON 00 // Dest NPI 36353433323100 // Destination Address ("654321") 00 // ESM Class 00 // Protocol ID 00 // Priority Flag 00 // Schedule Delivery Time (NULL: immediate) 00 // Validity Period 00 // Registered Delivery 00 // Replace-if-Present 00 // Data Coding (DCS=0x00) 00 // SM Default Message ID 07 // SM Length (7 septets) C8329BFD06DDDF72 // Payload ("Hello!")
Example 2: Future Delivery (Oct 15, 2023 14:30 UTC)
0000002A // Command Length (42 bytes) 00000004 // Command ID (SubmitSM) 00000002 // Sequence Number 00 // Source TON 00 // Source NPI 736F7572636500 // Source Address ("source") 00 // Dest TON 00 // Dest NPI 36353433323100 // Destination Address ("654321") 00 // ESM Class 00 // Protocol ID 00 // Priority Flag 3233313031353134333030303030302B00 // "231015143000000+" (16 bytes + null) 00 // Validity Period 00 // Registered Delivery 00 // Replace-if-Present 00 // Data Coding (DCS=0x00) 00 // SM Default Message ID 07 // SM Length (7 septets) C8329BFD06DDDF72 // Payload ("Hello!")
Interactions with Other Fields
- validity_period: Defines how long the SMSC will attempt delivery. Starts counting from the scheduled time.
- priority_flag: Higher-priority messages may bypass scheduling queues on some SMSCs.
Common Pitfalls
- Using local time without specifying the time zone offset.
- Incorrectly formatting the date string (e.g., invalid month "13").
- Assuming all SMSCs support scheduled delivery (verify with provider).
- Setting a time in the past, causing immediate delivery.
Some SMSCs ignore fractional seconds (
nn
) or restrict how far in advance messages can be scheduled (e.g., 7 days max).
Conclusion
The Scheduled Delivery Time field enables precise control over when SMS messages are delivered. Proper use requires careful formatting of time strings and coordination with SMSC capabilities. Always test scheduled messages with your provider and refer to the SMPP v3.4 specification for edge cases (e.g., leap years, time zone transitions).
More information
- How to configure the SMPP Service Type field
- How to configure the SMPP Phone Number fields
- How to configure the SMPP ESM Class field
- How to configure the SMPP PID field
- How to configure the SMPP Prioirity field
- How to configure the SMPP Scheduled Time field
- How to configure the SMPP Validity Period field
- How to configure the SMPP Registered Delivery field
- How to configure the SMPP Replace if Present field
- How to configure the sm_default_msg_id field
- How to configure the SMPP DCS field
- How to calculate the SMPP SM Length field
- How to put data into the SMPP SM field