sms compliance
sms compliance
Send SMS to Montenegro: Complete API Guide & Compliance (2025)
Send SMS to Montenegro with complete compliance guidance. Learn LPPI regulations, carrier requirements for T-Mobile, One Montenegro & M:tel, plus working API code examples.
Montenegro SMS Best Practices, Compliance, and Features
Montenegro SMS Market Overview
| Locale name: | Montenegro |
|---|---|
| ISO code: | ME |
| Region | Europe |
| Mobile country code (MCC) | 297 |
| Dialing Code | +382 |
Market Conditions: Operate in a mature mobile telecommunications market with penetration rates exceeding 225% – 1.41 million connections serving 626,000 residents as of 2024, reflecting heavy tourist SIM uptake. Montenegro operates as a tri-opoly with three nationwide operators: Crnogorski Telekom (T-Mobile Montenegro), One Montenegro (formerly Telenor, rebranded under 4iG ownership in 2025), and M:tel Montenegro. Source: Analysys Mason, 2025. Market share remains relatively balanced: M:tel (34.61%), Crnogorski Telekom (34.27%), and One Montenegro (31.12%) as of 2021. While OTT messaging apps like WhatsApp and Viber dominate personal communications, SMS remains the critical channel for business communications and authentication services.
Key SMS Features and Capabilities in Montenegro
Work with basic SMS functionality that has specific limitations on advanced features. Understand these capabilities and restrictions before implementing SMS services.
Two-way SMS Support
Status: Not supported in Montenegro.
Two-way SMS is not supported in Montenegro. Source: Twilio Montenegro SMS Guidelines, 2024. Design SMS strategies around one-way communications and implement alternative channels – web forms, email, or app notifications – for receiving customer responses.
Alternative Solutions:
- Use web forms with unique tracking codes sent via SMS
- Implement app-based notifications with in-app responses
- Set up dedicated email addresses referenced in SMS messages
- Create QR codes linking to response forms
Concatenated Messages (Segmented SMS)
Support: Yes. Send concatenated messages in Montenegro. Source: Twilio Montenegro SMS Guidelines, 2024
Message length rules:
- GSM-7 encoding: 160 characters per segment
- Unicode (UCS-2): 70 characters per segment
- Messages exceeding these limits split automatically into multiple segments
Encoding considerations: Use either GSM-7 or UCS-2 encoding. Recipient devices reassemble concatenated messages automatically, allowing longer content delivery while maintaining standard SMS infrastructure.
Character count examples:
- "Your verification code is 123456" = 34 characters (1 segment, GSM-7)
- "Ваш код верификације је 123456" = 33 characters (1 segment, UCS-2)
- 200-character message = 2 segments (GSM-7), 3 segments (UCS-2)
MMS Support
MMS messages convert automatically to SMS with an embedded URL link. This conversion ensures recipients can still access rich media content, though not in native MMS format. Use short URLs and include clear instructions for accessing content to optimize delivery.
Best practices for MMS-to-SMS conversion:
- Keep fallback text under 160 characters
- Use HTTPS URLs only
- Include branded domain names for trust
- Add clear call-to-action (e.g., "View image: [URL]")
Recipient Phone Number Compatibility
Number Portability
Status: Available in Montenegro.
Montenegro fully implements mobile number portability (MNP) through EKIP (Agency for Electronic Communications and Postal Services). Recipients can switch operators while keeping their existing numbers. Over 95,000 numbers have been ported in Montenegro as of late 2023, with approximately 10,000 ports occurring in 2022 alone. [Source: MNP Statistics, 2023]
Porting process: Expect 3 business days maximum. EKIP maintains an automated system to verify porting eligibility and provides consumer protection guidelines.
Implementation note: MNP covers mobile numbers fully, but fixed-line number portability remains limited – consult your service provider for availability.
Sending SMS to Landlines
SMS cannot be sent to landline numbers in Montenegro. Attempts fail with a 400 response (error code 21614). These messages do not appear in logs and do not incur charges.
SMS Compliance and Regulatory Requirements in Montenegro
Comply with Montenegro's Personal Data Protection Law (PDPL, also known as LPPI – Law 79/2008, 70/2009, 44/2012, and 22/2017), last amended on July 31, 2024. While modeled after the EU Data Protection Directive (95/46/EC) rather than GDPR, this law incorporates similar principles for data protection and privacy. The Agency for Personal Data Protection (AZLP) serves as the primary regulatory authority. Source: DLA Piper Data Protection Laws, 2024
GDPR Alignment Status (2024): Montenegro's current PDPL is not yet fully compliant with GDPR. A new data protection law is under development to harmonize with EU GDPR requirements, though the adoption timeline remains uncertain. July 2024 amendments moved toward further alignment. Source: Chambers and Partners, 2024
Telecommunications Oversight: EKIP (Agency for Electronic Communications and Postal Services) regulates telecommunications services, including SMS, spectrum allocation, and quality standards. Source: EKIP, 2024
Consent and Opt-In Requirements
Explicit Consent Requirements:
- Obtain written or electronic consent before sending marketing messages
- Maintain consent records and keep them easily accessible
- State your communication purpose clearly during opt-in
- Use clear and unambiguous consent language
Best Practices for Documentation:
- Store timestamp and source of each consent
- Maintain detailed records of opt-in methods
- Audit consent databases regularly
- Enable double opt-in for additional security
HELP/STOP and Other Commands
- Support STOP, CANCEL, END, and UNSUBSCRIBE commands
- Provide service information for HELP or INFO commands
- Recognize commands in both Latin and Cyrillic scripts
- Support both Montenegrin and English language responses
Do Not Call / Do Not Disturb Registries
Montenegro does not maintain an official Do Not Call registry. Follow these practices instead:
- Maintain internal suppression lists
- Honor opt-out requests within 24 hours
- Document all opt-out requests
- Clean contact databases regularly
Time Zone Sensitivity
Montenegro observes Central European Time (CET/CEST). While no strict legal restrictions govern SMS timing, follow these guidelines:
- Recommended sending window: 8:00 AM – 8:00 PM local time
- Avoid sending during: Public holidays, weekends (unless urgent)
- Emergency messages: Send 24/7 if truly urgent
Montenegro Phone Numbers and SMS Sender ID Options
Alphanumeric Sender ID
Operator network capability: Supported Registration requirements: No pre-registration required Sender ID preservation: Yes, operators preserve sender IDs as sent Dynamic usage: Supported with no pre-registration needed Character limits: 3–11 characters (alphanumeric only, no spaces) Format requirements: Letters only, no numbers or special characters
Good sender ID examples: "YourBrand", "MyCompany", "BankAlert" Bad sender ID examples: "Your Brand" (space), "Brand123" (numbers), "Company!" (special character)
Long Codes
Domestic vs. International:
- Domestic: Fully supported
- International: Limited support
Sender ID preservation: Yes, operators preserve original sender IDs Provisioning time: 1–2 business days for domestic numbers Use cases:
- Two-factor authentication
- Transactional messages
- Customer support
Short Codes
Support: Not currently supported in Montenegro Provisioning time: N/A Use cases: N/A
Alternative solutions: Use alphanumeric sender IDs or long codes for similar functionality. Short codes may become available as Montenegro's telecom infrastructure continues to develop.
Restricted SMS Content, Industries, and Use Cases
Restricted Industries:
- Gambling and betting services
- Adult content
- Cryptocurrency promotions
- Unauthorized financial services
Regulated Industries:
- Banking (requires regulatory approval)
- Healthcare (patient privacy requirements)
- Insurance (compliance with financial regulations)
Content Filtering
Known Carrier Filters:
- URLs from suspicious domains
- Excessive punctuation
- All-capital messages
- Multiple consecutive spaces
Best Practices:
- Avoid URL shorteners from untrusted domains
- Use clear, professional language
- Limit special characters to standard punctuation
- Include clear sender identification in every message
Specific guidelines:
- Excessive punctuation: More than 3 consecutive punctuation marks (e.g., "!!!" or "???")
- Suspicious domains: Unregistered or recently created domains, free URL shorteners
- All-capital messages: Entire message in uppercase (use sentence case instead)
Best Practices for Sending SMS in Montenegro
Messaging Strategy
- Keep messages under 160 characters
- Include clear calls-to-action
- Use personalization tokens wisely
- Maintain consistent brand voice
Sending Frequency and Timing
- Send maximum 2–3 marketing messages per week per recipient
- Respect local holidays and cultural events (Statehood Day, Independence Day)
- Implement frequency capping in your sending system
- Monitor engagement metrics (open rates, click-through rates, opt-outs)
Localization
- Primary language: Montenegrin
- Consider bilingual messages (Montenegrin/English) for international audiences
- Support both Latin and Cyrillic scripts (both are official)
- Respect local cultural nuances
Translation guidelines:
- Use professional translation services, not automated tools
- Test messages with native speakers
- Avoid idioms that don't translate well
- Keep technical terms consistent across languages
Opt-Out Management
- Process opt-outs within 24 hours
- Maintain centralized opt-out database
- Confirm opt-out with final message
- Clean your database regularly
Testing and Monitoring
- Test across all major carriers (T-Mobile, One Montenegro, M:tel)
- Monitor delivery rates (target: 95%+ delivery success)
- Track engagement metrics (click-through rate, conversion rate, opt-out rate)
- Run regular A/B tests of content (subject lines, timing, formatting)
Key performance indicators:
- Delivery rate: Percentage of messages successfully delivered
- Bounce rate: Failed deliveries (target: <5%)
- Response rate: User engagement with call-to-action
- Opt-out rate: Unsubscribes per campaign (target: <2%)
How to Send SMS to Montenegro Using APIs
Send SMS via Twilio API
Send messages to Montenegro using Twilio's SMS API through their global network.
Authentication & Setup:
- Obtain your Account SID and Auth Token
- Select region 'eu1' for Montenegro
- Format numbers using E.164 standard
import * as Twilio from 'twilio';
// Initialize Twilio client
const client = new Twilio(
process.env.TWILIO_ACCOUNT_SID, // Your Account SID
process.env.TWILIO_AUTH_TOKEN // Your Auth Token
);
// Send SMS to Montenegro
async function sendSMSToMontenegro() {
try {
const message = await client.messages.create({
body: 'Your message in Latin/Cyrillic script',
from: 'YOUR_TWILIO_NUMBER', // Your Twilio phone number
to: '+38269123456' // Montenegro number in E.164 format
});
console.log(`Message sent successfully: ${message.sid}`);
return message;
} catch (error) {
console.error('Error sending message:', error);
throw error;
}
}Send SMS via Sinch API
Connect directly to Montenegro operators using Sinch to achieve high delivery rates.
Authentication & Setup:
- Configure your Service Plan ID and API Token
- Use the EU region endpoint
- Enable alphanumeric sender IDs
import { Sms } from '@sinch/sdk-core';
// Initialize Sinch client
const smsClient = new Sms({
servicePlanId: 'YOUR_SERVICE_PLAN_ID',
apiToken: 'YOUR_API_TOKEN'
});
// Send SMS using Sinch
async function sendSinchSMS() {
try {
const response = await smsClient.batches.send({
from: 'YourBrand', // Alphanumeric sender ID
to: ['+38269123456'], // Montenegro number
body: 'Your message here',
delivery_report: 'summary' // Get delivery status
});
console.log(`Batch ID: ${response.id}`);
return response;
} catch (error) {
console.error('Sinch SMS Error:', error);
throw error;
}
}Send SMS via Bird API
Integrate Bird's API for Montenegro messaging.
Authentication & Setup:
- Generate your Access Key
- Configure Workspace and Channel ID
- Enable message scheduling if needed
import axios from 'axios';
// Bird API configuration
const BIRD_API_CONFIG = {
workspaceId: 'YOUR_WORKSPACE_ID',
channelId: 'YOUR_CHANNEL_ID',
accessKey: 'YOUR_ACCESS_KEY'
};
// Send SMS using Bird
async function sendBirdSMS() {
try {
const response = await axios.post(
`https://api.bird.com/workspaces/${BIRD_API_CONFIG.workspaceId}/messages`,
{
receiver: {
contacts: [{ identifierValue: '+38269123456' }]
},
body: {
type: 'text',
text: { text: 'Your message content' }
}
},
{
headers: {
'Authorization': `AccessKey ${BIRD_API_CONFIG.accessKey}`,
'Content-Type': 'application/json'
}
}
);
return response.data;
} catch (error) {
console.error('Bird API Error:', error);
throw error;
}
}API Rate Limits and Throughput
Rate Limits:
- Twilio: 100 messages per second
- Sinch: 30 messages per second
- Bird: 50 messages per second
Throughput Management:
// Example rate limiting implementation
class RateLimiter {
private queue: Array<() => Promise<any>> = [];
private processing = false;
private rateLimit: number;
private interval: number;
constructor(rateLimit: number, interval: number) {
this.rateLimit = rateLimit;
this.interval = interval;
}
async process() {
if (this.processing) return;
this.processing = true;
while (this.queue.length > 0) {
const batch = this.queue.splice(0, this.rateLimit);
await Promise.all(batch.map(task => task()));
await new Promise(resolve => setTimeout(resolve, this.interval));
}
this.processing = false;
}
add(task: () => Promise<any>) {
this.queue.push(task);
this.process();
}
}Error Handling and Reporting
// Error handling utility
interface SMSError {
code: string;
message: string;
timestamp: Date;
provider: string;
}
class SMSErrorHandler {
static async handleError(error: any, provider: string): Promise<SMSError> {
const errorLog: SMSError = {
code: error.code || 'UNKNOWN',
message: error.message,
timestamp: new Date(),
provider
};
// Log error to monitoring system
await this.logError(errorLog);
return errorLog;
}
private static async logError(error: SMSError): Promise<void> {
// Implement your logging logic here
console.error('SMS Error:', error);
}
}Summary: Sending SMS to Montenegro
Key Takeaways
-
Compliance Priorities
- Obtain explicit consent before sending
- Honor opt-out requests within 24 hours
- Maintain proper documentation
-
Technical Best Practices
- Format numbers using E.164 standard
- Implement rate limiting
- Monitor delivery rates continuously
-
Localization Requirements
- Support both Latin and Cyrillic scripts
- Respect CET/CEST time zones
- Consider bilingual messaging
Next Steps
- Review EKIP regulations before launching
- Implement proper error handling and monitoring
- Test thoroughly across all major Montenegro carriers