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)
Note: Values 0x04-0x0F are reserved. Most SMSCs ignore these bits.

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)
Regulatory Note:
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.

More information