El Salvador SMS Guide: API Integration, Compliance & Best Practices 2025
Complete guide to SMS messaging in El Salvador: API integration with Twilio, Sinch, and MessageBird, compliance requirements, sender ID options, and optimization strategies for businesses.
Market Conditions: El Salvador maintains a robust mobile communications market with widespread SMS adoption. Three major operators dominate the ecosystem: Tigo, Movistar, and Claro. SMS remains critical for business communications and authentication despite growing WhatsApp usage, offering universal reach and proven reliability. Android devices significantly outnumber iOS in the region, shaping messaging platform choices and user behavior.
Key SMS Features and Capabilities in El Salvador
El Salvador supports standard SMS features including concatenated messages and MMS conversion. Two-way messaging capabilities are restricted.
Two-way SMS Support
Major messaging providers do not support two-way SMS in El Salvador. This restriction impacts interactive messaging campaigns and automated response systems.
Concatenated Messages (Segmented SMS)
Support: Yes, concatenation is supported for most sender ID types.
Message length rules: Messages split after 160 characters for GSM-7 encoding or 70 characters for Unicode (UCS-2) encoding.
Encoding considerations: The system supports both GSM-7 and UCS-2 encodings, automatically splitting and rejoining messages based on character encoding.
Message Segmentation by Length
Message Length
GSM-7 Encoding
UCS-2 Encoding
Segments
Up to 160 chars
✓ Single
–
1
Up to 70 chars
–
✓ Single
1
161–306 chars
✓ Splits
–
2
71–134 chars
–
✓ Splits
2
307–459 chars
✓ Splits
–
3
135–201 chars
–
✓ Splits
3
MMS Support
The system automatically converts MMS messages to SMS with an embedded URL link to the media content, ensuring device compatibility while preserving rich media sharing.
Recipient Phone Number Compatibility
Number Portability
El Salvador supports number portability, letting users keep their phone numbers when switching carriers. Messages route correctly through the current carrier network without impacting delivery.
Sending SMS to Landlines
El Salvador does not support SMS to landline numbers. Landline message attempts return a 400 error (code 21614) with no delivery and no charge.
SMS Compliance and Regulatory Requirements in El Salvador
The Superintendencia General de Electricidad y Telecomunicaciones (SIGET) regulates El Salvador's telecommunications sector. Businesses must follow general consumer protection regulations and international messaging best practices while SMS marketing laws continue to develop.
Consent and Opt-In Requirements
Explicit Consent Requirements:
Obtain clear, documented opt-in consent before sending any marketing messages
Maintain detailed records of when and how consent was obtained
Include clear terms of service and privacy policy information during opt-in
Specify message frequency and content type during the consent process
Example Spanish Opt-In Message:
Code
¡Hola! Suscríbete para recibir ofertas exclusivas de [TU MARCA].
Frecuencia: 4–5 mensajes/mes. Responde STOP para cancelar.
Términos: [URL]
HELP/STOP and Other Commands
All SMS campaigns must support standard opt-out keywords:
Spanish: "STOP," "CANCELAR," "NO" for opt-out | "AYUDA" for assistance
English: "STOP," "UNSUBSCRIBE" for opt-out | "HELP" for assistance
Recognize commands in both Spanish and English (case-insensitive)
Send response messages in the same language as the received command
Example STOP Response (Spanish):
Code
Has sido dado de baja. No recibirás más mensajes de [TU MARCA].
Para ayuda: contacto@tumarca.com
Example HELP Response (Spanish):
Code
[TU MARCA] – Ofertas y actualizaciones. 4–5 msgs/mes.
STOP para cancelar. Ayuda: contacto@tumarca.com
Do Not Call / Do Not Disturb Registries
El Salvador does not maintain a centralized Do Not Call registry. Businesses must:
Maintain their own suppression lists
Honor opt-out requests within 24 hours
Implement database management to prevent messaging blocked numbers
Audit and clean contact lists regularly
Time Zone Sensitivity
El Salvador follows Central Standard Time (CST/GMT-6):
Recommended Sending Hours: 8:00 AM to 8:00 PM CST
Avoid Sending: Sundays and national holidays unless urgent
Emergency Messages: Can be sent 24/7 for critical notifications
Major El Salvador Holidays to Avoid:
January 1 – New Year's Day
March/April – Holy Week (Semana Santa)
May 1 – Labor Day
August 6 – Feast of El Salvador del Mundo (Patron Saint)
September 15 – Independence Day
November 2 – Day of the Dead
December 25 – Christmas
SMS Sender ID Types and Phone Number Options for El Salvador
Alphanumeric Sender ID
Operator network capability: Not supported by El Salvador mobile operators
Registration requirements: N/A
Sender ID preservation: Sender IDs are overwritten with either a shortcode or longcode outside the platform
Long Codes
Domestic vs. International:
Domestic long codes are supported but not available through international providers
International long codes are supported for cross-border messaging
Sender ID preservation: No, original sender IDs are not preserved
Provisioning time: 1–2 business days for international long codes
Use cases: Ideal for transactional messages and two-factor authentication
Short Codes
Support: Available and supported in El Salvador
Provisioning time: 8–12 weeks for approval and implementation
Use cases:
High-volume marketing campaigns
Customer service applications
Two-factor authentication
Alert systems
Short Code vs Long Code Comparison
Feature
Short Code
Long Code
Number Format
4–6 digits
+503XXXXXXXX
Provisioning Time
8–12 weeks
1–2 business days
Best For
High-volume campaigns
Transactional messages
Throughput
High (100+ msg/sec)
Moderate (1–10 msg/sec)
Two-way SMS
Not supported
Not supported
Recognition
High brand visibility
Lower visibility
Restricted SMS Content, Industries, and Use Cases
Prohibited Content:
Gambling and betting services
Adult content or explicit material
Unauthorized pharmaceutical promotions
Political campaign messages without proper authorization
Cryptocurrency and high-risk investment schemes
Content Filtering
Carrier Filtering Rules:
Messages containing blocked keywords are automatically filtered
URLs must be from approved domains
Message frequency limits per number are enforced
Tips to Avoid Blocking:
Avoid excessive punctuation (!!!, ???) and special characters
Use personalization tokens (name, account info) sparingly and only with explicit consent
Maintain consistent branding
Effective CTAs:
✓ "Reply YES to confirm your appointment"
✓ "Visit bit.ly/offer123 to claim your 20% discount"
✓ "Call us at +503-1234-5678 for support"
Ineffective CTAs:
✗ "Check our website for more info" (vague, no URL)
✗ "Act now!" (spammy, no specific action)
✗ "Click here" (no context)
Sending Frequency and Timing
Limit to 4–5 messages per month per recipient (industry best practice)
Implement error handling and monitoring with Winston or similar
Set up delivery receipt webhooks for real-time status tracking
Test throughput with small batches (100–500 messages)
Monitor carrier filtering rules and adjust content accordingly
Frequently Asked Questions
Q: Why is my delivery rate below 90%?
A: Check for invalid number formats (must be E.164: +503XXXXXXXX), content filtering by carriers (remove spam trigger words), or landline numbers in your list (not supported).
Q: How do I get my domain approved for URL inclusion?
A: Contact your SMS provider (Twilio, Sinch, etc.) to register your domain. Use established URL shorteners (bit.ly, tinyurl.com) as alternatives.
Q: Can I send promotional messages on Sundays?
A: While not legally prohibited, it's best practice to avoid Sundays and national holidays unless urgent.
Q: What happens if I exceed the rate limit?
A: You'll receive a 429 error. Implement exponential backoff (see examples above) to retry automatically.
Q: Do I need different sender IDs for different carriers?
A: No, the carrier or platform assigns sender IDs automatically in El Salvador since alphanumeric sender IDs are not supported.
Use a reputable SMS API provider like Twilio, Sinch, MessageBird, or Plivo. Ensure all phone numbers are in E.164 format (+503) and comply with local regulations and best practices for sending SMS in El Salvador. Remember to handle opt-outs and monitor delivery rates.
Both GSM-7 and UCS-2 encodings are supported in El Salvador. Messages are automatically split and rejoined based on the chosen encoding, with GSM-7 allowing 160 characters and UCS-2 allowing 70 characters before splitting.
Two-way SMS is not supported through major messaging providers, which limits interactive messaging campaigns and automated responses. This impacts businesses seeking real-time engagement with customers via SMS.
The recommended sending window is between 8:00 AM and 8:00 PM CST, avoiding Sundays and national holidays unless it's an emergency. Respecting local time zones and cultural sensitivities is essential for successful SMS campaigns in El Salvador.
Sending SMS to landlines in El Salvador is not supported. Attempts to do so will result in a 400 response error (code 21614). No message will be delivered, and no charges will be incurred.
You must support opt-out keywords like "STOP", "CANCELAR", "NO", "AYUDA", and "HELP" in both English and Spanish. Process opt-out requests within 24 hours, send a confirmation message, and maintain a centralized opt-out database for compliance.
While alphanumeric sender IDs are not supported, you can utilize long codes and short codes. International long codes are commonly used for transactional messages, while short codes are better suited for high-volume marketing campaigns and two-factor authentication in El Salvador.
Obtain explicit opt-in consent before sending marketing messages. Maintain records of consent, adhere to consumer protection regulations, and respect best practices for messaging, including honoring opt-out requests and avoiding prohibited content.
No, alphanumeric sender IDs are not supported by El Salvador mobile operators. Sender IDs will be overwritten with a short code or long code outside the platform.
Gambling, adult content, unauthorized pharmaceutical promotions, and political campaign messages without authorization are strictly prohibited. Cryptocurrency and high-risk investment schemes are also among the restricted content categories for SMS in El Salvador.
Standard rate limits vary per provider (e.g., Twilio: 250/second, Sinch: 30/second). Implement strategies like exponential backoff for retries, queue systems for high volume, batch messaging, and monitoring delivery rates to adjust sending speed.
Keep messages concise (under 160 characters), include clear call-to-actions, personalize thoughtfully, maintain consistent branding, limit frequency to 4-5 messages per recipient per month, and respect local holidays.
The Mobile Country Code (MCC) for El Salvador is 706. This is a crucial piece of information used for routing international SMS messages and identifying the country's mobile network.
Short codes are available in El Salvador, but the provisioning process takes 8-12 weeks for approval and implementation. They are ideal for high-volume marketing campaigns, customer service, two-factor authentication, and alert systems.
Several providers offer reliable SMS API integrations for El Salvador, including Twilio, Sinch, MessageBird, and Plivo. Each platform offers different features and pricing, allowing businesses to choose the best fit for their needs.
SMS Market Overview in El Salvador
Market Conditions: El Salvador maintains a robust mobile communications market with widespread SMS adoption. Three major operators dominate the ecosystem: Tigo, Movistar, and Claro. SMS remains critical for business communications and authentication despite growing WhatsApp usage, offering universal reach and proven reliability. Android devices significantly outnumber iOS in the region, shaping messaging platform choices and user behavior.
Key SMS Features and Capabilities in El Salvador
El Salvador supports standard SMS features including concatenated messages and MMS conversion. Two-way messaging capabilities are restricted.
Two-way SMS Support
Major messaging providers do not support two-way SMS in El Salvador. This restriction impacts interactive messaging campaigns and automated response systems.
Concatenated Messages (Segmented SMS)
Support: Yes, concatenation is supported for most sender ID types.
Message length rules: Messages split after 160 characters for GSM-7 encoding or 70 characters for Unicode (UCS-2) encoding.
Encoding considerations: The system supports both GSM-7 and UCS-2 encodings, automatically splitting and rejoining messages based on character encoding.
Message Segmentation by Length
MMS Support
The system automatically converts MMS messages to SMS with an embedded URL link to the media content, ensuring device compatibility while preserving rich media sharing.
Recipient Phone Number Compatibility
Number Portability
El Salvador supports number portability, letting users keep their phone numbers when switching carriers. Messages route correctly through the current carrier network without impacting delivery.
Sending SMS to Landlines
El Salvador does not support SMS to landline numbers. Landline message attempts return a 400 error (code 21614) with no delivery and no charge.
SMS Compliance and Regulatory Requirements in El Salvador
The Superintendencia General de Electricidad y Telecomunicaciones (SIGET) regulates El Salvador's telecommunications sector. Businesses must follow general consumer protection regulations and international messaging best practices while SMS marketing laws continue to develop.
Consent and Opt-In Requirements
Explicit Consent Requirements:
Example Spanish Opt-In Message:
HELP/STOP and Other Commands
All SMS campaigns must support standard opt-out keywords:
Example STOP Response (Spanish):
Example HELP Response (Spanish):
Do Not Call / Do Not Disturb Registries
El Salvador does not maintain a centralized Do Not Call registry. Businesses must:
Time Zone Sensitivity
El Salvador follows Central Standard Time (CST/GMT-6):
Major El Salvador Holidays to Avoid:
SMS Sender ID Types and Phone Number Options for El Salvador
Alphanumeric Sender ID
Operator network capability: Not supported by El Salvador mobile operators
Registration requirements: N/A
Sender ID preservation: Sender IDs are overwritten with either a shortcode or longcode outside the platform
Long Codes
Domestic vs. International:
Sender ID preservation: No, original sender IDs are not preserved
Provisioning time: 1–2 business days for international long codes
Use cases: Ideal for transactional messages and two-factor authentication
Short Codes
Support: Available and supported in El Salvador
Provisioning time: 8–12 weeks for approval and implementation
Use cases:
Short Code vs Long Code Comparison
Restricted SMS Content, Industries, and Use Cases
Prohibited Content:
Content Filtering
Carrier Filtering Rules:
Tips to Avoid Blocking:
Common Spam Trigger Words to Avoid:
Best Practices for Sending SMS in El Salvador
Messaging Strategy
Effective CTAs: ✓ "Reply YES to confirm your appointment" ✓ "Visit bit.ly/offer123 to claim your 20% discount" ✓ "Call us at +503-1234-5678 for support"
Ineffective CTAs: ✗ "Check our website for more info" (vague, no URL) ✗ "Act now!" (spammy, no specific action) ✗ "Click here" (no context)
Sending Frequency and Timing
Localization
Spanish SMS Templates:
Order Confirmation:
Appointment Reminder:
Two-Factor Authentication:
Opt-Out Management
Example Opt-Out Processing Workflow:
async function processOptOut(phoneNumber: string, keyword: string) { // 1. Add to suppression list await db.suppressionList.create({ phoneNumber, optOutDate: new Date(), keyword, source: 'SMS' }); // 2. Send confirmation const confirmMsg = keyword.match(/stop|cancelar|no/i) ? "Has sido dado de baja. No recibirás más mensajes." : "You have been unsubscribed. You will receive no further messages."; await sendSMS(phoneNumber, confirmMsg); // 3. Log event logger.info(`Opt-out processed: ${phoneNumber}`); }Testing and Monitoring
Acceptable Delivery Rate Benchmarks for El Salvador:
Troubleshooting Low Delivery Rates:
SMS API Integration Options for El Salvador
Twilio
Twilio provides a robust SMS API with comprehensive support for El Salvador messaging.
Authentication & Setup:
import { Twilio } from 'twilio'; // Initialize Twilio client const client = new Twilio(process.env.TWILIO_ACCOUNT_SID, process.env.TWILIO_AUTH_TOKEN); async function sendSMSToElSalvador(to: string, message: string) { try { // Ensure number is in E.164 format const formattedNumber = to.startsWith('+503') ? to : `+503${to}`; const response = await client.messages.create({ body: message, to: formattedNumber, from: process.env.TWILIO_PHONE_NUMBER, // Optional status callback URL 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; } }Common Twilio Error Codes:
Example Webhook Handler for Delivery Status:
import express from 'express'; const app = express(); app.use(express.urlencoded({ extended: false })); app.post('/status', (req, res) => { const { MessageSid, MessageStatus, To, ErrorCode } = req.body; console.log(`Message ${MessageSid} to ${To}: ${MessageStatus}`); if (ErrorCode) { console.error(`Error ${ErrorCode} occurred`); // Log to monitoring system } // Update database with delivery status db.messages.update({ sid: MessageSid }, { status: MessageStatus }); res.sendStatus(200); });Sinch
Sinch offers direct carrier connections in El Salvador with high deliverability rates.
Key Features:
import axios from 'axios'; interface SinchMessage { to: string[]; message: string; from: string; } async function sendSinchSMS(message: SinchMessage) { const SINCH_API_TOKEN = process.env.SINCH_API_TOKEN; const SINCH_SERVICE_PLAN_ID = process.env.SINCH_SERVICE_PLAN_ID; try { const response = await axios.post( `https://sms.api.sinch.com/xms/v1/${SINCH_SERVICE_PLAN_ID}/batches`, message, { headers: { 'Authorization': `Bearer ${SINCH_API_TOKEN}`, 'Content-Type': 'application/json' } } ); return response.data; } catch (error) { console.error('Sinch SMS Error:', error); throw error; } }Batch Optimization Guidelines:
MessageBird
MessageBird provides reliable SMS delivery with advanced features for El Salvador.
import messagebird from 'messagebird'; const messageBirdClient = messagebird(process.env.MESSAGEBIRD_API_KEY); interface MessageParams { recipient: string; message: string; originator: string; } function sendMessageBirdSMS({ recipient, message, originator }: MessageParams): Promise<any> { return new Promise((resolve, reject) => { messageBirdClient.messages.create({ originator: originator, recipients: [recipient], body: message, datacoding: 'auto' // Automatic encoding detection }, (err, response) => { if (err) { reject(err); return; } resolve(response); }); }); }Advanced Features:
Plivo
Plivo offers competitive rates and reliable delivery for El Salvador SMS.
import plivo from 'plivo'; const client = new plivo.Client( process.env.PLIVO_AUTH_ID, process.env.PLIVO_AUTH_TOKEN ); async function sendPlivoSMS(to: string, message: string) { try { const response = await client.messages.create({ src: process.env.PLIVO_PHONE_NUMBER, dst: to, text: message, // Optional parameters for El Salvador url: 'https://your-callback-url.com', method: 'POST' }); return response; } catch (error) { console.error('Plivo SMS Error:', error); throw error; } }API Provider Pricing Comparison for El Salvador
Prices are approximate and vary by volume commitments
API Rate Limits and Throughput
Standard Rate Limits:
Throughput Management Strategies:
Exponential Backoff Implementation:
async function sendWithRetry(sendFn: () => Promise<any>, maxRetries = 3) { for (let attempt = 0; attempt < maxRetries; attempt++) { try { return await sendFn(); } catch (error: any) { if (error.code === 429 && attempt < maxRetries - 1) { const delay = Math.pow(2, attempt) * 1000; // 1s, 2s, 4s console.log(`Rate limited. Retrying in ${delay}ms...`); await new Promise(resolve => setTimeout(resolve, delay)); } else { throw error; } } } }Queue System Example (Redis):
import Queue from 'bull'; const smsQueue = new Queue('sms-queue', { redis: { host: 'localhost', port: 6379 } }); // Add messages to queue smsQueue.add({ to: '+50312345678', message: 'Hello!' }, { attempts: 3, backoff: { type: 'exponential', delay: 2000 } }); // Process queue smsQueue.process(async (job) => { const { to, message } = job.data; return await sendSMS(to, message); });Error Handling and Reporting
Implement comprehensive logging and error tracking:
Common Error Codes Across Providers:
Example Winston Logging Configuration:
import winston from 'winston'; const logger = winston.createLogger({ level: 'info', format: winston.format.json(), transports: [ new winston.transports.File({ filename: 'error.log', level: 'error' }), new winston.transports.File({ filename: 'sms.log' }) ] }); // Log message attempts logger.info('SMS sent', { to: '+50312345678', provider: 'twilio', messageId: 'SM1234567890', status: 'queued' }); // Log errors logger.error('SMS failed', { to: '+50312345678', provider: 'twilio', errorCode: '30007', errorMessage: 'Message blocked by carrier' });Alert Setup Example:
// Monitor error rates async function checkErrorRates() { const last24Hours = new Date(Date.now() - 24 * 60 * 60 * 1000); const stats = await db.messages.aggregate([ { $match: { createdAt: { $gte: last24Hours } } }, { $group: { _id: null, total: { $sum: 1 }, errors: { $sum: { $cond: [{ $ne: ['$status', 'delivered'] }, 1, 0] } } }} ]); const errorRate = (stats[0].errors / stats[0].total) * 100; if (errorRate > 5) { // Send alert to monitoring system alerting.send({ severity: 'high', message: `SMS error rate is ${errorRate.toFixed(2)}% (threshold: 5%)`, data: stats[0] }); } } // Run every hour setInterval(checkErrorRates, 60 * 60 * 1000);Summary and Additional Resources
Key Takeaways:
Next Steps:
Frequently Asked Questions
Q: Why is my delivery rate below 90%? A: Check for invalid number formats (must be E.164: +503XXXXXXXX), content filtering by carriers (remove spam trigger words), or landline numbers in your list (not supported).
Q: How do I get my domain approved for URL inclusion? A: Contact your SMS provider (Twilio, Sinch, etc.) to register your domain. Use established URL shorteners (bit.ly, tinyurl.com) as alternatives.
Q: Can I send promotional messages on Sundays? A: While not legally prohibited, it's best practice to avoid Sundays and national holidays unless urgent.
Q: What happens if I exceed the rate limit? A: You'll receive a 429 error. Implement exponential backoff (see examples above) to retry automatically.
Q: Do I need different sender IDs for different carriers? A: No, the carrier or platform assigns sender IDs automatically in El Salvador since alphanumeric sender IDs are not supported.
Common Issues and Solutions
Additional Resources: