Mexico SMS Best Practices, Compliance, and Features
Mexico SMS Market Overview
Locale name: | Mexico |
---|---|
ISO code: | MX |
Region | North America |
Mobile country code (MCC) | 334 |
Dialing Code | +52 |
Market Conditions: Mexico has a vibrant mobile messaging ecosystem with high SMS adoption rates alongside popular OTT messaging apps like WhatsApp. The market is dominated by three major mobile operators: Telcel (América Móvil), Movistar (Telefónica), and AT&T Mexico. While OTT messaging apps are widely used, SMS remains crucial for business communications, particularly for verification codes, alerts, and notifications. The mobile market shows a relatively even split between Android and iOS devices, with Android having a slight edge in market share.
Key SMS Features and Capabilities in Mexico
Mexico supports a comprehensive range of SMS features including two-way messaging, concatenated messages, and number portability, though MMS is handled through SMS conversion with URL links.
Two-way SMS Support
Yes, Mexico fully supports two-way SMS communications.
No special restrictions apply to two-way messaging, making it suitable for interactive business communications.
Concatenated Messages (Segmented SMS)
Support: Yes, concatenation is supported across Mexican carriers, though support may vary by sender ID type.
Message length rules: 160 ASCII characters per message segment before splitting occurs.
Encoding considerations: Messages use GSM-7 encoding for standard ASCII characters. For messages containing special characters or Unicode, UCS-2 encoding is used, reducing the character limit to 70 per segment.
MMS Support
MMS messages are automatically converted to SMS with an embedded URL link pointing to the multimedia content. This ensures compatibility across all carriers while maintaining the ability to share rich media content. Best Practice: When sending multimedia content, ensure the URL is shortened and clearly labeled to encourage recipient engagement.
Recipient Phone Number Compatibility
Number Portability
Yes, number portability is available in Mexico.
While it doesn't significantly impact delivery, carriers handle routing automatically through a central database to ensure messages reach the correct recipient regardless of their current carrier.
Sending SMS to Landlines
No, sending SMS to landline numbers is not possible in Mexico.
Attempts to send SMS to landline numbers will result in a 400 response error (code 21614), the message won't appear in logs, and no charges will be incurred.
Compliance and Regulatory Guidelines for SMS in Mexico
Mexico's SMS communications are regulated by the Federal Telecommunications Institute (IFT) and must comply with the Federal Consumer Protection Law. The Federal Institute for Access to Information and Data Protection (INAI) oversees data privacy aspects of SMS communications.
Consent and Opt-In
Explicit consent is mandatory before sending any marketing or non-essential messages to Mexican recipients. Best practices for obtaining and documenting consent include:
- Collecting written or electronic confirmation of opt-in
- Maintaining detailed records of when and how consent was obtained
- Clearly stating the types of messages recipients will receive
- Providing transparent information about message frequency
- Documenting the specific phone number that gave consent
HELP/STOP and Other Commands
- All SMS campaigns must support both "ALTO" (STOP) and "AYUDA" (HELP) commands in Spanish
- Keywords must be prominently displayed in the first message sent to new subscribers
- Response to STOP commands must be immediate and confirmed
- HELP responses should include customer service contact information in Spanish
Do Not Call / Do Not Disturb Registries
Mexico maintains the Public Registry of Telecommunications Users (REPEP), managed by the IFT.
- Businesses must check their contact lists against REPEP before sending campaigns
- Registration on REPEP is valid for two years
- Best Practice: Implement automated REPEP checking before each campaign
- Maintain internal suppression lists of opted-out numbers
- Update suppression lists across all platforms within 24 hours of receiving opt-out requests
Time Zone Sensitivity
- Restricted Hours: Avoid sending messages between 9:00 PM and 9:00 AM local time
- Consider Mexico's multiple time zones when scheduling campaigns
- Exception: Critical alerts and authentication messages may be sent 24/7
- Best Practice: Schedule routine messages between 10:00 AM and 8:00 PM local time
Phone Numbers Options and SMS Sender Types for Mexico
Alphanumeric Sender ID
Operator network capability: Supported with restrictions
Registration requirements: Pre-registration required for Telcel and Movistar networks; dynamic usage supported
Sender ID preservation: Yes for registered IDs; unregistered IDs are replaced with short codes
Long Codes
Domestic vs. International: Both supported with different restrictions
- Domestic: Limited to AT&T Mexico for direct delivery
- International: Supported but sender ID may be modified
Sender ID preservation:
- Domestic: Yes
- International: No, typically replaced with short code
Provisioning time: Immediate for international; varies for domestic Use cases:
- Domestic: Primarily for OTP and transactional messages
- International: General messaging with sender ID limitations
Short Codes
Support: Yes, widely supported across all carriers
Provisioning time: Approximately 8 weeks
Use cases:
- High-volume marketing campaigns
- Two-factor authentication
- Customer service interactions
- Promotional messages
Restricted SMS Content, Industries, and Use Cases
Prohibited Content and Industries:
- Firearms and weapons
- Gambling and betting
- Adult content
- Predatory loans
- Lead generation
- Text-to-pay services
- Controlled substances
- Cannabis products
- Alcohol-related content
- Political campaign messages
Content Filtering
Known Carrier Filtering Rules:
- URLs from unregistered senders are often blocked
- International brand names may trigger filtering
- High-frequency messaging from the same source
Tips to Avoid Blocking:
- Register sender IDs for URL-containing messages
- Avoid excessive punctuation and all-caps text
- Use consistent sender IDs for campaigns
- Maintain steady message volumes
- Include clear opt-out instructions
Best Practices for Sending SMS in Mexico
Messaging Strategy
- Keep messages under 160 characters when possible
- Include clear calls-to-action
- Personalize messages using recipient's name or relevant details
- Maintain consistent branding across campaigns
Sending Frequency and Timing
- Limit to 3-4 messages per week per recipient
- Respect Mexican holidays and cultural events
- Implement frequency capping per user
- Monitor engagement rates to optimize timing
Localization
- Use Spanish as the primary language
- Consider regional Spanish variations
- Offer bilingual options when appropriate
- Test message clarity with native speakers
Opt-Out Management
- Process opt-outs within 24 hours
- Maintain centralized opt-out database
- Confirm opt-out requests with acknowledgment message
- Regular audit of opt-out list compliance
Testing and Monitoring
- Test across all major carriers (Telcel, Movistar, AT&T)
- Monitor delivery rates by carrier
- Track engagement metrics by message type
- Regular testing of opt-out functionality
- Monitor and analyze bounce rates
SMS API integrations for Mexico
Twilio
Twilio provides a robust REST API for sending SMS messages to Mexico. Authentication uses your Account SID and Auth Token.
Key Parameters:
from
: Your Twilio phone number or registered sender IDto
: Recipient number in E.164 format (+52XXXXXXXXXX)body
: Message content (supports Unicode)
import { Twilio } from 'twilio';
// Initialize Twilio client
const client = new Twilio(
process.env.TWILIO_ACCOUNT_SID,
process.env.TWILIO_AUTH_TOKEN
);
async function sendSMSToMexico(
to: string,
message: string
): Promise<void> {
try {
// Ensure number is in E.164 format
const formattedNumber = to.startsWith('+52') ? to : `+52${to}`;
const response = await client.messages.create({
body: message,
from: process.env.TWILIO_PHONE_NUMBER,
to: formattedNumber,
// Optional: Add status callback URL
statusCallback: 'https://your-domain.com/sms/status'
});
console.log(`Message sent successfully! SID: ${response.sid}`);
} catch (error) {
console.error('Error sending message:', error);
throw error;
}
}
Sinch
Sinch uses API token authentication and provides a REST API for SMS delivery.
Key Parameters:
from
: Sender ID or phone numberto
: Array of recipient numbersbody
: Message content
import axios from 'axios';
interface SinchSMSResponse {
id: string;
status: string;
}
async function sendSinchSMS(
to: string,
message: string
): Promise<SinchSMSResponse> {
const API_TOKEN = process.env.SINCH_API_TOKEN;
const SERVICE_PLAN_ID = process.env.SINCH_SERVICE_PLAN_ID;
try {
const response = await axios.post(
`https://sms.api.sinch.com/xms/v1/${SERVICE_PLAN_ID}/batches`,
{
from: process.env.SINCH_SENDER_ID,
to: [to],
body: message
},
{
headers: {
'Authorization': `Bearer ${API_TOKEN}`,
'Content-Type': 'application/json'
}
}
);
return response.data;
} catch (error) {
console.error('Sinch SMS Error:', error);
throw error;
}
}
MessageBird
MessageBird offers a straightforward REST API with API key authentication.
Key Parameters:
originator
: Sender ID (alphanumeric or phone number)recipients
: Array of recipient numberscontent
: Message content
import { MessageBirdClient, Message } from 'messagebird';
class MessageBirdService {
private client: MessageBirdClient;
constructor(apiKey: string) {
this.client = new MessageBirdClient(apiKey);
}
async sendSMS(
to: string,
message: string
): Promise<Message> {
return new Promise((resolve, reject) => {
this.client.messages.create({
originator: process.env.MESSAGEBIRD_ORIGINATOR,
recipients: [to],
content: {
type: 'text',
text: message
}
}, (err, response) => {
if (err) {
reject(err);
} else {
resolve(response);
}
});
});
}
}
Plivo
Plivo uses basic authentication with Auth ID and Auth Token.
Key Parameters:
src
: Source number or sender IDdst
: Destination numbertext
: Message content
import * as plivo from 'plivo';
class PlivoService {
private client: plivo.Client;
constructor() {
this.client = new plivo.Client(
process.env.PLIVO_AUTH_ID,
process.env.PLIVO_AUTH_TOKEN
);
}
async sendSMS(
to: string,
message: string
): Promise<any> {
try {
const response = await this.client.messages.create({
src: process.env.PLIVO_SOURCE_NUMBER,
dst: to,
text: message,
// Optional: URL to receive delivery reports
url: 'https://your-domain.com/delivery-report'
});
return response;
} catch (error) {
console.error('Plivo SMS Error:', error);
throw error;
}
}
}
API Rate Limits and Throughput
Rate Limits for Mexico:
- Standard rate: 1 message per second per source number
- Burst rate: Up to 30 messages per second with proper queuing
- Daily limits vary by carrier and sender type
Throughput Management Strategies:
- Implement exponential backoff for retries
- Use message queuing systems (Redis, RabbitMQ)
- Batch messages for bulk sending
- Monitor carrier capacity in real-time
Error Handling and Reporting
Logging Best Practices:
- Log all API requests and responses
- Track delivery receipts and status updates
- Monitor error rates by carrier
- Implement automated alerts for high failure rates
Troubleshooting Tips:
- Verify number formatting (E.164)
- Check sender ID registration status
- Monitor message content for filtered terms
- Track carrier-specific error codes
Recap and Additional Resources
Key Takeaways:
- Always obtain explicit consent
- Use registered sender IDs for better deliverability
- Respect time windows (9 AM - 9 PM)
- Implement proper opt-out handling
- Monitor delivery rates and adjust accordingly
Next Steps:
- Review IFT regulations for SMS messaging
- Implement proper consent collection
- Set up delivery monitoring
- Test across all major carriers
Additional Information: