Lithuania SMS Best Practices, Compliance, and Features
Lithuania SMS Market Overview
Locale name: | Lithuania |
---|---|
ISO code: | LT |
Region | Europe |
Mobile country code (MCC) | 246 |
Dialing Code | +370 |
Market Conditions: Lithuania has a highly developed mobile telecommunications market with widespread SMS usage. The country has three major mobile operators: Telia Lithuania, Bitė Lithuania, and Tele2. While OTT messaging apps like WhatsApp and Messenger are popular, SMS remains crucial for business communications, authentication, and notifications. The mobile market shows a balanced distribution between Android and iOS devices, with Android having a slight edge in market share.
Key SMS Features and Capabilities in Lithuania
Lithuania offers comprehensive SMS capabilities including two-way messaging, concatenated messages, and number portability, making it a robust market for business messaging.
Two-way SMS Support
Two-way SMS is fully supported in Lithuania with no significant restrictions. This enables interactive messaging campaigns and customer engagement through SMS conversations.
Concatenated Messages (Segmented SMS)
Support: Yes, concatenation is fully supported across all major carriers.
Message length rules: Standard 160 characters for GSM-7 encoding, 70 characters for Unicode (UCS-2) before splitting occurs.
Encoding considerations: Both GSM-7 and UCS-2 encodings are supported. Messages using Latin characters typically use GSM-7, while messages containing Lithuanian-specific characters require UCS-2 encoding.
MMS Support
MMS messages are automatically converted to SMS with an embedded URL link. This ensures compatibility across all devices while still allowing rich media content to be shared through linked web pages.
Recipient Phone Number Compatibility
Number Portability
Number portability is available in Lithuania, allowing users to keep their phone numbers when switching carriers. This feature doesn't significantly impact SMS delivery or routing as the messaging infrastructure is well-established to handle ported numbers.
Sending SMS to Landlines
Sending SMS to landline numbers is not supported in Lithuania. Attempts to send messages to landline numbers will result in delivery failure, and the system will return a 400 response with error code 21614. These messages won't appear in logs, and accounts won't be charged for failed attempts.
Compliance and Regulatory Guidelines for SMS in Lithuania
Lithuania follows both national telecommunications laws and EU regulations, including GDPR. The Communications Regulatory Authority (RRT) oversees telecommunications services, while the State Data Protection Inspectorate handles data privacy matters. All SMS marketing must comply with both Lithuanian Law on Electronic Communications and EU privacy directives.
Consent and Opt-In
Explicit Consent Requirements:
- Written or electronic consent must be obtained before sending marketing messages
- Consent records must be maintained and easily accessible
- Clear disclosure of the company's identity and message purpose is mandatory
- Consent must be specific to SMS marketing and cannot be bundled with other services
Best Practices for Documentation:
- Store consent timestamps and methods
- Maintain detailed records of opt-in sources
- Regularly update consent databases
- Implement double opt-in for additional security
HELP/STOP and Other Commands
- Required Keywords: STOP, SUSTABDYTI (Lithuanian for "stop"), and PAGALBA (Lithuanian for "help") must be supported
- Language Requirements: Commands must be recognized in both English and Lithuanian
- Response Time: Acknowledgment messages must be sent within 24 hours
- Cost: Stop and help commands must be free for users
Do Not Call / Do Not Disturb Registries
Lithuania doesn't maintain a centralized Do Not Call registry, but businesses must:
- Maintain their own suppression lists
- Honor opt-out requests immediately
- Remove numbers within 24 hours of receiving STOP commands
- Keep records of opted-out numbers for at least 2 years
Time Zone Sensitivity
Lithuania observes Eastern European Time (EET/EEST). Recommended Sending Hours:
- Weekdays: 8:00 AM to 8:00 PM EET
- Weekends: 10:00 AM to 6:00 PM EET
- Avoid sending during national holidays
- Emergency messages exempt from time restrictions
Phone Numbers Options and SMS Sender Types for Lithuania
Alphanumeric Sender ID
Operator network capability: Fully supported across all major networks
Registration requirements: No pre-registration required, dynamic usage allowed
Sender ID preservation: Sender IDs are preserved and displayed as sent
Length restriction: Maximum 11 characters, alphanumeric only
Long Codes
Domestic vs. International: Both supported with full functionality
Sender ID preservation: Yes, original sender ID is preserved
Provisioning time: 1-2 business days
Use cases:
- Two-way communication
- Customer support
- Transactional messages
- Authentication services
Short Codes
Support: Not currently supported in Lithuania
Alternative: Use long codes or alphanumeric sender IDs for marketing campaigns
Restricted SMS Content, Industries, and Use Cases
Restricted Industries:
- Gambling and betting services
- Adult content
- Unauthorized pharmaceutical products
- Unlicensed financial services
Regulated Industries:
- Banking (requires additional authentication)
- Healthcare (must comply with patient privacy laws)
- Insurance (subject to financial services regulations)
Content Filtering
Known Carrier Filters:
- URLs from suspicious domains
- Keywords associated with spam
- High-frequency sending patterns
Best Practices to Avoid Filtering:
- Use registered URL shorteners
- Avoid excessive punctuation
- Maintain consistent sending volumes
- Include clear company identification
Best Practices for Sending SMS in Lithuania
Messaging Strategy
- Keep messages under 160 characters when possible
- Include clear call-to-actions
- Personalize using recipient's name or preferences
- Maintain consistent brand voice
Sending Frequency and Timing
- Limit to 4-5 messages per month per recipient
- Respect Lithuanian holidays and observances
- Avoid sending during early morning or late evening
- Space out messages to prevent fatigue
Localization
- Primary language: Lithuanian
- Consider bilingual messages (Lithuanian/English) for international audiences
- Use proper Lithuanian characters and encoding
- Respect cultural sensitivities and local customs
Opt-Out Management
- Process opt-outs within 24 hours
- Send confirmation of opt-out
- Maintain clean suppression lists
- Regular audit of opt-out processes
Testing and Monitoring
- Test across all major Lithuanian carriers
- Monitor delivery rates by carrier
- Track engagement metrics
- Regular A/B testing of message content
- Maintain quality scores above industry benchmarks
SMS API Integrations for Lithuania
Twilio
Twilio provides a robust SMS API with excellent support for Lithuanian numbers.
Authentication & Setup:
- Account SID and Auth Token required
- Region selection available (EU data center recommended)
- E.164 number formatting required (+370)
import { Twilio } from 'twilio';
// Initialize Twilio client
const client = new Twilio(
process.env.TWILIO_ACCOUNT_SID,
process.env.TWILIO_AUTH_TOKEN
);
// Function to send SMS to Lithuania
async function sendSMSToLithuania(
to: string,
message: string,
senderId: string
): Promise<void> {
try {
// Ensure proper number formatting for Lithuania
const formattedNumber = to.startsWith('+370') ? to : `+370${to}`;
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}`);
} catch (error) {
console.error('Error sending message:', error);
}
}
Sinch
Sinch offers comprehensive SMS capabilities for the Lithuanian market with strong delivery rates.
Key Features:
- REST API with JSON payload
- Batch sending support
- Delivery reports
- Unicode support for Lithuanian characters
import axios from 'axios';
interface SinchSMSConfig {
apiToken: string;
servicePlanId: string;
senderId: string;
}
class SinchSMSService {
private readonly baseUrl: string;
private readonly headers: Record<string, string>;
constructor(private config: SinchSMSConfig) {
this.baseUrl = 'https://eu.sms.api.sinch.com/xms/v1';
this.headers = {
'Authorization': `Bearer ${config.apiToken}`,
'Content-Type': 'application/json'
};
}
async sendSMS(to: string, message: string): Promise<void> {
try {
const response = await axios.post(
`${this.baseUrl}/${this.config.servicePlanId}/batches`,
{
from: this.config.senderId,
to: [to],
body: message,
encoding: 'auto' // Automatically handles Lithuanian characters
},
{ headers: this.headers }
);
console.log('Message sent:', response.data.id);
} catch (error) {
console.error('Sinch SMS error:', error);
}
}
}
Bird (MessageBird)
Bird provides reliable SMS delivery in Lithuania with support for local number formatting and Unicode.
import { MessageBirdClient } from 'messagebird';
class BirdSMSService {
private client: MessageBirdClient;
constructor(apiKey: string) {
this.client = new MessageBirdClient(apiKey);
}
async sendSMS(
to: string,
message: string,
senderId: string
): Promise<void> {
const params = {
originator: senderId,
recipients: [to],
body: message,
encoding: 'auto',
reportUrl: 'https://your-webhook.com/delivery-reports'
};
try {
const response = await new Promise((resolve, reject) => {
this.client.messages.create(params, (err, response) => {
if (err) reject(err);
else resolve(response);
});
});
console.log('Message sent with Bird:', response);
} catch (error) {
console.error('Bird SMS error:', error);
}
}
}
API Rate Limits and Throughput
Rate Limits by Provider:
- Twilio: 100 messages/second
- Sinch: 30 messages/second
- Bird: 60 messages/second
Throughput Management Strategies:
- Implement exponential backoff
- Use queue systems (Redis/RabbitMQ)
- Batch messages when possible
- Monitor delivery rates
Error Handling and Reporting
Best Practices:
- Implement retry logic for failed messages
- Log all API responses
- Monitor delivery rates by carrier
- Set up alerting for error thresholds
// Example error handling implementation
interface SMSError {
code: string;
message: string;
timestamp: Date;
recipient: string;
}
class SMSErrorHandler {
private errors: SMSError[] = [];
logError(error: SMSError): void {
this.errors.push(error);
// Log to monitoring system
console.error(`SMS Error [${error.code}]: ${error.message}`);
// Trigger alerts if needed
if (this.shouldTriggerAlert(error)) {
this.sendAlert(error);
}
}
private shouldTriggerAlert(error: SMSError): boolean {
// Implement alert logic
return error.code === 'CRITICAL_ERROR';
}
private sendAlert(error: SMSError): void {
// Implement alert notification
}
}
Recap and Additional Resources
Key Takeaways
-
Compliance Priorities:
- Obtain explicit consent
- Honor opt-out requests
- Maintain proper documentation
- Follow time zone restrictions
-
Technical Considerations:
- Use proper character encoding
- Implement error handling
- Monitor delivery rates
- Manage throughput effectively
-
Best Practices:
- Localize content
- Test across carriers
- Maintain clean contact lists
- Regular performance monitoring
Next Steps
- Review the Communications Regulatory Authority (RRT) guidelines
- Consult with legal counsel for compliance review
- Set up test accounts with preferred SMS providers
- Implement monitoring and reporting systems