Peru SMS Best Practices, Compliance, and Features
Peru SMS Market Overview
Locale name: | Peru |
---|---|
ISO code: | PE |
Region | South America |
Mobile country code (MCC) | 716 |
Dialing Code | +51 |
Market Conditions: Peru has a vibrant mobile communications market with widespread SMS usage. The country's major mobile operators include Claro (América Móvil), Movistar (Telefónica), and Entel. While OTT messaging apps like WhatsApp are increasingly popular, SMS remains crucial for business communications and authentication services. Android devices dominate the market, though iOS maintains a significant presence in urban areas.
Key SMS Features and Capabilities in Peru
Peru offers standard SMS capabilities with support for concatenated messages and number portability, though two-way SMS functionality is limited.
Two-way SMS Support
Two-way SMS is not supported in Peru through standard API integrations. Businesses requiring interactive messaging capabilities should consider alternative communication channels or specialized local partnerships.
Concatenated Messages (Segmented SMS)
Support: Yes, concatenation is supported for most sender ID types, though support may vary by carrier.
Message length rules: Standard SMS messages are limited to 160 characters (GSM-7) or 70 characters (UCS-2) before splitting occurs.
Encoding considerations: Both GSM-7 and UCS-2 encoding are supported, with UCS-2 required for messages containing special characters or non-Latin alphabets.
MMS Support
MMS messages are automatically converted to SMS with an embedded URL link. This conversion ensures message delivery while maintaining rich media accessibility through web links. For optimal user experience, ensure media files are hosted on reliable, mobile-friendly platforms.
Recipient Phone Number Compatibility
Number Portability
Number portability is available in Peru, allowing users to keep their phone numbers when switching carriers. This feature does not significantly impact message delivery or routing, as the system automatically handles carrier identification.
Sending SMS to Landlines
Sending SMS to landline numbers is not supported in Peru. Attempts to send messages to landline numbers will result in a 400 response error (code 21614) through the API, with no message delivery and no charges incurred.
Compliance and Regulatory Guidelines for SMS in Peru
Peru's SMS communications are governed by the Personal Data Protection Law (PDPL) and overseen by the National Authority for Data Protection. The telecommunications regulator OSIPTEL provides additional oversight for mobile communications.
Consent and Opt-In
Explicit Consent Requirements:
- Obtain prior, informed, express, and unequivocal consent before sending marketing messages
- Document consent collection method and timestamp
- Maintain clear privacy policies that outline data usage
- Provide transparent opt-in mechanisms during user registration
Best Practices for Consent Collection:
- Use double opt-in verification for marketing lists
- Keep detailed records of consent acquisition
- Include clear terms and conditions during signup
- Regularly update consent records
HELP/STOP and Other Commands
- All SMS campaigns must support standard opt-out keywords:
- "STOP" or "PARA" (Spanish)
- "AYUDA" or "HELP" for assistance
- Support both English and Spanish commands
- Respond to opt-out requests within 24 hours
- Provide clear instructions in the local language (Spanish)
Do Not Call / Do Not Disturb Registries
While Peru does not maintain a centralized Do Not Call registry, businesses should:
- Maintain internal suppression lists
- Honor opt-out requests immediately
- Document all opt-out requests
- Regularly clean contact databases
- Implement automated opt-out processing
Time Zone Sensitivity
Peru operates in PET (UTC-5) timezone. Recommended messaging hours:
- Business Days: 8:00 AM to 8:00 PM PET
- Weekends: 9:00 AM to 6:00 PM PET
- Avoid messaging during national holidays
- Emergency messages exempt from time restrictions
Phone Numbers Options and SMS Sender Types for Peru
Alphanumeric Sender ID
Operator network capability: Supported
Registration requirements: Pre-registration not required
Sender ID preservation: No - IDs are overwritten with short or long codes
Usage notes: While alphanumeric sender IDs can be submitted, they will be converted to numeric formats by carriers
Long Codes
Domestic vs. International:
- Domestic long codes not supported
- International long codes supported but with limitations Sender ID preservation: No - original sender IDs are not preserved Provisioning time: Immediate to 24 hours Use cases: Transactional messages, alerts, notifications
Short Codes
Support: Available through local carriers Provisioning time: 8-12 weeks Use cases:
- High-volume marketing campaigns
- Two-factor authentication
- Customer service messaging
- Promotional broadcasts
Restricted SMS Content, Industries, and Use Cases
Restricted Industries:
- Gambling and betting services
- Adult content or services
- Unauthorized financial services
- Unregistered pharmaceutical products
Regulated Industries:
- Financial services require additional disclaimers
- Healthcare messages must comply with HIPAA-equivalent standards
- Political messaging requires clear sender identification
Content Filtering
Carrier Filtering Rules:
- Messages containing certain keywords may be blocked
- URLs should be from approved domains
- Excessive punctuation may trigger spam filters
Best Practices to Avoid Blocking:
- Avoid URL shorteners
- Limit special characters
- Use clear, professional language
- Maintain consistent sending patterns
- Include clear business identification
Best Practices for Sending SMS in Peru
Messaging Strategy
- Keep messages under 160 characters when possible
- Include clear call-to-actions
- Personalize messages using recipient's name
- Maintain consistent sender identification
Sending Frequency and Timing
- Limit to 4-5 messages per month per recipient
- Respect local holidays and cultural events
- Maintain consistent sending patterns
- Allow minimum 24-hour gaps between marketing messages
Localization
- Primary language: Spanish
- Consider regional dialects for different areas
- Offer bilingual options when appropriate
- Use local date and time formats
Opt-Out Management
- Process opt-outs within 24 hours
- Maintain centralized opt-out database
- Confirm opt-out with one final message
- Regular database cleaning
Testing and Monitoring
- Test across all major carriers (Claro, Movistar, Entel)
- Monitor delivery rates by carrier
- Track engagement metrics
- Regular A/B testing of message content
SMS API integrations for Peru
Twilio
Twilio provides a robust SMS API with comprehensive support for Peru. Authentication uses Account SID and Auth Token credentials.
import * as Twilio from 'twilio';
// Initialize Twilio client with credentials
const client = new Twilio(process.env.TWILIO_ACCOUNT_SID, process.env.TWILIO_AUTH_TOKEN);
// Function to send SMS to Peru
async function sendSMSToPeru(
to: string,
message: string,
from: string
): Promise<void> {
try {
// Ensure Peru number format: +51XXXXXXXXX
const formattedNumber = to.startsWith('+51') ? to : `+51${to}`;
const response = await client.messages.create({
body: message,
from: from, // Your Twilio number
to: formattedNumber,
// Optional parameters for delivery tracking
statusCallback: 'https://your-webhook.com/status'
});
console.log(`Message sent successfully! SID: ${response.sid}`);
} catch (error) {
console.error('Error sending message:', error);
throw error;
}
}
Sinch
Sinch offers direct carrier connections in Peru with support for high-volume messaging.
import axios from 'axios';
class SinchSMSClient {
private readonly apiToken: string;
private readonly serviceId: string;
private readonly baseUrl: string = 'https://sms.api.sinch.com/xms/v1';
constructor(apiToken: string, serviceId: string) {
this.apiToken = apiToken;
this.serviceId = serviceId;
}
async sendSMS(to: string, message: string): Promise<void> {
try {
const response = await axios.post(
`${this.baseUrl}/${this.serviceId}/batches`,
{
from: 'YourSenderID',
to: [to],
body: message,
delivery_report: 'summary'
},
{
headers: {
'Authorization': `Bearer ${this.apiToken}`,
'Content-Type': 'application/json'
}
}
);
console.log('Message sent:', response.data.id);
} catch (error) {
console.error('Sinch API error:', error);
throw error;
}
}
}
MessageBird
MessageBird provides reliable SMS delivery in Peru with advanced features for message tracking.
import messagebird from 'messagebird';
class MessageBirdClient {
private client: any;
constructor(apiKey: string) {
this.client = messagebird(apiKey);
}
sendSMS(
to: string,
message: string,
originator: string
): Promise<any> {
return new Promise((resolve, reject) => {
// Validate Peru phone number format
const phoneRegex = /^\+51\d{9}$/;
if (!phoneRegex.test(to)) {
reject(new Error('Invalid Peru phone number format'));
return;
}
this.client.messages.create({
originator: originator,
recipients: [to],
body: message,
datacoding: 'auto' // Automatic encoding detection
}, (err: any, response: any) => {
if (err) {
reject(err);
} else {
resolve(response);
}
});
});
}
}
Plivo
Plivo offers competitive rates and reliable delivery for Peru SMS messaging.
import plivo from 'plivo';
class PlivoSMSClient {
private client: any;
constructor(authId: string, authToken: string) {
this.client = new plivo.Client(authId, authToken);
}
async sendSMS(
src: string,
dst: string,
text: string
): Promise<void> {
try {
const response = await this.client.messages.create({
src: src, // Your Plivo number
dst: dst, // Destination number in Peru
text: text,
// Optional parameters
url: 'https://your-webhook.com/status',
method: 'POST'
});
console.log('Message sent:', response.messageUuid);
} catch (error) {
console.error('Plivo API error:', error);
throw error;
}
}
}
API Rate Limits and Throughput
- Twilio: 250 messages per second
- Sinch: 100 messages per second
- MessageBird: 150 messages per second
- Plivo: 200 messages per second
Throughput Management Strategies:
- Implement queue systems for high-volume sending
- Use batch APIs when available
- Monitor rate limit headers
- Implement exponential backoff for retries
Error Handling and Reporting
- Implement comprehensive logging
- Monitor delivery receipts
- Track common error codes
- Set up automated alerts for failure thresholds
Recap and Additional Resources
Key Takeaways
-
Compliance Priorities
- Obtain explicit consent
- Honor opt-out requests
- Maintain clean contact lists
-
Technical Best Practices
- Use proper phone number formatting
- Implement retry logic
- Monitor delivery rates
-
Localization Requirements
- Support Spanish language
- Respect local time zones
- Consider cultural factors
Next Steps
- Review OSIPTEL regulations
- Consult with local legal counsel
- Set up test accounts with SMS providers
- Implement monitoring systems