Belgium SMS Best Practices, Compliance, and Features
Belgium SMS Market Overview
Locale name: | Belgium |
---|---|
ISO code: | BE |
Region | Europe |
Mobile country code (MCC) | 206 |
Dialing Code | +32 |
Market Conditions: Belgium has a mature mobile market with high SMS adoption rates. The country's three main mobile operators - Proximus, Orange Belgium, and BASE (owned by Telenet) - provide comprehensive coverage across the region. While OTT messaging apps like WhatsApp and Facebook Messenger are popular, SMS remains a crucial channel for business communications, particularly for authentication, notifications, and marketing messages. The market shows a relatively even split between Android and iOS users, with both platforms well-represented in the Belgian market.
Key SMS Features and Capabilities in Belgium
Belgium supports a comprehensive range of SMS features including two-way messaging, concatenated messages, and number portability, making it a robust market for business messaging.
Two-way SMS Support
Two-way SMS is fully supported in Belgium, allowing businesses to engage in interactive messaging with customers. There are no specific restrictions on two-way messaging, making it ideal for customer service and engagement scenarios.
Concatenated Messages (Segmented SMS)
Support: Yes, concatenation is fully supported across Belgian networks.
Message length rules: Standard SMS length of 160 characters for GSM-7 encoding, or 70 characters for Unicode (UCS-2) encoding. Messages exceeding these limits are automatically concatenated.
Encoding considerations: GSM-7 is recommended for standard Latin alphabet messages, while UCS-2 should be used for messages containing special characters or non-Latin alphabets.
MMS Support
MMS messages are automatically converted to SMS with an embedded URL link. This ensures compatibility across all devices while still allowing rich media content to be shared. Best practice is to use short URLs and ensure content is mobile-optimized.
Recipient Phone Number Compatibility
Number Portability
Number portability is fully available in Belgium, allowing users to keep their numbers when switching carriers. This feature doesn't significantly impact message delivery or routing as the system automatically handles carrier identification.
Sending SMS to Landlines
Sending SMS to landline numbers is not supported in Belgium. Attempts to send messages to landline numbers will result in delivery failure, and the API will return a 400 response with error code 21614. These messages won't appear in logs and won't incur charges.
Compliance and Regulatory Guidelines for SMS in Belgium
Belgium follows strict GDPR requirements and telecommunications regulations overseen by the Belgian Institute for Postal Services and Telecommunications (BIPT). All SMS marketing must comply with both Belgian telecommunications law and EU data protection regulations.
Consent and Opt-In
Explicit Consent Requirements:
- Written or digital consent must be obtained before sending marketing messages
- Consent must be freely given, specific, and informed
- Keep detailed records of when and how consent was obtained
- Double opt-in is recommended for marketing campaigns
Best Practices for Consent:
- Use clear, unambiguous language when requesting consent
- Specify the types of messages recipients will receive
- Document consent timestamp, source, and IP address
- Regularly clean and update consent records
HELP/STOP and Other Commands
Required Keywords:
- STOP/ARRÊTER/STOPPEN (multilingual support required)
- AIDE/HELP/HULP
- All keywords must be processed in both uppercase and lowercase
- Commands must be supported in French, Dutch, and English
Language Considerations:
- Support all three official languages (French, Dutch, German)
- Include language preference in opt-in process
- Provide opt-out instructions in the recipient's preferred language
Do Not Call / Do Not Disturb Registries
Belgium maintains the "Ne m'appelez plus/Bel-me-niet-meer" registry for telemarketing, but this primarily applies to voice calls. However, best practices include:
- Maintaining internal suppression lists
- Immediate processing of opt-out requests (within 24 hours)
- Regular database cleaning to remove unsubscribed numbers
- Proactive filtering of known opted-out numbers
Time Zone Sensitivity
Belgium observes Central European Time (CET/CEST). While there are no strict legal time restrictions for SMS:
- Recommended sending window: 08:00 - 20:00 CET
- Avoid sending on: Sundays and national holidays
- Emergency messages: Can be sent 24/7 if truly urgent
- Best practice: Schedule campaigns between 10:00 - 18:00 on business days
Phone Numbers Options and SMS Sender Types for Belgium
Alphanumeric Sender ID
Operator network capability: Supported
Registration requirements: No pre-registration required
Sender ID preservation: Sender IDs are typically overwritten with shortcodes for improved deliverability
Long Codes
Domestic vs. International:
- Domestic: Fully supported
- International: Supported but with potential delivery limitations
Sender ID preservation:
- Domestic: Yes
- International: No, typically overwritten
Provisioning time: 1-3 business days Use cases: Ideal for two-way communication, customer service, and transactional messages
Short Codes
Support: Available through major carriers
Provisioning time: 8-12 weeks for dedicated shortcodes
Use cases:
- High-volume marketing campaigns
- Two-factor authentication
- Customer loyalty programs
- Emergency alerts
Restricted SMS Content, Industries, and Use Cases
Prohibited Content and Industries:
- Gambling and betting services
- Unauthorized financial services
- Adult content
- Cryptocurrency promotions without proper authorization
- Unauthorized pharmaceutical products
Regulated Industries:
- Financial services require regulatory disclaimers
- Healthcare messages must comply with privacy regulations
- Insurance products need clear terms and conditions
Content Filtering
Known Carrier Filtering Rules:
- URLs must be from whitelisted domains
- No URL shorteners allowed
- Maximum of one URL per message
- No excessive capitalization or special characters
Tips to Avoid Blocking:
- Use clear, consistent sender IDs
- Maintain regular sending patterns
- Avoid spam trigger words
- Keep URL count to minimum
- Use approved URL domains only
Best Practices for Sending SMS in Belgium
Messaging Strategy
- Keep messages under 160 characters when possible
- Include clear call-to-action
- Personalize using recipient's name or preferences
- Maintain consistent sending patterns
Sending Frequency and Timing
- Maximum 4-5 marketing messages per month per recipient
- Respect business hours and time zones
- Avoid sending during major holidays
- Space out messages to prevent recipient fatigue
Localization
- Offer content in French, Dutch, and German
- Allow language preference selection
- Use appropriate regional formatting for dates and numbers
- Consider cultural sensitivities and local customs
Opt-Out Management
- Process opt-outs within 24 hours
- Maintain centralized opt-out database
- Include opt-out instructions in every marketing message
- Confirm opt-out with one final message
Testing and Monitoring
- Test across all major Belgian carriers
- Monitor delivery rates by carrier
- Track engagement metrics
- Regular A/B testing of message content
- Monitor and analyze opt-out reasons
SMS API integrations for Belgium
Twilio
Twilio provides a robust SMS API with excellent support for Belgian numbers. Authentication uses account SID and auth token credentials.
Key Parameters:
from
: Your Twilio phone number (must be in E.164 format)to
: Recipient's Belgian number (must start with +32)body
: Message content (supports Unicode)
import { Twilio } from 'twilio';
// Initialize client with environment variables
const client = new Twilio(
process.env.TWILIO_ACCOUNT_SID,
process.env.TWILIO_AUTH_TOKEN
);
async function sendSMSBelgium(
to: string,
message: string
): Promise<void> {
try {
// Send message using Twilio client
const response = await client.messages.create({
body: message,
from: process.env.TWILIO_PHONE_NUMBER, // Your Twilio number
to: `+32${to.replace(/\D/g, '')}` // Format number to E.164
});
console.log(`Message sent successfully! SID: ${response.sid}`);
} catch (error) {
console.error('Error sending message:', error);
throw error;
}
}
Sinch
Sinch offers comprehensive SMS capabilities for Belgium through their REST API. Authentication uses API token and service plan ID.
Key Parameters:
from
: Sender ID or phone numberto
: Array of recipient numbersbody
: Message content
import { SinchClient } from '@sinch/sdk';
class SinchSMSService {
private client: SinchClient;
constructor() {
this.client = new SinchClient({
servicePlanId: process.env.SINCH_SERVICE_PLAN_ID,
apiToken: process.env.SINCH_API_TOKEN,
region: 'europe-west1' // Region for Belgium
});
}
async sendSMS(to: string, message: string): Promise<void> {
try {
const response = await this.client.sms.send({
to: [`+32${to.replace(/\D/g, '')}`],
message,
from: process.env.SINCH_SENDER_ID
});
console.log(`Message sent! Batch ID: ${response.id}`);
} catch (error) {
console.error('Sinch SMS error:', error);
throw error;
}
}
}
MessageBird
MessageBird provides a straightforward API for sending SMS to Belgian numbers. Authentication uses an API key.
Key Parameters:
originator
: Sender ID (alphanumeric or number)recipients
: Array of recipient numberscontent
: Message content
import messagebird from 'messagebird';
class MessageBirdService {
private client: any;
constructor() {
this.client = messagebird(process.env.MESSAGEBIRD_API_KEY);
}
async sendSMS(to: string, message: string): Promise<void> {
return new Promise((resolve, reject) => {
this.client.messages.create({
originator: process.env.MESSAGEBIRD_ORIGINATOR,
recipients: [`+32${to.replace(/\D/g, '')}`],
content: message
}, (err: any, response: any) => {
if (err) {
console.error('MessageBird error:', err);
reject(err);
} else {
console.log('Message sent:', response.id);
resolve();
}
});
});
}
}
Plivo
Plivo offers reliable SMS delivery in Belgium with detailed delivery reporting. Authentication uses auth ID and auth token.
Key Parameters:
src
: Source numberdst
: Destination numbertext
: Message content
import plivo from 'plivo';
class PlivoSMSService {
private client: any;
constructor() {
this.client = new plivo.Client(
process.env.PLIVO_AUTH_ID,
process.env.PLIVO_AUTH_TOKEN
);
}
async sendSMS(to: string, message: string): Promise<void> {
try {
const response = await this.client.messages.create({
src: process.env.PLIVO_SOURCE_NUMBER,
dst: `+32${to.replace(/\D/g, '')}`,
text: message
});
console.log('Message sent:', response.messageUuid);
} catch (error) {
console.error('Plivo error:', error);
throw error;
}
}
}
API Rate Limits and Throughput
Rate Limits:
- Twilio: 250 messages per second
- Sinch: 30 messages per second
- MessageBird: 60 messages per second
- Plivo: 50 messages per second
Throughput Management Strategies:
- Implement queue systems for high-volume sending
- Use batch APIs when available
- Add exponential backoff for retry logic
- Monitor delivery rates and adjust sending speed
Error Handling and Reporting
Best Practices:
- Implement comprehensive error logging
- Monitor delivery receipts (DLRs)
- Set up automated alerts for failure thresholds
- Maintain error logs with message IDs
- Regular analysis of failure patterns
Recap and Additional Resources
Key Takeaways:
- Always format numbers to E.164 standard (+32)
- Implement proper error handling and monitoring
- Respect rate limits and implement queuing for high volume
- Follow GDPR and local regulations
- Support multilingual messages (French, Dutch, German)
Next Steps:
- Review the Belgian Institute for Postal Services and Telecommunications (BIPT) guidelines
- Consult legal counsel for compliance verification
- Set up monitoring and analytics
- Test thoroughly across all major Belgian carriers
Additional Resources:
- BIPT Telecommunications Guidelines
- Belgian Data Protection Authority
- EU GDPR Resources
- Belgian Mobile Operators Association
Industry Best Practices: