sms compliance

Sent logo
Sent TeamMay 3, 2025 / sms compliance / Article

Estonia SMS Best Practices, Compliance, and Features

Comprehensive guide to SMS messaging in Estonia covering GDPR compliance, TTJA regulations, sender ID options, and API integration best practices

Estonia SMS Best Practices, Compliance, and Features

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
RegionEurope
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

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.

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
  • DST transitions for 2025:
    • Spring forward: March 30, 2025 at 03:00 (clocks move to 04:00)
    • Fall back: October 26, 2025 at 04:00 (clocks move to 03:00)

Estonian Public Holidays 2025 (official list):

  • January 1: New Year's Day
  • February 24: Independence Day
  • April 18: Good Friday
  • April 20: Easter Sunday
  • May 1: Spring Day
  • June 8: Pentecost Sunday
  • June 23: Victory Day
  • June 24: St. John's Day (Midsummer)
  • August 20: Independence Restoration Day
  • December 24: Christmas Eve
  • December 25: Christmas Day
  • December 26: Boxing Day

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:

  • 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

Restricted Industries:

  • Gambling (requires special permission)
  • Adult content (prohibited)
  • Cryptocurrency promotions (restricted)
  • Financial services (require regulatory disclaimers)

Content Examples to Avoid:

  • Explicit sexual content or adult services
  • Deceptive or misleading offers
  • Pyramid schemes or illegal financial activities
  • Unlicensed pharmaceutical sales

Healthcare Guidelines: Healthcare data is considered special category data under GDPR Article 9. Processing health data via SMS requires:

  • 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:

  1. Verify number format (E.164: +372XXXXXXXX)
  2. Check sender ID validity
  3. Review message content for filtering triggers
  4. Confirm recipient has not opted out
  5. Test with multiple carriers
  6. 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 * 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.

typescript
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.

typescript
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.

typescript
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

  • 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 CodeDescriptionResolution
21211Invalid 'To' Phone NumberVerify E.164 format (+372XXXXXXXX)
21408Permission to send SMS not enabledEnable SMS capability in account settings
21610Message blocked by carrierReview content for spam triggers
21614Invalid mobile numberConfirm number is mobile, not landline
30001Queue overflowImplement rate limiting
30003Unreachable destinationVerify number is active
30004Message blockedCheck sender ID registration
30005Unknown destination handsetVerify 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

Next Steps:

  1. Review the Estonian Consumer Protection Act
  2. Implement proper consent management with double opt-in
  3. Set up delivery tracking and webhook endpoints
  4. Test with all major Estonian carriers (Telia, Elisa, Tele2)
  5. Establish monitoring dashboard for KPIs and error rates

Additional Information:

Technical Resources:

Support Contacts:

  • TTJA Consumer Advice: +372 620 1707 (Mon–Thu 10:00–14:00)
  • TTJA General Inquiries: +372 667 2000 (Mon–Fri 10:00–15:00)
  • Data Protection Inspectorate: info@aki.ee

Frequently Asked Questions

How to send SMS messages in Estonia?

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.

What is the character limit for SMS in Estonia?

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.

What SMS compliance rules apply in Estonia?

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).

How to get consent for SMS marketing in Estonia?

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.

Why does Estonia not support short codes for SMS?

While short codes are not supported, businesses can use long codes or alphanumeric sender IDs for marketing campaigns and other SMS applications.

What are the restricted content categories for SMS in Estonia?

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.

Can I send SMS to landlines in Estonia?

No, sending SMS to landline numbers in Estonia is not supported and will result in delivery failure with error code 21614.

When should I send marketing SMS in Estonia?

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.

How to handle SMS opt-outs in Estonia?

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.

What are the best practices for SMS marketing in Estonia?

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.

What is two-way SMS and is it supported in Estonia?

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.

What alphanumeric sender ID rules exist in Estonia?

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.

How does number portability affect SMS in Estonia?

Number portability is available and doesn't affect SMS delivery; the system automatically updates routing information.

How do MMS messages work in Estonia?

MMS messages in Estonia are automatically converted to SMS with a URL link to the media content, ensuring compatibility with all devices.