Sending SMS messages to Estonia requires understanding local telecommunications regulations, GDPR compliance requirements, and carrier-specific guidelines. This comprehensive guide covers everything you need to know about SMS messaging in Estonia, including regulatory compliance with TTJA (Estonian Consumer Protection and Technical Regulatory Authority), consent requirements, sender ID options, and API integration best practices.
Estonia SMS Market Overview
Locale name:
Estonia
ISO code:
EE
Region
Europe
Mobile country code (MCC)
248
Dialing Code
+372
Market Conditions: Estonia has a highly developed mobile market with 93.7% internet penetration and near-universal smartphone access. The country's major mobile operators include Telia Estonia (MNC 01), Elisa (MNC 02), and Tele2 (MNC 03). While OTT messaging apps like WhatsApp and Facebook Messenger are popular, SMS remains crucial for business communications – particularly for authentication, notifications, and marketing.
Estonian Phone Number Format: Estonian mobile numbers follow the international E.164 format standard for proper SMS delivery:
Country code: +372
Mobile number length: 7 or 8 digits (most modern numbers are 8 digits)
Format: +372 5XXX XXXX or +372 8XXX XXXX
No trunk prefix or area codes required
Mobile prefixes typically begin with 5 or 8
SMS Features and Technical Capabilities for Estonia
Estonia offers comprehensive SMS capabilities including two-way messaging, concatenated messages, and number portability.
Two-way SMS Support
Estonia fully supports two-way SMS communications with no restrictions. This enables interactive messaging campaigns and customer service applications. All major carriers (Telia, Elisa, Tele2) support bidirectional messaging with standard delivery receipts and status notifications.
Concatenated Messages (Segmented SMS)
Support: Fully supported across all major carriers.
Message length rules: Standard SMS allows 160 characters (GSM-7) or 70 characters (UCS-2) before splitting. Messages exceeding these limits are automatically segmented into multiple parts.
Cost implications: Each segment is billed as a separate SMS. Concatenated messages include a 6–7 byte header (User Data Header) that reduces the available character count per segment to 153 characters (GSM-7) or 67 characters (UCS-2).
Encoding considerations: Use GSM-7 encoding for standard Latin characters, and UCS-2 encoding for Estonian special characters (ä, ö, õ, ü).
MMS Support
MMS messages are automatically converted to SMS with an embedded URL link to the media content. This ensures compatibility across all devices while maintaining the ability to share rich media content. Links typically expire after 30 days. Recipients without data connectivity will see the URL but cannot access content.
Recipient Phone Number Compatibility
Number Portability
Number portability is available in Estonia, allowing users to keep their phone numbers when switching carriers. According to TTJA official guidelines, the porting process takes:
3–25 working days for mobile numbers (typically 3–6 working days)
3–39 working days for landline numbers
SMS routing is not affected by number portability because the system automatically updates routing information through the Number Reservation Database (NBA).
Sending SMS to Landlines
Sending SMS to landline numbers is not supported in Estonia. Attempts to send SMS to landline numbers will result in delivery failure, and the API will return error code 21614 with a 400 response.
SMS Compliance Requirements and GDPR Regulations in Estonia
Enforcement and Penalties: Under the Personal Data Protection Act, the Estonian Data Protection Inspectorate (DPI) may impose fines up to €20,000,000 or 4% of total worldwide annual turnover (whichever is higher) for GDPR violations. Non-compliance levies may also be imposed for failure to comply with DPI precepts.
Obtaining SMS Consent and Managing Opt-In Requirements
Explicit Consent Requirements:
Obtain written or electronic consent before sending marketing messages. Under Estonian law, digital consent is valid when obtained through:
Checkbox separate from contract terms (pre-checked boxes are invalid)
Electronic signature or authenticated digital consent
Documented affirmative action (button click, form submission)
Store consent records for a minimum of 3 years
Document timestamp, source of consent, and scope of permission
Pre-checked boxes are not considered valid consent under GDPR
Best Practices for Consent:
Implement double opt-in verification
Clearly state the purpose and frequency of messages
Provide easy access to terms and privacy policy
Maintain detailed consent logs with IP addresses and timestamps
HELP/STOP and Other Commands
Required Keywords:
Primary: STOP, LÕPETA (Estonian)
Alternative: EI, TÜHISTA (Estonian)
HELP/ABI for assistance
Language Requirements:
Support both Estonian and English commands
Include opt-out instructions in Estonian for local compliance
Process opt-out requests within 24 hours
Send automated confirmation upon successful opt-out
Do Not Call / Do Not Disturb Registries
Estonia does not maintain a centralized Do Not Call registry. However, you must:
Maintain your own suppression lists
Honor opt-out requests immediately
Keep records of opted-out numbers for at least 2 years
Implement proper filtering systems to prevent messaging to opted-out numbers
Integrate suppression lists into sending workflows to prevent accidental violations
Time Zone Sensitivity
Time Restrictions:
Send commercial messages between 8:00 and 20:00 EET/EEST
Exceptions for emergency notifications and essential service messages
Observe Estonian public holidays
Consider weekend messaging restrictions for marketing content
Time Zone Details:
Estonia uses Eastern European Time (EET, UTC+2) in winter
Eastern European Summer Time (EEST, UTC+3) in summer
Registration requirements: No pre-registration required, dynamic usage allowed
Sender ID preservation: Your sender IDs are preserved as specified
Character limit: Up to 11 characters, Latin alphabet only
Validation rules: Alphanumeric sender IDs must contain at least one letter. Avoid generic terms that may appear as spam (e.g., "INFO", "ALERT"). While no official prohibited terms list exists, carriers may filter messages containing suspicious patterns.
Long Codes
Domestic vs. International: Both supported
Sender ID preservation: Original sender ID is preserved
Provisioning time: Immediate for both domestic and international
Use cases:
Two-way communication
Customer support
Transactional messages
Marketing campaigns
Throughput: Domestic long codes typically support 1–3 messages per second; international long codes may have higher limits
Short Codes
Support: Not currently supported in Estonia
Alternative: Use long codes or alphanumeric sender IDs for marketing campaigns
Prohibited Content and Industry Restrictions for SMS Marketing
Explicit consent: Freely given, specific, informed, and unambiguous consent that can be withdrawn at any time
Legitimate basis: Processing must meet one of Article 9(2) exemptions (e.g., explicit consent, vital interests, healthcare provision)
Security measures: Avoid sending detailed medical information via SMS; use secure channels for sensitive health data
Minimal data: Only transmit appointment reminders, general notifications, or non-sensitive health information
Content Filtering
Carrier Filtering Rules:
URLs from unknown domains may be blocked
Messages containing certain keywords may be filtered (e.g., "free", "win", "click now", excessive capitalization)
High-volume sending patterns may trigger spam filters
Repeated identical messages to multiple recipients may be flagged
Best Practices to Avoid Blocking:
Use registered URL shorteners (e.g., bit.ly, Rebrandly) or branded domains
Avoid excessive punctuation (!!!, ???) and all-caps text
Maintain consistent sending patterns without sudden volume spikes
Keep message content clear and professional
Include clear sender identification and opt-out instructions
SMS Marketing Best Practices and Optimization Strategies
Messaging Strategy
Keep messages under 160 characters when possible
Include clear call-to-action
Personalize using recipient's name or relevant details
Maintain consistent brand voice
Sending Frequency and Timing
Limit to 2–4 messages per month per recipient
Respect time zone restrictions (8:00–20:00 EET/EEST)
Avoid sending during major holidays
Space out bulk campaigns to prevent network congestion
Localization
Primary language: Estonian
Consider bilingual messages (Estonian/English). Estonian translations typically use 10–15% more characters than English equivalents due to compound words and grammatical structure
Use proper character encoding for Estonian letters (ä, ö, õ, ü). These require UCS-2 encoding, reducing message capacity to 70 characters
Respect cultural sensitivities and local customs
Consider professional translation services for marketing content
Opt-Out Management
Process opt-outs within 24 hours
Send confirmation message after opt-out
Maintain clean suppression lists
Audit your opt-out database regularly
Testing and Monitoring
Key Performance Indicators (KPIs):
Delivery rate: Target >95% for transactional messages, >90% for marketing
Response rate: Benchmark 10–15% for promotional campaigns
Opt-out rate: Acceptable threshold <2% per campaign
Bounce rate: Target <3%
Monitoring Best Practices:
Test across all major Estonian carriers (Telia, Elisa, Tele2)
Monitor delivery rates by carrier
Track engagement metrics
Test opt-out functionality regularly
Monitor for carrier filtering changes
Set up alerts for delivery rate drops below 85%
Troubleshooting Steps:
Verify number format (E.164: +372XXXXXXXX)
Check sender ID validity
Review message content for filtering triggers
Confirm recipient has not opted out
Test with multiple carriers
Review API error codes and responses
SMS API Integration: Twilio, Sinch, MessageBird & Plivo
Twilio
Twilio provides a robust SMS API with comprehensive Estonia support. Authenticate using account SID and auth token credentials.
TypeScript
import * asTwiliofrom'twilio';
// Initialize Twilio client with credentialsconst client = newTwilio(
process.env.TWILIO_ACCOUNT_SID, // Your Account SID
process.env.TWILIO_AUTH_TOKEN// Your Auth Token
);
// Function to send SMS to EstoniaasyncfunctionsendEstoniaSMS(to: string,
message: string,
senderId: string) {
try {
// Format Estonian number to E.164 formatconst formattedNumber = to.startsWith('+372') ? to : `+372${to}`;
// Send message with error handlingconst response = await client.messages.create({
body: message,
from: senderId, // Alphanumeric or phone numberto: formattedNumber,
// Optional parameters for delivery trackingstatusCallback: 'https://your-webhook.com/status'
});
console.log(`Message sent! SID: ${response.sid}`);
return response;
} catch (error) {
console.error('Error sending message:', error);
throw error;
}
}
Sinch
Sinch offers direct carrier connections in Estonia with support for high-volume messaging.
Plivo offers competitive SMS solutions for the Estonian market.
TypeScript
import * as plivo from'plivo';
// Initialize Plivo clientconst plivoClient = new plivo.Client(
process.env.PLIVO_AUTH_ID,
process.env.PLIVO_AUTH_TOKEN
);
// Function to send SMS with retry logicasyncfunctionsendEstoniaRetrySMS(to: string,
message: string,
maxRetries: number = 3) {
let attempts = 0;
while (attempts < maxRetries) {
try {
const response = await plivoClient.messages.create({
src: 'YourBrand', // Sender IDdst: to, // Destination numbertext: message,
// Optional parametersurl: 'https://your-webhook.com/status',
method: 'POST'
});
console.log(`Message sent! ID: ${response.messageUuid}`);
return response;
} catch (error) {
attempts++;
if (attempts === maxRetries) {
thrownewError(`Failed after ${maxRetries} attempts: ${error}`);
}
// Wait before retry (exponential backoff)awaitnewPromise(r =>setTimeout(r, 1000 * Math.pow(2, attempts)));
}
}
}
API Rate Limits and Throughput
Default rate limit: 100 messages per second (varies by provider and account tier)
Burst capacity: Up to 1000 messages per minute
Daily sending quota: Based on account level (contact provider for enterprise limits)
Account Tiers: Most providers offer tiered pricing with different throughput limits. Contact your provider to upgrade limits or request dedicated infrastructure for high-volume campaigns.
Strategies for High Volume:
Implement queuing system for large batches (e.g., Redis, RabbitMQ, AWS SQS)
Use exponential backoff for retries (start with 1s, double on each retry)
Batch messages in groups of 50–100
Monitor throughput metrics and adjust sending rate dynamically
Consider multiple provider accounts for load distribution
Error Handling and Reporting
Common Error Codes and Resolutions:
Error Code
Description
Resolution
21211
Invalid 'To' Phone Number
Verify E.164 format (+372XXXXXXXX)
21408
Permission to send SMS not enabled
Enable SMS capability in account settings
21610
Message blocked by carrier
Review content for spam triggers
21614
Invalid mobile number
Confirm number is mobile, not landline
30001
Queue overflow
Implement rate limiting
30003
Unreachable destination
Verify number is active
30004
Message blocked
Check sender ID registration
30005
Unknown destination handset
Verify recipient number validity
Monitoring and Alerts:
Implement comprehensive logging with structured data (timestamp, recipient, status, error codes)
Monitor delivery receipts and track delivery success rates by carrier
Track common error codes and categorize by severity
Set up automated alerts for failures exceeding 5% of volume
Maintain error rate thresholds and escalation procedures for >10% failure rates
Recap and Additional Resources
Key Takeaways:
Always format numbers to E.164 (+372XXXXXXXX with 7–8 digit subscriber number)
Implement proper error handling and retries with exponential backoff
Monitor delivery rates by carrier (target >95% for transactional)
Follow Estonian time restrictions (8:00–20:00 EET/EEST) and respect public holidays
Maintain proper consent records for minimum 3 years with detailed logs
Estonia supports various SMS sending methods, including long codes and alphanumeric sender IDs. You can use APIs like Twilio, Sinch, MessageBird, and Plivo, ensuring numbers are in E.164 format (+372) and adhering to local regulations.
Standard SMS messages in Estonia allow 160 characters using GSM-7 encoding or 70 characters with UCS-2 encoding. Longer messages are automatically segmented into multiple parts, known as concatenated SMS.
Estonia follows GDPR and local regulations by the TTJA, requiring explicit consent for marketing messages, honoring STOP/LÕPETA commands, and respecting messaging time restrictions (8:00-20:00 EET/EEST).
Obtain explicit written or electronic consent, documenting the timestamp, source, and scope of permission. Double opt-in and clear opt-out instructions in Estonian and English are recommended best practices.
While short codes are not supported, businesses can use long codes or alphanumeric sender IDs for marketing campaigns and other SMS applications.
Adult content is prohibited, while gambling, cryptocurrency promotions, and financial services require special permissions or regulatory disclaimers. Healthcare messages must comply with GDPR health data rules.
No, sending SMS to landline numbers in Estonia is not supported and will result in delivery failure with error code 21614.
Commercial SMS messages are allowed between 8:00 and 20:00 EET/EEST, excluding public holidays. Consider weekend restrictions and avoid high-volume sending during peak hours.
Process opt-out requests (STOP, LÕPETA, EI, TÜHISTA) within 24 hours, send confirmation messages, and maintain suppression lists for at least two years. Regularly audit opt-out databases.
Keep messages concise, personalize content, localize to Estonian, respect time restrictions, and ensure compliance with data protection laws. Thorough testing and monitoring are also crucial.
Two-way SMS allows for interactive communication. It is fully supported in Estonia with no specific restrictions, enabling features like customer service interactions and interactive campaigns.
Alphanumeric sender IDs are fully supported without pre-registration and allow up to 11 Latin alphabet characters. Sender IDs are preserved as specified, allowing for brand recognition.
Number portability is available and doesn't affect SMS delivery; the system automatically updates routing information.
MMS messages in Estonia are automatically converted to SMS with a URL link to the media content, ensuring compatibility with all devices.
Sending SMS messages to Estonia requires understanding local telecommunications regulations, GDPR compliance requirements, and carrier-specific guidelines. This comprehensive guide covers everything you need to know about SMS messaging in Estonia, including regulatory compliance with TTJA (Estonian Consumer Protection and Technical Regulatory Authority), consent requirements, sender ID options, and API integration best practices.
Estonia SMS Market Overview
Market Conditions: Estonia has a highly developed mobile market with 93.7% internet penetration and near-universal smartphone access. The country's major mobile operators include Telia Estonia (MNC 01), Elisa (MNC 02), and Tele2 (MNC 03). While OTT messaging apps like WhatsApp and Facebook Messenger are popular, SMS remains crucial for business communications – particularly for authentication, notifications, and marketing.
Estonian Phone Number Format: Estonian mobile numbers follow the international E.164 format standard for proper SMS delivery:
SMS Features and Technical Capabilities for Estonia
Estonia offers comprehensive SMS capabilities including two-way messaging, concatenated messages, and number portability.
Two-way SMS Support
Estonia fully supports two-way SMS communications with no restrictions. This enables interactive messaging campaigns and customer service applications. All major carriers (Telia, Elisa, Tele2) support bidirectional messaging with standard delivery receipts and status notifications.
Concatenated Messages (Segmented SMS)
Support: Fully supported across all major carriers.
Message length rules: Standard SMS allows 160 characters (GSM-7) or 70 characters (UCS-2) before splitting. Messages exceeding these limits are automatically segmented into multiple parts.
Cost implications: Each segment is billed as a separate SMS. Concatenated messages include a 6–7 byte header (User Data Header) that reduces the available character count per segment to 153 characters (GSM-7) or 67 characters (UCS-2).
Encoding considerations: Use GSM-7 encoding for standard Latin characters, and UCS-2 encoding for Estonian special characters (ä, ö, õ, ü).
MMS Support
MMS messages are automatically converted to SMS with an embedded URL link to the media content. This ensures compatibility across all devices while maintaining the ability to share rich media content. Links typically expire after 30 days. Recipients without data connectivity will see the URL but cannot access content.
Recipient Phone Number Compatibility
Number Portability
Number portability is available in Estonia, allowing users to keep their phone numbers when switching carriers. According to TTJA official guidelines, the porting process takes:
SMS routing is not affected by number portability because the system automatically updates routing information through the Number Reservation Database (NBA).
Sending SMS to Landlines
Sending SMS to landline numbers is not supported in Estonia. Attempts to send SMS to landline numbers will result in delivery failure, and the API will return error code 21614 with a 400 response.
SMS Compliance Requirements and GDPR Regulations in Estonia
Estonia follows GDPR requirements and has specific local regulations governed by the Estonian Consumer Protection and Technical Regulatory Authority (TTJA). All SMS communications must comply with both EU and Estonian data protection laws.
Enforcement and Penalties: Under the Personal Data Protection Act, the Estonian Data Protection Inspectorate (DPI) may impose fines up to €20,000,000 or 4% of total worldwide annual turnover (whichever is higher) for GDPR violations. Non-compliance levies may also be imposed for failure to comply with DPI precepts.
Obtaining SMS Consent and Managing Opt-In Requirements
Explicit Consent Requirements:
Best Practices for Consent:
HELP/STOP and Other Commands
Required Keywords:
Language Requirements:
Do Not Call / Do Not Disturb Registries
Estonia does not maintain a centralized Do Not Call registry. However, you must:
Time Zone Sensitivity
Time Restrictions:
Time Zone Details:
Estonian Public Holidays 2025 (official list):
SMS Sender ID Options: Alphanumeric, Long Codes & Short Codes
Alphanumeric Sender ID
Operator network capability: Fully supported across all Estonian networks
Registration requirements: No pre-registration required, dynamic usage allowed
Sender ID preservation: Your sender IDs are preserved as specified
Character limit: Up to 11 characters, Latin alphabet only
Validation rules: Alphanumeric sender IDs must contain at least one letter. Avoid generic terms that may appear as spam (e.g., "INFO", "ALERT"). While no official prohibited terms list exists, carriers may filter messages containing suspicious patterns.
Long Codes
Domestic vs. International: Both supported
Sender ID preservation: Original sender ID is preserved
Provisioning time: Immediate for both domestic and international
Use cases:
Throughput: Domestic long codes typically support 1–3 messages per second; international long codes may have higher limits
Short Codes
Support: Not currently supported in Estonia
Alternative: Use long codes or alphanumeric sender IDs for marketing campaigns
Prohibited Content and Industry Restrictions for SMS Marketing
Restricted Industries:
Content Examples to Avoid:
Healthcare Guidelines: Healthcare data is considered special category data under GDPR Article 9. Processing health data via SMS requires:
Content Filtering
Carrier Filtering Rules:
Best Practices to Avoid Blocking:
SMS Marketing Best Practices and Optimization Strategies
Messaging Strategy
Sending Frequency and Timing
Localization
Opt-Out Management
Testing and Monitoring
Key Performance Indicators (KPIs):
Monitoring Best Practices:
Troubleshooting Steps:
SMS API Integration: Twilio, Sinch, MessageBird & Plivo
Twilio
Twilio provides a robust SMS API with comprehensive Estonia support. Authenticate using account SID and auth token credentials.
import * as Twilio from 'twilio'; // Initialize Twilio client with credentials const client = new Twilio( process.env.TWILIO_ACCOUNT_SID, // Your Account SID process.env.TWILIO_AUTH_TOKEN // Your Auth Token ); // Function to send SMS to Estonia async function sendEstoniaSMS( to: string, message: string, senderId: string ) { try { // Format Estonian number to E.164 format const formattedNumber = to.startsWith('+372') ? to : `+372${to}`; // Send message with error handling const response = await client.messages.create({ body: message, from: senderId, // Alphanumeric or phone number to: formattedNumber, // Optional parameters for delivery tracking statusCallback: 'https://your-webhook.com/status' }); console.log(`Message sent! SID: ${response.sid}`); return response; } catch (error) { console.error('Error sending message:', error); throw error; } }Sinch
Sinch offers direct carrier connections in Estonia with support for high-volume messaging.
import { SinchClient } from '@sinch/sdk-core'; // Initialize Sinch client const sinchClient = new SinchClient({ projectId: process.env.SINCH_PROJECT_ID, apiToken: process.env.SINCH_API_TOKEN }); // Function to send batch SMS to Estonia async function sendEstoniaBatchSMS( recipients: string[], message: string ) { try { // Format all numbers to E.164 const formattedNumbers = recipients.map(num => num.startsWith('+372') ? num : `+372${num}` ); const response = await sinchClient.sms.batches.send({ to: formattedNumbers, from: 'YourBrand', // Alphanumeric sender ID body: message, // Optional delivery report webhook deliveryReport: 'full' }); console.log(`Batch ID: ${response.id}`); return response; } catch (error) { console.error('Batch sending failed:', error); throw error; } }MessageBird
MessageBird provides reliable SMS delivery in Estonia with advanced features.
import * as messagebird from 'messagebird'; // Initialize MessageBird client const mbClient = messagebird(process.env.MESSAGEBIRD_API_KEY); // Function to send SMS with delivery tracking async function sendEstoniaTrackedSMS( recipient: string, message: string, reference: string ) { return new Promise((resolve, reject) => { mbClient.messages.create({ originator: 'CompanyName', recipients: [recipient], body: message, reference: reference, // Custom tracking ID reportUrl: 'https://your-webhook.com/delivery' }, (err, response) => { if (err) { console.error('MessageBird error:', err); reject(err); } else { console.log('Message sent:', response.id); resolve(response); } }); }); }Plivo
Plivo offers competitive SMS solutions for the Estonian market.
import * as plivo from 'plivo'; // Initialize Plivo client const plivoClient = new plivo.Client( process.env.PLIVO_AUTH_ID, process.env.PLIVO_AUTH_TOKEN ); // Function to send SMS with retry logic async function sendEstoniaRetrySMS( to: string, message: string, maxRetries: number = 3 ) { let attempts = 0; while (attempts < maxRetries) { try { const response = await plivoClient.messages.create({ src: 'YourBrand', // Sender ID dst: to, // Destination number text: message, // Optional parameters url: 'https://your-webhook.com/status', method: 'POST' }); console.log(`Message sent! ID: ${response.messageUuid}`); return response; } catch (error) { attempts++; if (attempts === maxRetries) { throw new Error(`Failed after ${maxRetries} attempts: ${error}`); } // Wait before retry (exponential backoff) await new Promise(r => setTimeout(r, 1000 * Math.pow(2, attempts))); } } }API Rate Limits and Throughput
Account Tiers: Most providers offer tiered pricing with different throughput limits. Contact your provider to upgrade limits or request dedicated infrastructure for high-volume campaigns.
Strategies for High Volume:
Error Handling and Reporting
Common Error Codes and Resolutions:
Monitoring and Alerts:
Recap and Additional Resources
Key Takeaways:
Next Steps:
Additional Information:
Technical Resources:
Support Contacts: