sms compliance
sms compliance
Latvia SMS Guide: GDPR Compliance, Regulations & API Integration (2024)
Send SMS in Latvia compliantly. Comprehensive guide covering GDPR requirements, Data State Inspectorate regulations, carrier specs (LMT, Tele2, Bite), and API integration with Twilio, Sinch, MessageBird, and Plivo.
How to Send SMS in Latvia: Compliance & Best Practices Guide
Sending SMS in Latvia requires compliance with strict EU data protection regulations, including GDPR and the ePrivacy Directive. This comprehensive guide covers everything you need to send SMS messages to Latvian customers legally:
- GDPR and ePrivacy compliance for SMS marketing
- Data State Inspectorate (DVI) regulations and enforcement
- Carrier requirements for LMT, Tele2, and Bite networks
- API integration guides with code examples for Twilio, Sinch, MessageBird, and Plivo
- Sender ID options and registration requirements
- Best practices for delivery rates and user engagement
Latvia SMS Market: Key Statistics & Carriers
| Property | Value |
|---|---|
| Locale name | Latvia |
| ISO code | LV |
| Region | Europe |
| Mobile Country Code (MCC) | 247 |
| Dialing Code | +371 |
Market Conditions
Latvia operates a mature mobile market with high SMS adoption. Three operators dominate:
- LMT (Latvijas Mobilais Telefons) – 40%+ market share
- Tele2 Latvia – 20–30% market share
- Bite Latvia – 20–25% market share (2024 data)
While OTT messaging apps like WhatsApp and Messenger have gained popularity, SMS remains essential for business communications, authentication, and transactional notifications. Android maintains a slight edge over iOS in market share.
SMS Capabilities in Latvia: Features & Limitations
Latvia supports most modern SMS features, including concatenated messages and alphanumeric sender IDs. Two-way SMS functionality is not available.
Two-Way SMS Support
Status: Not supported
Major SMS providers do not support two-way SMS in Latvia. If you require two-way communication, consider alternative channels or dedicated local solutions.
Concatenated Messages (Segmented SMS)
Support: Yes, supported for most sender ID types (may vary by carrier)
Message Length Rules:
- GSM-7 encoding: 160 characters per segment
- Unicode (UCS-2): 70 characters per segment
Encoding: Messages automatically use the appropriate encoding (GSM-7 or UCS-2) based on content.
Cost Implications: Carriers bill each segment separately. A 300-character message using GSM-7 encoding costs twice as much as a single 160-character message. Plan message length carefully to control costs.
MMS Support
Status: Converted to SMS with URL
Carriers automatically convert MMS messages to SMS with an embedded URL link to the media content, ensuring compatibility across all devices.
Recipient Phone Number Compatibility
Number Portability
Status: Fully available
Users can keep their phone numbers when switching carriers. Carriers automatically route messages to the current provider without impacting delivery.
Can You Send SMS to Landlines in Latvia?
Status: Not supported
Attempts to send SMS to landline numbers fail with a 400 error response (code 21614 for Twilio API). You won't be charged for failed attempts.
SMS Compliance Requirements in Latvia: GDPR & DVI Regulations
Latvia follows EU regulations, including GDPR and ePrivacy Directive requirements for SMS communications. The Data State Inspectorate (Datu valsts inspekcija, DVI) oversees data protection compliance, while the Public Utilities Commission (Sabiedrisko pakalpojumu regulēšanas komisija, SPRK) regulates telecommunications.
Primary Legislation: The Law on Information Society Services governs electronic direct marketing, including SMS communications. In July 2022, Latvia enacted the Electronic Communication Law (ECL), which transposes the European Electronic Communications Code (EECC).
2024 Enforcement: DVI actively enforces consent requirements with multiple enforcement actions addressing improper consent mechanisms. Companies face fines for collecting consent through pre-checked boxes or implied consent.
SMS Marketing Consent in Latvia: GDPR Requirements
Explicit Consent Requirements for Natural Persons (B2C):
- Obtain written or electronic opt-in consent before sending marketing messages to individuals
- Ensure consent is freely given, specific, informed, and unambiguous (per GDPR Article 4(11))
- Collect separate consent for SMS marketing (distinct from email or other channels)
- Maintain detailed records of when and how you obtained consent
- Avoid pre-checked boxes or assumed consent – they violate compliance requirements
- Clearly state the purpose of messages during opt-in
"Soft Opt-In" Exception for Existing Customers:
Per the Law on Information Society Services, you don't need consent if:
- You obtained contact data during a sale or service provision
- Your marketing promotes the same or similar goods/services
- The recipient can decline easily and at no cost
- The recipient has not previously objected to being contacted
Legal Persons (B2B Communications):
- No opt-in consent required when sending to legal persons
- Provide an easy opt-out mechanism (electronically and free of charge)
- Make opt-out available whenever you use contact data for marketing
DVI Guidance (April 2022): The DVI clarified that you cannot send commercial communications to new customers without separate consent obtained when they make a purchase or receive a service. Your opt-out process must not be more complicated than your opt-in process.
HELP/STOP and Other Commands
Required Features:
| Command Type | Latvian | English | Purpose |
|---|---|---|---|
| Opt-out | ATCELT | STOP | Unsubscribe from messages |
| Assistance | PALĪDZĪBA | HELP | Request support information |
Implementation Requirements:
- Make commands free for users to send
- Process opt-out requests within 24 hours
- Confirm opt-out status to users
Do Not Call / Do Not Disturb Registries
Status: No centralized registry
Latvia 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
- Regularly clean contact lists against suppression databases
Latvia SMS Sending Hours: Timing & Restrictions
Latvia Time Zone: Eastern European Time (EET/EEST, UTC+2/UTC+3)
Recommended Schedule:
| Time | Day | Status |
|---|---|---|
| 9:00 AM – 8:00 PM | Monday–Saturday | ✓ Allowed |
| 8:00 PM – 9:00 AM | All days | ✗ Avoid (except emergencies) |
| Any time | Sundays & holidays | ✗ Avoid (except emergencies) |
Major Latvian Holidays to Avoid:
- January 1 – New Year's Day
- Good Friday (date varies)
- Easter Monday (date varies)
- May 1 – Labour Day
- May 4 – Declaration of Independence Day
- June 23–24 – Midsummer (Jāņi)
- November 18 – Independence Day
- December 24–26 – Christmas
- December 31 – New Year's Eve
Latvia Sender ID Options: Alphanumeric, Long Codes & Short Codes
Alphanumeric Sender ID
Operator Network Capability: Fully supported
Registration Requirements: No pre-registration required – use dynamic sender IDs
Sender ID Preservation: Carriers display sender IDs as-is to recipients
Character Limits: 3–11 characters (letters, numbers, and limited special characters)
Reply Capability: One-way only – recipients cannot reply to alphanumeric sender IDs
Best Practices:
- Use your brand name for recognition
- Avoid special characters beyond hyphens and underscores
- Test sender IDs across all carriers before launching campaigns
Long Codes
Support:
- Domestic long codes: Not supported
- International long codes: Fully supported
Sender ID Preservation: Yes, Latvia preserves original sender IDs
Provisioning Time: Typically 1–2 business days
Use Cases: Transactional messages, alerts, and two-factor authentication
Short Codes
Support: Not currently available in Latvia
SMS Content Restrictions in Latvia: Industry Guidelines
Restricted Industries and Content:
| Industry/Content | Status | Requirements |
|---|---|---|
| Gambling & betting | Restricted | Require special permits |
| Adult content | Prohibited | Strictly banned |
| Financial services | Restricted | Must include regulatory disclaimers |
| Healthcare messages | Restricted | Must comply with medical privacy laws |
| Cryptocurrency | Restricted | Face strict regulations |
How Latvian Carriers Filter SMS Content
Carrier Filtering Rules:
- Carriers block messages containing certain keywords
- Use URLs from reputable domains only
- Avoid excessive capitalization and special characters
- Limit to 5 URLs per message maximum
Tips to Avoid Blocking:
- Use clear, professional language
- Avoid spam trigger words
- Include your company name in sender ID
- Maintain consistent sending patterns
- Keep URL count minimal
Latvia SMS Best Practices: Delivery & Engagement Strategies
Messaging Strategy
Create effective SMS messages by following these guidelines:
- Keep messages under 160 characters when possible
- Include a clear call-to-action
- Personalize using the recipient's name or preferences
- Maintain a consistent brand voice
- Include opt-out instructions in marketing messages
Message Template Examples:
Transactional Message:
[BrandName]: Your order #12345 has shipped. Track: https://track.co/abc123 Reply STOP to opt out
Marketing Message:
[BrandName]: 20% off this weekend only! Use code SAVE20. Shop: https://shop.co/sale Reply STOP to opt out
Authentication Message:
[BrandName]: Your verification code is 847392. Valid for 10 minutes. Don't share this code.
Sending Frequency and Timing
Balance engagement with respect for your audience:
- Limit to 2–4 messages per month per recipient
- Respect quiet hours (8:00 PM – 9:00 AM)
- Avoid sending during major holidays
- Space out bulk campaigns to prevent network congestion
Industry-Specific Recommendations:
- Retail: 2–4 messages/month (promotions, sales alerts)
- Financial services: 4–8 messages/month (transaction alerts, security notifications)
- Healthcare: 1–2 messages/month (appointment reminders)
- E-commerce: 2–3 messages/month (order updates, special offers)
Localization for Latvian Audiences
Language Support:
- Offer messages in both Latvian and Russian (approximately 25% of the population speaks Russian as their first language)
- Use proper character encoding for local characters (ā, č, ē, ģ, ī, ķ, ļ, ņ, š, ū, ž)
- Provide customer support in both languages
Cultural Considerations:
- Latvians value directness and brevity in communications
- Respect national holidays and cultural traditions (especially Midsummer/Jāņi celebrations)
- Use formal language unless you have an established casual relationship with recipients
- Consider regional differences between Riga and rural areas
Opt-Out Management
Implement robust opt-out processes:
- Process opt-outs within 24 hours
- Send confirmation of opt-out
- Maintain a centralized opt-out database
- Conduct regular audits of opt-out compliance
Testing and Monitoring
Ensure reliable delivery through systematic testing:
- Test across all major carriers (LMT, Tele2, Bite)
- Monitor delivery rates by carrier
- Track engagement metrics
- Test opt-out functionality regularly
- Monitor for carrier filtering changes
Key Performance Indicators to Track:
- Delivery rate: Aim for 95%+ (Latvia average: 96–98%)
- Click-through rate: Benchmark varies by industry (typical: 5–15%)
- Opt-out rate: Keep below 2%
- Bounce rate: Keep below 3%
- Engagement time: Monitor when recipients interact with messages
SMS API Integration for Latvia: Twilio, Sinch, MessageBird & Plivo
Twilio SMS Integration for Latvia
Twilio provides robust SMS capabilities for Latvia through their REST API. Authenticate using your account SID and auth token.
Key Parameters:
to: Latvian phone numbers in E.164 format (+371XXXXXXXX)from: Your alphanumeric sender ID or phone numberbody: Message content (supports UTF-8 for Latvian characters)
import { Twilio } from 'twilio';
// Initialize Twilio client with credentials
const client = new Twilio(
process.env.TWILIO_ACCOUNT_SID,
process.env.TWILIO_AUTH_TOKEN
);
async function sendSMSToLatvia() {
try {
const message = await client.messages.create({
body: 'Sveiki! Your message here',
from: 'YourBrand',
to: '+37120123456',
statusCallback: 'https://your-domain.com/sms/status',
statusCallbackMethod: 'POST'
});
console.log(`Message sent successfully: ${message.sid}`);
console.log(`Status: ${message.status}`);
return message;
} catch (error) {
if (error.code === 21614) {
console.error('Cannot send to landline number');
} else if (error.code === 21211) {
console.error('Invalid phone number format');
} else {
console.error('Error sending message:', error.message);
}
throw error;
}
}
// Handle delivery status webhook
app.post('/sms/status', (req, res) => {
const { MessageSid, MessageStatus, ErrorCode } = req.body;
console.log(`Message ${MessageSid} status: ${MessageStatus}`);
if (ErrorCode) {
console.error(`Delivery failed with error: ${ErrorCode}`);
}
res.status(200).send('OK');
});Sinch SMS Integration for Latvia
Sinch offers direct carrier connections in Latvia with support for high-volume messaging.
import { SinchClient } from '@sinch/sdk-core';
import { SmsApi } from '@sinch/sdk-sms';
async function sendSinchSMS() {
const smsApi = new SmsApi({
apiToken: process.env.SINCH_API_TOKEN,
projectId: process.env.SINCH_PROJECT_ID
});
try {
const response = await smsApi.send({
to: ['+37120123456'],
from: 'CompanyName',
message: 'Your message here',
deliveryReport: 'summary',
callbackUrl: 'https://your-domain.com/sms/callback'
});
console.log('Message sent:', response.id);
console.log('Batch ID:', response.batchId);
return response;
} catch (error) {
console.error('Sinch SMS error:', error.message);
// Implement retry logic with exponential backoff
if (error.statusCode === 429) {
console.log('Rate limit exceeded, retrying after delay');
await new Promise(resolve => setTimeout(resolve, 5000));
return sendSinchSMS(); // Retry once
}
throw error;
}
}MessageBird SMS Integration for Latvia
MessageBird provides reliable SMS delivery in Latvia with advanced features.
import messagebird from 'messagebird';
const messageBirdClient = messagebird(process.env.MESSAGEBIRD_API_KEY);
function sendMessageBirdSMS(): Promise<any> {
return new Promise((resolve, reject) => {
messageBirdClient.messages.create({
originator: 'YourBrand',
recipients: ['+37120123456'],
body: 'Your message content',
scheduledDatetime: null,
reference: 'your-reference'
}, (err, response) => {
if (err) {
console.error('MessageBird error:', err);
reject(err);
return;
}
console.log('Message sent:', response.id);
console.log('Recipients:', response.recipients);
resolve(response);
});
});
}Plivo SMS Integration for Latvia
Plivo offers competitive rates and reliable delivery for Latvia SMS.
import plivo from 'plivo';
const client = new plivo.Client(
process.env.PLIVO_AUTH_ID,
process.env.PLIVO_AUTH_TOKEN
);
async function sendPlivoSMS() {
try {
const response = await client.messages.create({
src: 'YourBrand',
dst: '37120123456',
text: 'Your message here',
url: 'https://your-callback-url.com',
method: 'POST'
});
console.log('Message sent:', response.messageUuid);
console.log('API ID:', response.apiId);
return response;
} catch (error) {
console.error('Plivo error:', error.message);
throw error;
}
}API Rate Limits and Throughput
Provider Rate Limits:
| Provider | Messages/Second | Best For |
|---|---|---|
| Twilio | 100 | High-volume campaigns |
| Sinch | 30 | Transactional messages |
| MessageBird | 60 | Mixed use cases |
| Plivo | 50 | Cost-effective campaigns |
Strategies for Large-Scale Sending:
- Implement queue systems (Redis or RabbitMQ)
- Use batch APIs where available
- Monitor throughput and adjust sending rates
- Implement exponential backoff for retries
Queue Implementation Example (Redis):
import { Queue } from 'bull';
const smsQueue = new Queue('latvia-sms', {
redis: {
host: process.env.REDIS_HOST,
port: 6379
}
});
// Add messages to queue
async function queueSMS(to: string, body: string) {
await smsQueue.add({
to,
body,
from: 'YourBrand'
}, {
attempts: 3,
backoff: {
type: 'exponential',
delay: 2000
}
});
}
// Process queue with rate limiting
smsQueue.process(50, async (job) => {
const { to, body, from } = job.data;
return await sendSMSToLatvia(to, body, from);
});Error Handling and Reporting
Implement comprehensive error handling for reliable message delivery:
Common Error Codes for Latvia:
| Error Code | Provider | Meaning | Action |
|---|---|---|---|
| 21614 | Twilio | Landline number | Validate number type before sending |
| 21211 | Twilio | Invalid format | Verify E.164 format |
| 30003 | Twilio | Unreachable destination | Remove from list |
| 30005 | Twilio | Unknown destination | Validate number exists |
| 403 | Sinch | Forbidden | Check account permissions |
| 429 | All | Rate limit exceeded | Implement backoff retry |
Error Handling Pattern:
async function sendSMSWithRetry(to: string, body: string, maxRetries = 3) {
let attempt = 0;
while (attempt < maxRetries) {
try {
const correlationId = `sms-${Date.now()}-${Math.random()}`;
console.log(`[${correlationId}] Sending SMS to ${to}, attempt ${attempt + 1}`);
const result = await client.messages.create({
to,
body,
from: 'YourBrand'
});
console.log(`[${correlationId}] Success: ${result.sid}`);
// Store delivery receipt
await db.smsLogs.insert({
correlationId,
messageSid: result.sid,
to,
status: result.status,
timestamp: new Date()
});
return result;
} catch (error) {
attempt++;
if (error.code === 21614 || error.code === 21211) {
// Don't retry invalid numbers
throw error;
}
if (attempt >= maxRetries) {
console.error(`Failed after ${maxRetries} attempts:`, error);
throw error;
}
// Exponential backoff
const delay = Math.pow(2, attempt) * 1000;
await new Promise(resolve => setTimeout(resolve, delay));
}
}
}Latvia SMS FAQs: Common Questions Answered
Do I need to register my sender ID in Latvia?
No, Latvia does not require pre-registration for alphanumeric sender IDs. Use dynamic sender IDs (3–11 characters) that display as-is to recipients. However, alphanumeric sender IDs are one-way only – recipients cannot reply to these messages.
What laws govern SMS marketing in Latvia?
SMS marketing in Latvia operates under the GDPR, ePrivacy Directive, and the Law on Information Society Services. The Data State Inspectorate (DVI) oversees enforcement. Obtain explicit opt-in consent before sending marketing SMS to individuals (B2C), with separate consent required for SMS distinct from other channels. The July 2022 Electronic Communication Law (ECL) transposes the European Electronic Communications Code.
Do I need consent to send SMS marketing in Latvia?
Yes, for B2C communications, obtain explicit opt-in consent before sending marketing SMS. Consent must be freely given, specific, informed, and unambiguous per GDPR Article 4(11). A "soft opt-in" exception exists for existing customers if you obtained their contact data during a sale and are marketing similar products. For B2B communications to legal persons, opt-in is not required, but you must provide an easy opt-out mechanism.
Which mobile carriers operate in Latvia?
Latvia has three major mobile carriers: LMT (Latvijas Mobilais Telefons) with 40%+ market share, Tele2 Latvia with 20–30% market share, and Bite Latvia with 20–25% market share as of 2024. All three carriers support number portability, allowing users to keep their phone numbers when switching providers.
Carrier Technical Support:
- LMT: www.lmt.lv | Business support: +371 67708080
- Tele2: www.tele2.lv | Business support: +371 67070707
- Bite: www.bite.lv | Business support: +371 67021111
What character encoding should I use for Latvian SMS?
Use UTF-8 or UCS-2 encoding to properly display Latvian special characters (ā, č, ē, ģ, ī, ķ, ļ, ņ, š, ū, ž). Messages with these characters use Unicode (UCS-2) encoding, limiting each segment to 70 characters instead of the standard 160 characters with GSM-7 encoding. Most SMS APIs automatically detect and apply the correct encoding.
What are the SMS sending hour restrictions in Latvia?
Send SMS messages between 9:00 AM and 8:00 PM Eastern European Time (EET/EEST, UTC+2/UTC+3). Avoid sending on Sundays and national holidays. Emergency messages may be sent outside these hours if truly urgent. Respecting these quiet hours helps maintain compliance and customer satisfaction.
How long does it take to start sending SMS in Latvia?
Start sending SMS to Latvia immediately using international long codes or alphanumeric sender IDs (no registration required). International long codes typically provision in 1–2 business days. Domestic long codes and short codes are not currently available in Latvia. Most businesses can begin sending within 24 hours using international routes.
Summary and Additional Resources
Key Takeaways
-
Compliance Priorities
- Obtain explicit opt-in consent for B2C marketing (separate consent for SMS)
- Honor opt-out requests within 24 hours
- Maintain detailed records of consent
- Follow GDPR and Law on Information Society Services requirements
- Understand the "soft opt-in" exception for existing customers
-
Technical Best Practices
- Use proper character encoding for Latvian characters (ā, č, ē, ģ, ī, ķ, ļ, ņ, š, ū, ž)
- Implement proper error handling and logging
- Monitor delivery rates across all three carriers (LMT, Tele2, Bite)
- Test across all carriers before launching campaigns
-
Localization Requirements
- Support Latvian language and proper character encoding
- Respect local time zones (EET/EEST)
- Consider cultural factors and holidays
- Provide STOP/ATCELT and HELP/PALĪDZĪBA keywords
Next Steps
- Review the Data State Inspectorate guidelines and April 2022 Commercial Communications Guidance
- Consult with local legal counsel for compliance with the Law on Information Society Services
- Set up test accounts with your preferred SMS providers (Twilio, Sinch, MessageBird, or Plivo)
- Implement consent tracking and monitoring systems
- Test message delivery across LMT, Tele2, and Bite networks
Additional Resources
Official Regulatory Sources:
- Data State Inspectorate (DVI) – Data protection authority
- Public Utilities Commission (SPRK) – Telecommunications regulator
- Law on Information Society Services – Governs electronic marketing
- Electronic Communications Law (2022) – Telecommunications framework
- GDPR Guidelines for Latvia
Industry Resources:
Frequently Asked Questions
How to send SMS messages in Latvia?
Use an SMS API provider like Twilio, Sinch, MessageBird, or Plivo. Ensure your message content complies with Latvian regulations, including obtaining consent for marketing messages and honoring opt-out requests. Remember to format phone numbers with the +371 country code.
What is the SMS market like in Latvia?
Latvia has a mature mobile market with high SMS adoption rates. Key operators include LMT, Tele2, and Bite. While OTT apps are popular, SMS remains vital for business communication and authentication, with a relatively even split between Android and iOS users.
Why does Latvia not support two-way SMS?
Two-way SMS is not supported through major SMS providers in Latvia. Businesses needing two-way communication should consider alternative channels or dedicated local solutions. This limitation primarily affects interactive SMS services.
When should I send SMS messages in Latvia?
Adhere to Latvian time zones (EET/EEST) and send messages between 9:00 AM and 8:00 PM local time. Avoid sending on Sundays and national holidays. Emergency messages are permissible outside these hours only if genuinely urgent.
Can I use an alphanumeric sender ID in Latvia?
Yes, alphanumeric sender IDs are fully supported in Latvia. No pre-registration is required, allowing for dynamic usage and ensuring sender IDs are displayed as-is to recipients.
What SMS features are supported in Latvia?
Latvia supports concatenated messages (long SMS) and alphanumeric sender IDs. MMS messages are automatically converted to SMS with a URL link to the media. Number portability is available, simplifying routing. However, two-way SMS and sending to landlines are not supported.
How to comply with SMS regulations in Latvia?
Obtain explicit consent for marketing messages, honor STOP/ATCELT (or HELP/PALĪDZĪBA) keywords, and maintain detailed records. Latvia follows GDPR and ePrivacy Directive rules overseen by the Data State Inspectorate and the Public Utilities Commission.
What are the restrictions on SMS content in Latvia?
Gambling, adult content, and cryptocurrency promotions face strict regulations. Financial and healthcare messages must include disclaimers and comply with privacy laws. Avoid spam trigger words and excessive capitalization to prevent carrier filtering.
How long are SMS messages in Latvia?
Standard SMS length is 160 characters for GSM-7 encoding and 70 characters for Unicode. Latvia supports concatenated messages, allowing longer messages to be sent as segmented parts.
What is the process for sending SMS to Latvia via Twilio?
Initialize the Twilio client with your Account SID and Auth Token. Use the client's messages.create method, providing the message body, your alphanumeric sender ID, and the recipient's number in +371 format.
How to handle SMS opt-outs in Latvia?
Process opt-out requests within 24 hours, send confirmation of opt-out, and maintain a centralized opt-out database. Both "STOP" and "ATCELT" keywords must be honored. Regularly audit for compliance.
What are the best practices for SMS marketing in Latvia?
Keep messages concise, include clear calls-to-action, personalize content, and maintain a consistent brand voice. Limit frequency to 2-4 messages per month, respect quiet hours, and support both Latvian and Russian languages.
Which SMS API providers offer services in Latvia?
Several providers offer SMS services for Latvia, including Twilio, Sinch, MessageBird, and Plivo. Each offers various features, pricing, and throughput capabilities. Choose the provider that best fits your specific needs.