Brazil SMS Best Practices, Compliance, and Features
Brazil SMS Market Overview
Locale name: | Brazil |
---|---|
ISO code: | BR |
Region | South America |
Mobile country code (MCC) | 724 |
Dialing Code | +55 |
Market Conditions: Brazil has a thriving mobile market with high smartphone penetration (75.6% as of 2021) and strong SMS usage alongside popular OTT apps like WhatsApp. The country's major mobile operators include Vivo, TIM, Claro, and Oi. Android devices dominate the market, accounting for approximately 85% of mobile devices, while iOS devices make up roughly 15%. The e-commerce sector is particularly active, with businesses heavily utilizing SMS for customer communications and authentication.
Key SMS Features and Capabilities in Brazil
Brazil offers comprehensive SMS capabilities including two-way messaging, concatenated messages, and MMS-to-SMS conversion, with strong support across all major carriers.
Two-way SMS Support
Brazil fully supports two-way SMS messaging across all major carriers. There are no specific restrictions beyond standard compliance requirements, making it ideal for interactive messaging campaigns and customer support.
Concatenated Messages (Segmented SMS)
Support: Yes, concatenation is supported across most carriers, though some limitations exist for certain sender ID types.
Message length rules:
- NEXTEL: 140 characters per segment
- All other carriers: 160 characters per segment
Encoding considerations: GSM-7 encoding is standard, while UCS-2 is supported by most carriers except Oi, NEXTEL, and CTBC (Algar).
MMS Support
MMS messages are automatically converted to SMS with an embedded URL link. This ensures compatibility across all carriers while still allowing rich media content to be shared effectively through linked resources.
Recipient Phone Number Compatibility
Number Portability
Number portability is fully available in Brazil. This feature allows users to keep their phone numbers when switching between different network providers, with no impact on SMS delivery or routing.
Sending SMS to Landlines
Sending SMS to landline numbers is not supported in Brazil. Attempts to send messages to landline numbers will result in a 400 response error (code 21614) through the REST API, with no message logging or charges applied.
Compliance and Regulatory Guidelines for SMS in Brazil
Brazil's SMS communications are governed by the Brazilian General Data Protection Law (LGPD) and overseen by the National Telecommunications Agency (ANATEL). These regulations emphasize data privacy, consumer rights, and transparent communication practices.
Consent and Opt-In
Explicit Consent Requirements:
- Written or digital confirmation of opt-in must be obtained before sending marketing messages
- Consent records must be maintained and easily accessible
- Purpose of communication must be clearly stated during opt-in
- Separate consent required for different types of communications
Best practices for obtaining consent:
- Use double opt-in verification
- Maintain detailed consent logs including timestamp and method
- Provide clear terms and conditions
- Allow easy access to privacy policies
HELP/STOP and Other Commands
- All SMS campaigns must support standard opt-out keywords:
- "PARE" (Stop)
- "SAIR" (Exit)
- "AJUDA" (Help)
- Messages must be in Portuguese
- Response to HELP/STOP commands must be immediate and free of charge
- Confirmation of opt-out must be sent within 24 hours
Do Not Call / Do Not Disturb Registries
Brazil does not maintain a centralized DND registry. However, businesses must:
- Maintain their own suppression lists
- Honor opt-out requests within 24 hours
- Keep records of blocked numbers
- Implement proactive filtering systems to prevent messaging to opted-out users
Time Zone Sensitivity
Time Restrictions:
- Marketing messages prohibited outside 9:00-22:00 local time
- No marketing messages allowed on Sundays
- Brazil spans three time zones - must respect local time in each zone
- Emergency and transactional messages exempt from time restrictions
Phone Numbers Options and SMS Sender Types for Brazil
Alphanumeric Sender ID
Operator network capability: Supported (Optional)
Registration requirements:
- Pre-registration available for TIM, CLARO, and VIVO networks
- 10-week provisioning time
- Uppercase Sender ID recommended (required for VIVO)
Sender ID preservation: Yes, preserved across supported networks
Long Codes
Domestic vs. International:
- Domestic: Supported for P2P messaging only
- International: Not supported directly
Sender ID preservation: - Domestic: Yes
- International: No, may be overwritten with random codes
Provisioning time: Immediate for domestic numbers
Use cases: Person-to-person communications, customer service
Short Codes
Support: Fully supported across all major carriers
Provisioning time: 2-4 weeks
Use cases:
- Marketing campaigns
- Two-factor authentication
- Customer notifications
- High-volume messaging
Restricted SMS Content, Industries, and Use Cases
Prohibited Content:
- Adult content
- Gambling services
- Political messages
- Religious content
- Controlled substances
- Cannabis-related content
- Contest promotions
- Telecommunication services
Content Filtering
Carrier Filtering Rules:
- Oi, NEXTEL, and CTBC (Algar) don't support Unicode
- Accented characters automatically converted to ASCII
- M2M numbers handled on best-effort basis
Tips to Avoid Blocking:
- Use plain text without special characters
- Avoid URL shorteners
- Keep message length within carrier limits
- Use registered sender IDs
- Maintain consistent sending patterns
Best Practices for Sending SMS in Brazil
Messaging Strategy
- Keep messages under 160 characters when possible
- Include clear call-to-action
- Use personalization tokens strategically
- Maintain consistent brand voice
Sending Frequency and Timing
- Limit to 2-3 messages per week per recipient
- Respect time zone differences
- Avoid major holidays unless essential
- Space out bulk campaigns to prevent network congestion
Localization
- Default to Portuguese for all messages
- Use formal Portuguese ("vocĂȘ" instead of "tu")
- Consider regional language variations
- Provide language preference options
Opt-Out Management
- Process opt-outs in real-time
- Maintain centralized opt-out database
- Confirm opt-out status to users
- Regular audit of opt-out lists
Testing and Monitoring
- Test across all major carriers (Vivo, TIM, Claro, Oi)
- Monitor delivery rates by carrier
- Track engagement metrics
- Regular testing of opt-out functionality
SMS API integrations for Brazil
Twilio
Twilio provides a robust SMS API with specific support for Brazil's messaging requirements. Authentication uses account SID and auth token credentials.
import { 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
);
// Function to send SMS to Brazil
async function sendSMSToBrazil(
to: string,
message: string
): Promise<void> {
try {
// Create message with Brazil-specific formatting
const response = await client.messages.create({
to: `+55${to}`, // Brazil country code
from: process.env.TWILIO_PHONE_NUMBER,
body: message,
// Optional: Schedule message within allowed hours (9:00-22:00)
scheduleType: 'fixed',
sendAt: new Date('2024-01-01T13:00:00-03:00') // Brazil timezone
});
console.log(`Message sent successfully: ${response.sid}`);
} catch (error) {
console.error('Error sending message:', error);
}
}
Sinch
Sinch offers direct carrier connections in Brazil with support for high-volume messaging.
import { SinchClient } from '@sinch/sdk-core';
// Initialize Sinch client
const sinch = new SinchClient({
servicePlanId: process.env.SINCH_SERVICE_PLAN_ID,
apiToken: process.env.SINCH_API_TOKEN,
smsRegion: 'br' // Specify Brazil region
});
// Function to send batch SMS
async function sendBatchSMS(
recipients: string[],
message: string
): Promise<void> {
try {
const response = await sinch.sms.batches.create({
body: message,
recipients: recipients.map(num => `+55${num}`),
deliveryReport: 'summary', // Get delivery statistics
parameters: {
// Support for Brazilian Portuguese characters
encoding: 'auto'
}
});
console.log(`Batch ID: ${response.id}`);
} catch (error) {
console.error('Batch sending failed:', error);
}
}
MessageBird
MessageBird provides reliable SMS delivery in Brazil with support for alphanumeric sender IDs.
import { MessageBird } from 'messagebird';
// Initialize MessageBird client
const messagebird = new MessageBird(process.env.MESSAGEBIRD_API_KEY);
// Function to send SMS with delivery tracking
async function sendTrackedSMS(
recipient: string,
message: string
): Promise<void> {
const params = {
originator: 'YourBrand', // Alphanumeric sender ID
recipients: [`+55${recipient}`],
body: message,
reportUrl: 'https://your-webhook.com/delivery-reports'
};
try {
const response = await new Promise((resolve, reject) => {
messagebird.messages.create(params, (err, response) => {
if (err) reject(err);
else resolve(response);
});
});
console.log('Message sent:', response);
} catch (error) {
console.error('Sending failed:', error);
}
}
Plivo
Plivo offers advanced SMS features with support for Unicode and concatenated messages.
import { Client } from 'plivo';
// Initialize Plivo client
const client = new Client(
process.env.PLIVO_AUTH_ID,
process.env.PLIVO_AUTH_TOKEN
);
// Function to send Unicode SMS
async function sendUnicodeSMS(
to: string,
message: string
): Promise<void> {
try {
const response = await client.messages.create({
src: process.env.PLIVO_PHONE_NUMBER,
dst: `+55${to}`,
text: message,
type: 'unicode', // Support for Portuguese special characters
url: 'https://your-webhook.com/status' // Status callback
});
console.log('Message UUID:', response.messageUuid);
} catch (error) {
console.error('Message sending failed:', error);
}
}
API Rate Limits and Throughput
- Default rate limits vary by provider (typically 1-10 messages per second)
- Implement exponential backoff for retry logic
- Use batch APIs for high-volume sending
- Queue messages during peak hours
Throughput Management Strategies:
- Implement message queuing system
- Use batch APIs when possible
- Monitor delivery rates and adjust sending speed
- Distribute load across multiple sender IDs
Error Handling and Reporting
- Implement comprehensive logging
- Monitor delivery receipts
- Track carrier responses
- Set up automated alerts for error thresholds
Recap and Additional Resources
Key Takeaways:
- Obtain explicit consent before sending marketing messages
- Respect time zone restrictions (9:00-22:00 local time)
- Support Portuguese language opt-out commands
- Implement proper error handling and monitoring
Next Steps:
- Review LGPD compliance requirements
- Set up proper consent management systems
- Implement message scheduling within allowed hours
- Test delivery across all major carriers
Additional Information: