Netherlands SMS Best Practices, Compliance, and Features
Netherlands SMS Market Overview
Locale name: | Netherlands |
---|---|
ISO code: | NL |
Region | Europe |
Mobile country code (MCC) | 204 |
Dialing Code | +31 |
Market Conditions: The Netherlands has a highly developed mobile market with near-universal smartphone penetration. While OTT messaging apps like WhatsApp are extremely popular for P2P communications, SMS remains critical for business messaging, particularly for authentication, notifications, and marketing. The market is dominated by three major operators: KPN, VodafoneZiggo, and T-Mobile Netherlands, with a strong infrastructure supporting both consumer and A2P messaging needs.
Key SMS Features and Capabilities in Netherlands
The Netherlands offers comprehensive SMS capabilities including two-way messaging, concatenation support, and number portability, while maintaining strict compliance requirements for business messaging.
Two-way SMS Support
Two-way SMS is fully supported in the Netherlands, allowing businesses to engage in interactive messaging with customers. No special restrictions apply beyond standard compliance requirements, making it ideal for customer service and engagement use cases.
Concatenated Messages (Segmented SMS)
Support: Yes, concatenation is fully supported across all major carriers.
Message length rules: Standard 160 characters for GSM-7 encoding, 70 characters for UCS-2 encoding before splitting occurs.
Encoding considerations: GSM-7 is supported for standard Latin characters, while UCS-2 is available for messages containing special characters or non-Latin alphabets.
MMS Support
MMS messages are automatically converted to SMS with an embedded URL link to the media content. This ensures reliable delivery while maintaining the ability to share rich media content with recipients.
Recipient Phone Number Compatibility
Number Portability
Number portability is fully available in the Netherlands, allowing users to keep their phone numbers when switching carriers. This feature is well-established and doesn't significantly impact message delivery or routing.
Sending SMS to Landlines
Sending SMS to landline numbers is not supported in the Netherlands. 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 Netherlands
The Netherlands operates under both GDPR and the Dutch Telecommunications Act, overseen by the Authority for Consumers & Markets (ACM). Businesses must comply with strict regulations regarding data privacy, consent management, and marketing communications.
Consent and Opt-In
Explicit Consent Requirements:
- Written or digital confirmation of opt-in is mandatory before sending marketing messages
- Consent must be freely given, specific, and informed
- Double opt-in is recommended for marketing campaigns
- Records of consent must be maintained and easily accessible
- Purpose of messaging must be clearly stated during opt-in process
HELP/STOP and Other Commands
- Must support both Dutch and English keywords:
- STOP/STOPPEN for opt-out
- HELP/HULP for assistance
- INFO for additional information
- Commands must be processed within 24 hours
- Confirmation messages should be sent in the same language as the received command
Do Not Call / Do Not Disturb Registries
- The Netherlands maintains the "Bel-me-niet Register" (Do Not Call Registry)
- Regular synchronization with the registry is mandatory
- Businesses must:
- Check numbers against the registry before campaigns
- Update suppression lists at least every 30 days
- Honor opt-out requests within 24 hours
- Maintain internal do-not-contact lists
Time Zone Sensitivity
- Permitted sending hours: 08:00-21:00 CET
- Emergency notifications exempt from time restrictions
- Consider Dutch holidays and weekends
- Implement automated delivery windows in messaging systems
Phone Numbers Options and SMS Sender Types for in Netherlands
Alphanumeric Sender ID
Operator network capability: Fully supported
Registration requirements: No pre-registration required, dynamic usage allowed
Sender ID preservation: Yes, sender IDs are preserved across all major networks
Long Codes
Domestic vs. International: Both supported with full functionality
Sender ID preservation: Yes, original sender ID maintained
Provisioning time: Immediate to 24 hours
Use cases:
- Transactional messaging
- Two-factor authentication
- Customer service communications
- Marketing (with consent)
Short Codes
Support: Not currently supported in the Netherlands
Provisioning time: N/A
Use cases: N/A - Use long codes or alphanumeric sender IDs instead
Restricted SMS Content, Industries, and Use Cases
Restricted Industries and Content:
- Gambling (unless licensed by Dutch authorities)
- Adult content or services
- Unauthorized financial services
- Prescription medications
- Political messaging without proper disclosures
Content Filtering
Carrier Filtering Rules:
- Links must be from approved domains
- No excessive capitalization
- No misleading sender information
- Maximum of 5 consecutive messages to same recipient
Best Practices to Avoid Blocking:
- Use consistent sender IDs
- Maintain regular sending patterns
- Avoid URL shorteners
- Include clear opt-out instructions
- Keep content professional and relevant
Best Practices for Sending SMS in Netherlands
Messaging Strategy
- Keep messages under 160 characters when possible
- Include clear call-to-action
- Personalize using recipient's first name
- Maintain consistent brand voice
- Use tracking links for analytics
Sending Frequency and Timing
- Maximum 4-5 messages per month per recipient
- Respect quiet hours (21:00-08:00 CET)
- Avoid sending during major holidays
- Space campaigns at least 48 hours apart
Localization
- Primary language options: Dutch and English
- Consider bilingual messages for important communications
- Use proper date formats (DD-MM-YYYY)
- Account for cultural nuances and preferences
Opt-Out Management
- Process opt-outs in real-time
- Send confirmation of opt-out
- Maintain centralized suppression list
- Regular audit of opt-out processes
- Document opt-out dates and methods
Testing and Monitoring
- Test across KPN, VodafoneZiggo, and T-Mobile
- Monitor delivery rates by carrier
- Track engagement metrics
- Regular A/B testing of message content
- Maintain quality score above industry benchmarks
SMS API integrations for Netherlands
Twilio
Twilio provides robust SMS capabilities for the Netherlands through their REST API. Authentication uses account SID and auth token, with support for +3197 prefix numbers required for A2P messaging.
import { Twilio } from 'twilio';
// Initialize client with environment variables
const client = new Twilio(
process.env.TWILIO_ACCOUNT_SID,
process.env.TWILIO_AUTH_TOKEN
);
// Function to send SMS to Netherlands
async function sendDutchSMS(
to: string,
message: string,
from: string
): Promise<void> {
try {
// Validate Dutch phone number format
if (!to.startsWith('+31')) {
throw new Error('Invalid Dutch phone number format');
}
const response = await client.messages.create({
body: message,
to: to, // Must be in E.164 format: +31612345678
from: from, // Your +3197 prefix number
});
console.log(`Message sent successfully: ${response.sid}`);
} catch (error) {
console.error('Error sending message:', error);
throw error;
}
}
Sinch
Sinch offers comprehensive SMS services with RESTful API access. Their service supports both transactional and marketing messages in the Netherlands.
import axios from 'axios';
class SinchSMSClient {
private readonly baseUrl: string;
private readonly apiToken: string;
constructor(serviceId: string, apiToken: string) {
this.baseUrl = `https://sms.api.sinch.com/xms/v1/${serviceId}`;
this.apiToken = apiToken;
}
async sendSMS(to: string, message: string): Promise<void> {
try {
const response = await axios.post(
`${this.baseUrl}/batches`,
{
from: 'YourBrand', // Alphanumeric sender ID
to: [to],
body: message,
},
{
headers: {
'Authorization': `Bearer ${this.apiToken}`,
'Content-Type': 'application/json',
},
}
);
console.log('Message sent:', response.data.id);
} catch (error) {
console.error('Sinch SMS error:', error);
throw error;
}
}
}
MessageBird
MessageBird (formerly referred to as Bird) provides SMS API services with strong support for Dutch telecommunications requirements.
import messagebird from 'messagebird';
class MessageBirdClient {
private client: any;
constructor(apiKey: string) {
this.client = messagebird(apiKey);
}
sendSMS(
recipient: string,
message: string,
originator: string
): Promise<void> {
return new Promise((resolve, reject) => {
this.client.messages.create({
originator: originator,
recipients: [recipient],
body: message,
datacoding: 'auto', // Automatic encoding detection
}, (err: any, response: any) => {
if (err) {
reject(err);
} else {
resolve(response);
}
});
});
}
}
API Rate Limits and Throughput
- Twilio: 250 messages per second
- Sinch: 100 messages per second
- MessageBird: 60 messages per second
Throughput Management Strategies:
- Implement exponential backoff for retries
- Use queue systems (Redis/RabbitMQ) for high volume
- Batch messages when possible
- Monitor rate limit headers
Error Handling and Reporting
interface SMSError {
code: string;
message: string;
timestamp: Date;
recipient: string;
}
class SMSErrorHandler {
private errors: SMSError[] = [];
logError(error: SMSError): void {
this.errors.push(error);
console.error(`SMS Error [${error.code}]: ${error.message}`);
// Implement specific error handling based on code
switch(error.code) {
case 'invalid_number':
// Clean up invalid numbers from database
break;
case 'rate_limit_exceeded':
// Implement backoff strategy
break;
case 'delivery_failed':
// Queue for retry
break;
}
}
}
Recap and Additional Resources
Key Takeaways
-
Compliance First
- Always obtain explicit consent
- Honor opt-out requests within 24 hours
- Maintain proper documentation
-
Technical Requirements
- Use +3197 prefix numbers for A2P messaging
- Implement proper error handling
- Monitor delivery rates
-
Best Practices
- Send during business hours (08:00-21:00 CET)
- Localize content (Dutch/English)
- Regular testing across carriers
Next Steps
- Review the Dutch Telecommunications Act
- Implement proper consent management
- Set up monitoring and reporting
- Test across all major carriers