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)
Special Values:
- 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.
SMSC Behavior Note:
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