sms compliance
sms compliance
Netherlands SMS Compliance Guide 2024: GDPR, ACM Regulations & Best Practices
Complete Netherlands SMS compliance guide for 2024. Learn GDPR consent requirements, ACM regulations, Bel-me-niet updates, phone formats, and best practices for KPN, Odido, VodafoneZiggo networks.
Netherlands SMS Best Practices, Compliance, and Features
Send compliant SMS messages in the Netherlands by following GDPR regulations, Dutch Telecommunications Act requirements, and ACM (Authority for Consumers & Markets) guidelines. This comprehensive guide covers mandatory opt-in consent requirements effective since July 2021, E.164 phone number formatting standards, carrier-specific requirements for KPN, Odido (formerly T-Mobile Netherlands), and VodafoneZiggo networks, and best practices for A2P messaging compliance. Learn about the discontinued Bel-me-niet Register, alphanumeric sender ID specifications, SMS API integration examples, and how to avoid €900,000 ACM fines through proper consent management and regulatory compliance.
Why Netherlands SMS compliance matters: Non-compliance with Dutch telecommunications regulations can result in substantial ACM fines up to €900,000 per violation. Beyond financial penalties, violations damage brand reputation and customer trust. This guide helps businesses navigate GDPR consent requirements, implement proper opt-in mechanisms, and maintain regulatory compliance while effectively reaching Dutch consumers through SMS marketing and transactional messaging.
Netherlands SMS Market Overview
| Locale name: | Netherlands |
|---|---|
| ISO code: | NL |
| Region | Europe |
| Mobile country code (MCC) | 204 |
| Dialing Code | +31 |
Netherlands Phone Number Format (E.164 Standard)
Mobile Number Structure:
- Domestic format: 06 followed by 8 digits (06 XXXX XXXX)
- International format (E.164): +31 6 followed by 8 digits (+31 6 XXXX XXXX)
- Common mobile prefixes: 061, 062, 063, 064, 065, 066, 067, 068, 069
- Format for APIs: Use E.164 format (+316XXXXXXXX) without spaces or special characters
Examples:
- Valid domestic: 06 1234 5678
- Valid international: +31 6 1234 5678
- API format: +31612345678
Important: When formatting for international SMS APIs, omit the leading "0" and use the country code +31 prefix.
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 served by three major operators: KPN (30-35% market share), Odido (formerly T-Mobile Netherlands, 30-35% market share), and VodafoneZiggo (20-25% market share), with Mobile Virtual Network Operators (MVNOs) holding 10-15% of connections. This infrastructure supports robust consumer and A2P messaging capabilities (source: Netherlands Authority for Consumers and Markets, Q2 2024).
Key SMS Features and Capabilities in Netherlands
Use these comprehensive SMS capabilities in the Netherlands: two-way messaging, concatenation support, and number portability. Comply with strict business messaging requirements.
Two-way SMS Support
Engage in interactive messaging with your customers using fully supported two-way SMS in the Netherlands. No special restrictions apply beyond standard compliance requirements – ideal for customer service and engagement use cases.
Concatenated Messages (Segmented SMS)
Support: Yes, all major carriers support concatenation. Message length rules: 160 characters for GSM-7 encoding, 70 characters for UCS-2 encoding before splitting. Encoding considerations: Use GSM-7 for standard Latin characters. Switch to UCS-2 for messages with special characters or non-Latin alphabets.
MMS Support
Send MMS messages through automatic conversion to SMS with an embedded URL link to your media content. This ensures reliable delivery while letting you share rich media with recipients.
Recipient Phone Number Compatibility
Number Portability
Take advantage of full number portability in the Netherlands – users keep their phone numbers when switching carriers. This well-established feature doesn't significantly impact your message delivery or routing.
Sending SMS to Landlines
Avoid sending SMS to landline numbers – not supported in the Netherlands. Messages to landlines result in delivery failure with a 400 response and error code 21614. These messages won't appear in your logs and won't incur charges.
Netherlands SMS Compliance: GDPR and Telecommunications Act Requirements
Comply with both GDPR and the Dutch Telecommunications Act, overseen by the Authority for Consumers & Markets (ACM). Follow strict regulations for data privacy, consent management, and marketing communications.
SMS Consent Requirements in Netherlands (GDPR & Dutch Law)
Explicit Consent Requirements (Dutch Telecommunications Act Article 11.7 & GDPR):
- Mandatory for SMS Marketing: Obtain written or digital opt-in confirmation before sending marketing messages (effective July 1, 2021)
- Valid Consent Standards: Ensure consent is freely given, specific, informed, and unambiguous per GDPR requirements
- Clear Affirmative Action Required: Avoid pre-ticked boxes – they don't constitute valid consent. Require active opt-in (e.g., ticking a box, clicking a button)
- Double Opt-In Recommended: Implement double opt-in for your marketing campaigns to ensure valid consent
- Record Keeping: Maintain records of all consent and keep them easily accessible for regulatory compliance
- Purpose Transparency: Clearly state the purpose of messaging during your opt-in process
- Soft Opt-In Exception: Contact existing customers with offers for equivalent products without new consent, but provide easy opt-out options
Enforcement: The Authority for Consumers & Markets (ACM) can impose fines up to €900,000 per violation for non-compliance with consent requirements.
HELP/STOP and Other Commands
Support both Dutch and English keywords:
- STOP/STOPPEN for opt-out
- HELP/HULP for assistance
- INFO for additional information
Process these commands within 24 hours. Send confirmation messages in the same language as the received command.
Bel-me-niet Register Update: Netherlands Do Not Call Registry
- Important Update (Effective July 1, 2021): The Netherlands discontinued the "Bel-me-niet Register" (Do Not Call Registry) and replaced it with a mandatory opt-in system
- Current Regulations: Avoid cold calling and unsolicited SMS marketing – banned without prior explicit consent under the amended Telecommunications Act
- Opt-In Requirement: Only contact consumers (including sole proprietors, general partnerships, and professional partnerships) after they give explicit permission in advance
- Compliance Obligations:
- Obtain explicit consent before sending any marketing communications
- Maintain records of all consent obtained
- Honor opt-out requests within 24 hours
- Maintain internal do-not-contact lists
- No registry checking required – all outreach requires prior consent
SMS Sending Hours and Time Restrictions
Send marketing SMS messages during permitted hours: 08:00–21:00 CET/CEST (Central European Time). Emergency notifications and transactional messages are exempt from time restrictions. Consider Dutch national holidays and weekends when planning campaigns. Implement automated delivery windows in your messaging systems to ensure compliance.
SMS Sender ID Options and Phone Numbers in Netherlands
Alphanumeric Sender ID in Netherlands
Operator network capability: Fully supported across KPN, Odido, and VodafoneZiggo Registration requirements: No pre-registration required, dynamic usage allowed Character specifications: 3-11 characters (a-z, A-Z, 0-9, and single space allowed) Message direction: One-way messaging only – recipients cannot reply directly to alphanumeric sender IDs Sender ID preservation: Yes, sender IDs are preserved across all major networks Best practices:
- Use recognizable brand names for better engagement and deliverability
- Maintain consistency across SMS campaigns
- Maximum 11 characters to ensure full display on all devices
Long Codes for SMS in Netherlands
Domestic vs. International: Both supported with full functionality Sender ID preservation: Yes, original sender ID maintained Provisioning time: Immediate to 24 hours Common use cases:
- Transactional SMS messaging
- Two-factor authentication (2FA) and OTP verification
- Customer service communications and support
- SMS marketing campaigns (with explicit GDPR consent)
Short Codes for SMS
Support: Short codes are not currently supported in the Netherlands Provisioning time: N/A Alternative solutions: Use long codes or alphanumeric sender IDs for SMS campaigns instead
Netherlands SMS Content Restrictions and Industry Regulations
Restricted Industries and Content: Avoid these restricted industries and content types:
- 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: Ensure your messages meet these requirements:
- Use links from approved domains only
- Avoid excessive capitalization
- Never use misleading sender information
- Send maximum 5 consecutive messages to the same recipient
Best Practices to Avoid Blocking:
- Use consistent sender IDs across campaigns
- Maintain regular sending patterns
- Avoid URL shorteners
- Include clear opt-out instructions in every message
- Keep content professional and relevant
Best Practices for SMS Marketing in Netherlands
SMS Messaging Strategy for Netherlands
Optimize your SMS campaigns for engagement and compliance:
- Keep messages under 160 characters when possible to avoid segmentation
- Include clear call-to-action (CTA) with purpose
- Personalize using recipient's first name when appropriate
- Maintain consistent brand voice aligned with opt-in expectations
- Use tracking links for analytics and campaign performance measurement
Sending Frequency and Timing
Control your message frequency:
- Send 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
Adapt content for Dutch audiences:
- Offer 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 efficiently:
- Process opt-outs in real-time
- Send confirmation of opt-out immediately
- Maintain centralized suppression list
- Conduct regular audits of opt-out processes
- Document opt-out dates and methods
Testing and Monitoring
Test thoroughly across carriers:
- Test across KPN, Odido (formerly T-Mobile), and VodafoneZiggo
- Monitor delivery rates by carrier
- Track engagement metrics
- Run regular A/B testing of message content
- Maintain quality score above industry benchmarks
SMS API Integration for Netherlands: Twilio, Sinch & MessageBird
Twilio
Send SMS to Netherlands using Twilio's robust REST API. Authenticate with your account SID and auth token. Use +3197 prefix numbers 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
Access comprehensive SMS services through Sinch's RESTful API. Send 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
Integrate SMS capabilities using MessageBird (formerly referred to as Bird) 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
Manage your message throughput within these limits:
- 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
- Obtain explicit consent before sending any SMS
- Honor opt-out requests within 24 hours
- Maintain proper documentation of all consent
-
Technical Requirements
- Format phone numbers in E.164 (+316XXXXXXXX)
- Use +3197 prefix numbers for A2P messaging
- Implement proper error handling
- Monitor delivery rates across carriers
-
Best Practices
- Send during business hours (08:00–21:00 CET)
- Localize content for Dutch and English audiences
- Test regularly across KPN, Odido, and VodafoneZiggo
Next Steps
Follow these steps to start sending SMS in the Netherlands:
- Review the Dutch Telecommunications Act and GDPR requirements
- Implement proper consent management system
- Set up monitoring and reporting infrastructure
- Test your integration across all major carriers
- Configure automated delivery windows for permitted hours
Additional Resources
Access official guidelines and regulations:
Frequently Asked Questions
What are the Netherlands SMS compliance requirements?
The Netherlands operates under GDPR and the Dutch Telecommunications Act, overseen by the Authority for Consumers & Markets (ACM). Businesses must obtain explicit consent for marketing messages, honor opt-out requests within 24 hours, and adhere to strict data privacy regulations. Double opt-in is recommended, and records of consent must be maintained.
How to send SMS messages in the Netherlands?
Several APIs like Twilio, Sinch, and MessageBird offer SMS services in the Netherlands. You'll need an account and to adhere to specific formatting for Dutch phone numbers (+31). Remember to comply with regulations like obtaining consent and respecting quiet hours (21:00-08:00 CET).
What is the process for HELP/STOP commands in Dutch SMS?
Keywords like STOP/STOPPEN, HELP/HULP, and INFO must be supported in both Dutch and English. These commands need to be processed within 24 hours, and confirmation messages should be sent in the language of the received command.
Why does sending SMS to landlines in the Netherlands fail?
SMS to landline numbers isn't supported, resulting in delivery failure and a 400 API response with error code 21614. Such messages won't be logged or charged. The Netherlands has high mobile penetration, making landline SMS impractical.
When should I send marketing SMS messages in the Netherlands?
Permitted sending hours are 08:00-21:00 CET. Emergency notifications are exempt. Avoid sending messages during major Dutch holidays and weekends. Consider using automated delivery windows to respect these times.
What SMS sender types are available in the Netherlands?
Alphanumeric sender IDs and long codes are fully supported. Short codes are not supported; use long codes or alphanumeric sender IDs instead. For A2P messaging, a +3197 prefix number is required.
How to manage SMS opt-outs in the Netherlands?
Process opt-outs immediately and send confirmation messages. Maintain a centralized suppression list and regularly audit opt-out processes. Be sure to document opt-out dates and methods for compliance.
What is the character limit for SMS messages in the Netherlands?
The standard limit is 160 characters for GSM-7 encoding and 70 for UCS-2, which handles special characters. Concatenation is supported for longer messages, splitting them into segments.
Can I use short codes for SMS in the Netherlands?
No, short codes are not currently supported. Utilize long codes or alphanumeric sender IDs for your messaging needs in the Netherlands.
What are the best practices for SMS marketing in the Netherlands?
Keep messages concise, include a clear call to action, personalize when possible, and maintain a consistent brand voice. Track engagement metrics and conduct A/B testing to optimize your messaging strategy.
How to handle SMS API rate limits in the Netherlands?
Implement strategies like exponential backoff for retries, use queue systems for high volume, batch messages, and monitor rate limit headers provided by the API.
What are some restricted content categories for SMS in the Netherlands?
Gambling (unless licensed), adult content, unauthorized financial services, prescription medications, and political messaging without proper disclosures are restricted.
How to avoid SMS content filtering in the Netherlands?
Use consistent sender IDs, avoid URL shorteners, include clear opt-out instructions, and maintain regular sending patterns. Keep content professional and relevant to the recipient.