How to configure the SMPP Priority field
What is the Priority Field?
The Priority Flag in SMPP (Short Message Peer-to-Peer Protocol) is a 1-byte field in SMPP PDUs like submit_sm and deliver_sm.
It indicates the urgency of a message, influencing how SMSCs (Short Message Service Centers) handle queuing, delivery retries, and routing.
Key use cases include:
- Prioritizing emergency alerts over promotional SMS
- Optimizing network resource allocation
- Meeting SLA requirements for high-priority messages
Priority Field Values and Interpretation
Defined in SMPP v3.4, the priority flag uses a 4-bit value (though only values 0-3 are typically used):
| Priority (Hex) | Decimal | Description |
|---|---|---|
| 0x00 | 0 | Lowest priority (bulk messages) |
| 0x01 | 1 | Normal priority (standard SMS) |
| 0x02 | 2 | Interactive priority (time-sensitive) |
| 0x03 | 3 | Highest priority (emergency alerts) |
How Priority Affects Message Handling
1. Queuing Behavior
High-priority messages jump ahead in SMSC queues. Example:
Priority 3: Delivered before Priority 0 messages
2. Delivery Retries
Higher priorities may get more retry attempts. Example SMSC policy:
Priority 3: 5 retries over 24 hours
Priority 0: 2 retries over 2 hours
3. Network Routing
Some SMSCs route high-priority messages through dedicated channels.
Example SMPP PDUs
Example 1: Bulk SMS (Priority=0x00)
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 (PID)
00 // Priority Flag (0x00: Lowest)
00 // Schedule Delivery Time
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: Emergency Alert (Priority=0x03)
0000001D // Command Length (29 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 (PID)
03 // Priority Flag (0x03: Highest)
00 // Schedule Delivery Time
FF // Validity Period (max)
01 // Registered Delivery (receipt)
00 // Replace-if-Present
00 // Data Coding (DCS=0x00)
00 // SM Default Message ID
0A // SM Length (10 septets)
E8329BFD0E... // Payload ("ALERT: Flood!")
Interactions with Other Fields
- ESM Class Priority Bits: Bits 3-2 of the ESM Class may override this field on some SMSCs.
- validity_period: High-priority messages often have shorter validity (e.g., 1 hour vs 3 days).
- registered_delivery: Priority 3 messages frequently require delivery receipts.
Common Pitfalls
- Assuming all SMSCs honor priority levels (verify with provider)
- Confusing SMPP Priority with GSM
TP-Status-Report-Indication - Setting Priority=3 for non-emergency content (may violate regulations)
- Mismatching Priority and validity_period (e.g., Priority=3 with validity=7 days)
Some countries restrict Priority=3 usage to authorized entities (e.g., government alerts).
Priority vs ESM Class Priority Bits
| Field | Bits | Priority Levels | Typical Usage |
|---|---|---|---|
| SMPP Priority Flag | Entire octet | 0-3 | End-to-end priority |
| ESM Class (bits 3-2) | 2 bits | 00=Normal, 01=Interactive, 10=Urgent, 11=Emergency | Network-level prioritization |
Conclusion
The Priority field is crucial for managing SMS delivery urgency but requires careful coordination with SMSC capabilities and regulations. Always test priority behavior with your provider and align settings with local telecom guidelines. For detailed implementations, refer to SMPP v3.4 Section 5.2.12 and GSM 03.40 documentation.