sms compliance
sms compliance
Réunion Island SMS Guide: Compliance, Regulations & API Integration for French Overseas Department
Complete guide to SMS messaging in Réunion (France). Learn ARCEP regulations, GDPR compliance, time restrictions, operator requirements, and API integration with Twilio, Sinch, Plivo, and MessageBird.
Réunion (France) SMS Best Practices, Compliance, and Features
SMS Market Overview: Réunion Island (France)
| Locale name: | Réunion (France) |
|---|---|
| ISO code: | RE |
| Region | Middle East & Africa |
| Mobile country code (MCC) | 647 |
| Dialing Code | +262 |
SMS Market in Réunion: Réunion, as a French overseas department, maintains robust mobile telecommunications infrastructure serving over 860,000 residents. The market is served by 4 licensed operators as of May 1, 2025 (per ARCEP frequency allocations): Orange Réunion, SRR (SFR Réunion, holding over 50% market share), Telco OI (operating as Free Mobile and Only brands, acquired by Iliad Group in 2016), and Zeop Mobile. While SMS remains crucial for business communications and authentication, OTT messaging apps like WhatsApp and Facebook Messenger have significant penetration. Android devices hold majority market share, though iOS devices maintain strong presence among higher-income consumers.
SMS Pricing: Based on 2025 market data, SMS pricing to Réunion ranges from $0.10198 to $0.1911 per message across major providers (Sent.dm pricing comparison). Plivo offers the most competitive base rate at $0.10198, followed by Sinch ($0.109), Infobip ($0.13), and Twilio ($0.1911). Volume discounts are available from all providers, with businesses sending 100,000+ messages monthly typically securing 20-40% below standard pay-as-you-go pricing. Mobile penetration exceeds 100% of the population, with 4G/LTE coverage across all major population centers since 2017.
SMS Features and Technical Capabilities in Réunion
| Feature | Support Status | Details |
|---|---|---|
| Two-way SMS | Not Supported | Use dedicated short codes or alternative messaging solutions |
| Concatenated Messages | Supported | Availability may vary by sender ID type |
| MMS | Converted to SMS | Automatically converted to SMS with embedded URL link |
| Number Portability | Not Available | Numbers remain tied to original carriers |
| SMS to Landlines | Not Supported | Returns error code 21614 with no charge |
| Alphanumeric Sender ID | Supported | Up to 11 characters, no registration required |
| Short Codes | Supported | 8-12 weeks provisioning time through operators |
Réunion supports most modern SMS features with some limitations, operating under French telecommunications regulations while maintaining its distinct market characteristics.
Two-way SMS Support
Two-way SMS is not supported in Réunion through standard channels. Technical reason: All French mobile operators have contractually prohibited the delivery of A2P (Application-to-Person) services to their customers using standard mobile phone numbers (Twilio France guidelines). This restriction prevents businesses from receiving replies on standard long codes. If you require two-way communication, consider alternative messaging solutions such as WhatsApp Business API, dedicated short code services (which support MO/MT messaging), or other OTT messaging platforms with bidirectional support.
Concatenated Messages (Segmented SMS)
Support: Yes, concatenated messages are supported, though availability may vary by sender ID type. Message length rules: Standard SMS length of 160 characters for GSM-7 encoding, or 70 characters for Unicode (UCS-2) encoding. Encoding considerations: Both GSM-7 and UCS-2 encodings are supported. Messages using special characters automatically use UCS-2 encoding, reducing the character limit per segment.
Segmentation example: A 200-character message using GSM-7 encoding splits into 2 segments (153 characters each due to 7-character header overhead). The same message with special characters requiring UCS-2 splits into 3 segments (67 characters each with 3-character header). Recipients see the message reassembled as one continuous text.
MMS Support
MMS messages are automatically converted to SMS with an embedded URL link. This ensures compatibility across all devices while still allowing rich media content to be shared through a web-based interface. Technical process: When you send an MMS, the provider uploads the media to a secure server and generates a short URL. The SMS contains this URL (typically formatted as https://provider.com/v/abc123), which recipients click to view images, videos, or audio in their mobile browser.
Recipient Phone Number Compatibility
Number Portability
Number portability is not available in Réunion. This simplifies message routing as numbers remain tied to their original carriers. Routing implications: Without MNP (Mobile Number Portability), SMS routing is more predictable and delivery rates are typically higher (95%+ vs. 90-93% in markets with MNP) because the number prefix directly identifies the destination operator, eliminating lookup delays and routing errors common in ported number scenarios.
Sending SMS to Landlines
Sending SMS to landline numbers is not supported in Réunion. Attempts to send messages to landline numbers will result in a 400 response with error code 21614, and no charges will be applied to your account.
SMS Compliance and Regulatory Requirements for Réunion (France)
As a French overseas department, Réunion follows French telecommunications regulations, overseen by ARCEP (Autorité de Régulation des Communications Électroniques et des Postes) and CNIL (Commission Nationale de l'Informatique et des Libertés). Ensure all your SMS communications comply with both French national and EU data protection laws, including GDPR.
Consent and Opt-In
Explicit Consent Requirements:
- Obtain written or electronic consent before sending marketing messages
- Ensure consent is freely given, specific, informed, and unambiguous
- Maintain records of consent and keep them easily accessible
- Clearly state the purpose of messaging at the time of consent
Compliant Opt-In Form Example:
☐ Yes, I agree to receive promotional SMS messages from [Company Name]
about special offers, new products, and exclusive deals.
Message frequency: Up to 4 messages per month
Standard message and data rates may apply
You can opt out anytime by replying STOP
View our Privacy Policy: [URL]
Best Practices for Documentation:
- Maintain detailed records of when and how you obtained consent
- Store consent data in a secure, GDPR-compliant database
- Implement double opt-in processes for marketing lists
- Conduct regular audits of consent records
HELP/STOP and Other Commands
- Include clear opt-out instructions in all marketing messages
- Support the STOP command in both French and English
- Honor these common keywords:
- STOP, ARRÊT, DÉSABONNEMENT (unsubscribe)
- AIDE, HELP (help)
- Respond to STOP commands immediately and confirm the opt-out
Compliant Message Template:
[Company]: Profitez de 20% de réduction ce weekend!
Visitez: example.com/promo
Répondez STOP pour vous désabonner
Do Not Call / Do Not Disturb Registries
Réunion follows the French Bloctel system for telemarketing opt-outs. Important: Bloctel applies only to voice telephone marketing calls and does NOT cover SMS marketing. SMS/MMS messages are governed by separate opt-in consent requirements under GDPR and French data protection law enforced by CNIL.
For SMS marketing, you must:
- Obtain prior opt-in consent before sending marketing messages
- Use designated commercial SMS number prefixes (0162, 0163, 0270, 0271, 0377, 0378, 0424, 0425, 0568, 0569, 0948, 0949 for metropolitan France as of January 1, 2023)
- Maintain internal suppression lists separate from Bloctel
- Process opt-out requests immediately
- Note: Violations can result in fines up to €75,000 for individuals and €375,000 for companies
Time Zone Sensitivity
Réunion observes Réunion Time (RET) at UTC+4 year-round with no daylight saving time adjustments.
Marketing SMS Time Restrictions (effective March 1, 2023 per French law):
- Allowed hours: Monday to Friday, 10:00 AM – 1:00 PM and 2:00 PM – 8:00 PM local time (UTC+4)
- Prohibited: Saturdays, Sundays, and all public holidays
- Transactional messages: Send these 24/7 (account notifications, delivery updates, authentication codes)
- Emergency notifications: Exempt from time restrictions
2025 Réunion Public Holidays to Avoid (based on Calendarific official calendar):
- January 1 (Wednesday) – New Year's Day
- April 21 (Monday) – Easter Monday
- May 1 (Thursday) – Labour Day
- May 8 (Thursday) – WWII Victory Day
- May 29 (Thursday) – Ascension Day
- June 9 (Monday) – Whit Monday
- July 14 (Monday) – French National Day (Bastille Day)
- August 15 (Friday) – Assumption of Mary
- November 1 (Saturday) – All Saints' Day
- November 11 (Tuesday) – Armistice Day
- December 20 (Saturday) – Abolition of Slavery (Réunion-specific)
- December 25 (Thursday) – Christmas Day
Timezone Conversion Example (TypeScript):
import { DateTime } from 'luxon';
function canSendMarketingSMS(date: Date): boolean {
const reunionTime = DateTime.fromJSDate(date).setZone('Indian/Reunion'); // UTC+4
const hour = reunionTime.hour;
const day = reunionTime.weekday; // 1=Mon, 7=Sun
// Check if weekend
if (day > 5) return false;
// Check allowed hours (10AM-1PM or 2PM-8PM)
const isAllowedHour = (hour >= 10 && hour < 13) || (hour >= 14 && hour < 20);
return isAllowedHour;
}Note: While no specific French law mandates these exact hours for SMS (only voice calls have statutory restrictions), following these guidelines ensures your compliance with broader consumer protection regulations and industry best practices to avoid CNIL complaints.
SMS Sender ID Options and Phone Number Requirements in Réunion
Alphanumeric Sender ID for SMS in Réunion
Operator network capability: Supported Registration requirements: Not required (no pre-registration needed) Sender ID preservation: Yes, displayed as sent to recipients Character limit: Up to 11 characters, letters and numbers only
Best Practices for Alphanumeric Sender IDs (Infobip guidelines):
- Keep it recognizable: Use your company name or abbreviation (e.g., "BankXYZ", "ShopNow")
- Avoid ambiguity: Don't use generic terms like "Alert" or "Info" that could be confused with spam
- Character limits: 3-11 characters; most carriers enforce a minimum of 3 characters
- No special characters: Only A-Z, a-z, 0-9 allowed; spaces count toward the 11-character limit
- Case sensitivity: Use capitalization for readability (e.g., "MyStore" rather than "mystore")
- Consistency: Use the same sender ID across all campaigns for brand recognition
Long Codes
Domestic vs. International: International long codes supported; domestic not available Sender ID preservation: No, typically overwritten with randomshortcode Provisioning time: Immediate for international numbers Use cases: Transactional messaging, alerts, notifications
When to use Long Codes vs Alphanumeric IDs:
- Use Alphanumeric IDs for: Brand recognition, marketing campaigns, notifications where replies are not needed, one-way transactional messages (order confirmations, shipping updates)
- Use Long Codes for: Markets where alphanumeric IDs aren't supported, testing purposes, fallback when alphanumeric registration is pending
- Note: In Réunion, alphanumeric sender IDs are preferred for most use cases due to better recognition and no registration requirements
Short Codes
Support: Available through mobile operators Provisioning time: 8 – 12 weeks Use cases: High-volume messaging, marketing campaigns, 2FA
Short Code Details (Twilio France guidelines):
- Application process: Must apply directly through mobile operators (Orange, SRR, Telco OI, Zeop Mobile) or via SMS provider partners
- Costs: Typically €1,000-€3,000 one-time setup fee plus €500-€1,500 monthly recurring charges (varies by operator)
- Benefits: Supports two-way messaging (MO/MT), higher throughput (100-300 messages/second), better deliverability
- Operator contact: Work with your SMS API provider (Twilio, Sinch, Plivo) who manage operator relationships and application processes
- Compliance: Requires business verification, use case documentation, and opt-in/opt-out mechanisms
SMS Content Restrictions and Prohibited Industries in Réunion
Restricted Industries:
- Gambling and betting services
- Adult content
- Cryptocurrency promotions
- Unauthorized financial services
- Political messaging without proper disclaimers
Content Filtering
Carrier Filtering Rules:
- URLs must be from whitelisted domains
- No excessive punctuation or special characters
- Maximum of 1 URL per message
- No mention of restricted keywords
Common Spam Trigger Words (examples that may trigger filters):
- Multiple exclamation marks (!!!) or ALL CAPS
- "FREE", "WIN", "CLAIM NOW" without proper context
- Suspicious URLs from unknown domains
- Words related to gambling: "casino", "bet now", "jackpot"
- Adult content keywords
Examples - What Passes vs. What Gets Blocked:
| ✅ Passes Filter | ❌ Gets Blocked | Reason |
|---|---|---|
| "Your order #1234 has shipped. Track: shop.com/t123" | "!!!FREE MONEY!!! Click: bit.ly/xyz123" | Excessive punctuation, suspicious short URL |
| "Reminder: Appointment tomorrow at 2PM" | "WIN BIG JACKPOT NOW!!!" | Gambling keywords, ALL CAPS, multiple exclamation marks |
| "20% discount on your next purchase at Store.com" | "CLICK HERE http://unknown.site http://another.site" | Multiple URLs, unknown domains |
| "Code de vérification: 123456" | "Congratulations! You've WON €10,000!" | Lottery/prize scam pattern |
Best Practices to Avoid Blocking:
- Use registered URL shorteners
- Avoid excessive capitalization
- Maintain consistent sending patterns
- Use approved sender IDs consistently
SMS Best Practices and Optimization Strategies for Réunion
Messaging Strategy
- Keep messages under 160 characters when possible
- Include clear call-to-action
- Use personalization tokens thoughtfully
- Maintain consistent brand voice
Effective vs. Ineffective Message Examples:
✅ Effective Transactional Message:
Bonjour Marie, votre commande #5678 est en route!
Livraison prévue demain 14h. Suivre: shop.fr/t5678
Why it works: Personalized, clear information, single relevant URL, under 160 characters
❌ Ineffective Marketing Message:
HEY!!! INCREDIBLE OFFER TODAY ONLY MASSIVE DISCOUNTS
ON EVERYTHING CLICK NOW!!! example.com BUY BUY BUY!!!
Why it fails: ALL CAPS, excessive punctuation, lacks personalization, spam-like urgency, likely to be filtered
✅ Effective Marketing Message:
Pierre, -30% sur votre article préféré ce weekend.
Offre valide jusqu'au 15/10. Code: WEEK30
Boutique.fr/promo Répondez STOP pour vous désabonner
Why it works: Personalized, specific offer, clear expiration, includes opt-out
Sending Frequency and Timing
- Limit marketing messages to 2 – 4 per month per recipient
- Respect local holidays and cultural events
- Avoid sending during peak hours (8 – 9 AM, 12 – 2 PM)
- Space out bulk campaigns to prevent network congestion
Localization
- Use French as your primary language
- Consider Creole for specific campaigns
- Use appropriate date formats (DD/MM/YYYY)
- Account for local cultural references and customs
Réunion Creole Guidance: Réunion Creole (Kréol Rényoné) is widely spoken alongside French. When to use Creole: Local community campaigns, cultural events, informal promotions targeting local residents. Common phrases: "Bonzour" (hello), "Mérsi" (thank you), "Koméla?" (how are you?). Best practice: Always provide a French version or test Creole messages with local speakers to ensure proper understanding and avoid misinterpretation.
Opt-Out Management
- Process opt-outs within 24 hours
- Maintain centralized opt-out database
- Confirm opt-out with one final message
- Conduct regular cleanup of contact lists
Technical Implementation for Opt-Out Handling:
// Example webhook handler for STOP commands
async function handleInboundSMS(from: string, body: string) {
const normalizedBody = body.trim().toUpperCase();
const stopKeywords = ['STOP', 'ARRÊT', 'DÉSABONNEMENT', 'UNSUBSCRIBE'];
if (stopKeywords.some(keyword => normalizedBody.includes(keyword))) {
// Add to suppression list
await database.optOuts.create({
phoneNumber: from,
optOutDate: new Date(),
source: 'sms_reply'
});
// Send confirmation (this is the last message they'll receive)
await sendSMS(from,
"Vous avez été désinscrit. Vous ne recevrez plus de messages de notre part."
);
// Log for compliance audit
await auditLog.create({
action: 'opt_out_processed',
phoneNumber: from,
timestamp: new Date()
});
}
}Testing and Monitoring
- Test across all major local carriers
- Monitor delivery rates by carrier
- Track engagement metrics
- Conduct regular A/B testing of message content
Key SMS Metrics and Success Thresholds (Infobip SMS benchmarks):
- Delivery Rate: Target 95%+ (below 95% indicates data quality or platform issues)
- Open Rate: Expect 90-98% (SMS inherently has high open rates; most opened within 3 minutes)
- Click-Through Rate (CTR): Aim for 20%+ (excellent performance; 10-20% is average)
- Conversion Rate: Target 21-40% depending on industry (tech: 31-40%, retail/e-commerce: 11-20%)
- Opt-Out Rate: Keep below 1.5% (rates above 1.5% indicate content or frequency issues)
- Response Time: 90% of recipients open SMS within 3 minutes of receipt
Monitoring by Carrier:
- Track delivery rates separately for Orange Réunion, SRR, Telco OI, and Zeop Mobile
- Set alerts if any single carrier's delivery rate drops below 90%
- Investigate carrier-specific filtering if one operator shows consistently lower rates
SMS API Integration Guide for Réunion: Twilio, Sinch, MessageBird & Plivo
Twilio
Twilio provides a robust SMS API with specific support for Réunion's messaging requirements. Integration requires your Account SID and Auth Token for authentication.
import { Twilio } from 'twilio';
// Initialize Twilio client
const client = new Twilio(
process.env.TWILIO_ACCOUNT_SID,
process.env.TWILIO_AUTH_TOKEN
);
// Function to send SMS to Réunion
async function sendSMSToReunion(
to: string,
message: string,
senderId: string
) {
try {
// Ensure number is in E.164 format for Réunion
const formattedNumber = to.startsWith('+262') ? to : `+262${to}`;
const response = await client.messages.create({
body: message,
from: senderId, // Alphanumeric sender ID
to: formattedNumber,
// Schedule message within allowed hours (10 AM – 1 PM, 2 PM – 8 PM Mon-Fri)
scheduleType: 'fixed',
sendAt: new Date(), // Adjust if outside allowed hours
// Request delivery receipt
statusCallback: 'https://your-domain.com/sms/status',
});
return response;
} catch (error) {
// Handle specific Twilio error codes
if (error.code === 21614) {
console.error('Cannot send to landline number');
} else if (error.code === 21211) {
console.error('Invalid phone number format');
} else if (error.code === 21408) {
console.error('Permission denied for this destination');
}
throw error;
}
}
// Webhook handler for delivery receipts
app.post('/sms/status', (req, res) => {
const { MessageSid, MessageStatus, ErrorCode } = req.body;
console.log(`Message ${MessageSid} status: ${MessageStatus}`);
// Handle different statuses
switch (MessageStatus) {
case 'delivered':
// Update database with successful delivery
break;
case 'failed':
case 'undelivered':
console.error(`Delivery failed with error code: ${ErrorCode}`);
// Implement retry logic or alert
break;
}
res.sendStatus(200);
});Sinch
Sinch offers comprehensive SMS capabilities for Réunion, requiring API Token and Service Plan ID for authentication.
import { SinchClient } from '@sinch/sdk-core';
// Initialize Sinch client
const sinchClient = new SinchClient({
projectId: process.env.SINCH_PROJECT_ID,
apiToken: process.env.SINCH_API_TOKEN
});
// Function to send SMS via Sinch
async function sendSinchSMS(
recipientNumber: string,
messageText: string
) {
try {
const response = await sinchClient.sms.batches.send({
sendSMSRequestBody: {
to: [recipientNumber],
body: messageText,
// Set delivery time window for Réunion (Mon-Fri only)
deliveryReport: 'summary',
parameters: {
delivery_window: {
start_time: '10:00',
end_time: '20:00'
}
}
}
});
// Response structure includes batch_id and status
console.log(`Batch sent with ID: ${response.id}`);
console.log(`Initial status: ${response.status}`);
return response;
} catch (error) {
console.error('Sinch SMS Error:', error);
// Handle rate limiting (429)
if (error.status === 429) {
console.error('Rate limit exceeded, implement exponential backoff');
}
throw error;
}
}
// Check delivery report
async function getDeliveryReport(batchId: string) {
const report = await sinchClient.sms.batches.get({ batch_id: batchId });
console.log(`Total: ${report.total_message_count}`);
console.log(`Delivered: ${report.delivery_report?.statuses?.delivered || 0}`);
console.log(`Failed: ${report.delivery_report?.statuses?.failed || 0}`);
return report;
}MessageBird
MessageBird provides reliable SMS delivery to Réunion with straightforward API integration.
import { MessageBirdClient } from 'messagebird';
// Initialize MessageBird client
const messagebird = new MessageBirdClient(
process.env.MESSAGEBIRD_API_KEY
);
// Function to send SMS via MessageBird
async function sendMessageBirdSMS(
to: string,
message: string,
senderId: string
) {
return new Promise((resolve, reject) => {
messagebird.messages.create({
originator: senderId,
recipients: [to],
body: message,
// Réunion specific parameters
datacoding: 'auto', // Handles special characters
type: 'premium', // For marketing messages
// Webhook for delivery status
reportUrl: 'https://your-domain.com/messagebird/status',
}, (err, response) => {
if (err) {
reject(err);
} else {
resolve(response);
}
});
});
}
// Webhook handler for MessageBird delivery reports
app.post('/messagebird/status', (req, res) => {
const { id, status, statusDatetime } = req.body;
console.log(`Message ${id} status: ${status} at ${statusDatetime}`);
// Status values: scheduled, sent, buffered, delivered, expired,
// delivery_failed, rejected
if (status === 'delivery_failed' || status === 'rejected') {
// Log failure and potentially retry
console.error(`Message delivery failed: ${id}`);
}
res.sendStatus(200);
});Plivo
Plivo offers SMS capabilities with specific features for Réunion's regulatory requirements.
import { Client } from 'plivo';
// Initialize Plivo client
const plivo = new Client(
process.env.PLIVO_AUTH_ID,
process.env.PLIVO_AUTH_TOKEN
);
// Time restriction validation
function isWithinAllowedHours(): boolean {
const now = new Date();
const reunionTime = new Date(now.toLocaleString('en-US', {
timeZone: 'Indian/Reunion'
}));
const day = reunionTime.getDay(); // 0=Sun, 6=Sat
const hour = reunionTime.getHours();
// Weekend check
if (day === 0 || day === 6) return false;
// Allowed hours: 10AM-1PM or 2PM-8PM
return (hour >= 10 && hour < 13) || (hour >= 14 && hour < 20);
}
// Function to send SMS via Plivo
async function sendPlivoSMS(
destination: string,
message: string,
senderId: string,
isMarketing: boolean = false
) {
try {
// Validate time restrictions for marketing messages
if (isMarketing && !isWithinAllowedHours()) {
throw new Error('Cannot send marketing SMS outside allowed hours (Mon-Fri 10AM-1PM, 2PM-8PM UTC+4)');
}
const response = await plivo.messages.create({
src: senderId,
dst: destination,
text: message,
// Réunion specific options
url: 'https://your-domain.com/plivo/status',
method: 'POST',
type: 'sms'
});
console.log(`Message UUID: ${response.messageUuid[0]}`);
return response;
} catch (error) {
console.error('Plivo Error:', error);
throw error;
}
}
// Status callback handler
app.post('/plivo/status', (req, res) => {
const { MessageUUID, Status, ErrorCode } = req.body;
// Plivo statuses: queued, sent, failed, delivered, undelivered, rejected
console.log(`Message ${MessageUUID} status: ${Status}`);
if (Status === 'failed' || Status === 'rejected') {
console.error(`Delivery failed. Error code: ${ErrorCode}`);
}
res.sendStatus(200);
});API Rate Limits and Throughput
Provider-Specific Rate Limits Comparison:
| Provider | Default Rate Limit | Burst Capacity | Enterprise Limits | Throttling Response |
|---|---|---|---|---|
| Twilio | 100 msg/sec per account | 1000 msg/sec | Custom (contact sales) | HTTP 429 + Retry-After header |
| Sinch | 600 msg/min (10/sec) | 1200 msg/min | Up to 6000 msg/min | HTTP 429 + rate limit headers |
| MessageBird | 150 msg/sec | 300 msg/sec | Custom quotas | HTTP 429 + X-RateLimit headers |
| Plivo | 100 msg/sec per number | 500 msg/sec | Custom (contact sales) | HTTP 429 + Retry-After |
Best Practices:
- Default rate limits: 100 messages per second
- Use batch sending for volumes over 1,000/hour
- Implement exponential backoff for retry logic
- Queue messages during peak hours (8 – 10 AM local time)
Error Handling and Reporting
Common Error Codes by Provider:
| Error Code | Provider | Meaning | Resolution |
|---|---|---|---|
| 21614 | Twilio | SMS to landline | Validate number type before sending |
| 21211 | Twilio | Invalid phone number | Use E.164 format (+262...) |
| 21408 | Twilio | Permission denied | Check account permissions for destination |
| 429 | All | Rate limit exceeded | Implement exponential backoff, reduce send rate |
| 40001 | Sinch | Missing/invalid parameters | Validate request body structure |
| 40301 | Sinch | Insufficient balance | Top up account balance |
| 9 | MessageBird | Insufficient balance | Add credits to account |
| 21 | MessageBird | Invalid recipient | Verify phone number format |
| 155 | Plivo | Destination rate limit | Reduce frequency to specific destination |
| 171 | Plivo | Invalid sender ID | Use alphanumeric ID or valid long code |
Implementation Best Practices:
- Implement comprehensive logging with Winston or similar
- Track delivery receipts for all messages
- Monitor carrier responses for blocking patterns
- Set up alerts for unusual error rates
- Store message metadata for compliance reporting
Frequently Asked Questions
What are the SMS marketing time restrictions in Réunion?
Marketing SMS in Réunion can only be sent Monday to Friday, 10:00 AM – 1:00 PM and 2:00 PM – 8:00 PM local time (UTC+4), effective March 1, 2023 per French law. Sending is prohibited on Saturdays, Sundays, and all public holidays. Transactional messages (account notifications, delivery updates, authentication codes) can be sent 24/7.
Does Bloctel apply to SMS marketing in Réunion?
No, Bloctel does NOT apply to SMS marketing. Bloctel is only for voice telephone marketing calls. SMS/MMS messages in Réunion are governed by separate opt-in consent requirements under GDPR and French data protection law enforced by CNIL. You must obtain prior opt-in consent before sending any marketing SMS.
What mobile operators serve Réunion Island?
Réunion is served by 4 licensed mobile operators as of May 1, 2025 (per ARCEP frequency allocations): Orange Réunion, SRR (SFR Réunion, holding over 50% market share), Telco OI (operating as Free Mobile and Only brands), and Zeop Mobile. All operators support SMS messaging with varying capabilities.
What timezone does Réunion use for SMS scheduling?
Réunion observes Réunion Time (RET) at UTC+4 year-round with no daylight saving time adjustments. When scheduling SMS campaigns, always use UTC+4 for local time calculations. This is 3 hours ahead of mainland France during standard time (2 hours ahead during French daylight saving time).
What are the penalties for violating SMS marketing rules in Réunion?
Violations of SMS marketing regulations in Réunion can result in fines up to €75,000 for individuals and €375,000 for companies. This includes failing to obtain proper consent, not using designated commercial SMS number prefixes (required since January 1, 2023), or violating GDPR data protection requirements.
Do I need special number prefixes for commercial SMS in Réunion?
Yes, for commercial SMS in metropolitan France (which applies to Réunion), you must use designated prefixes as of January 1, 2023: 0162, 0163, 0270, 0271, 0377, 0378, 0424, 0425, 0568, 0569, 0948, 0949. Regular mobile numbers starting with 06 or 07 cannot be used for commercial messaging.
What is the country code for SMS to Réunion?
The country code for Réunion is +262. All phone numbers must be formatted in E.164 format for SMS delivery: +262 followed by the 9-digit local number. For example: +262692123456. Réunion uses Mobile Country Code (MCC) 647.
Are alphanumeric sender IDs supported in Réunion?
Yes, alphanumeric sender IDs are fully supported in Réunion with no registration required. You can use up to 11 characters (letters and numbers only). Sender IDs are displayed as sent, making them ideal for brand recognition in transactional and marketing messages.
What SMS APIs work best for Réunion messaging?
Twilio, Sinch, MessageBird, and Plivo all provide robust SMS APIs for Réunion with specific compliance features. Pricing comparison (2025 rates): Plivo ($0.10198/msg) offers the lowest cost, followed by Sinch ($0.109/msg), Infobip ($0.13/msg), and Twilio ($0.1911/msg). Feature differentiation: Twilio excels in documentation and advanced features; Plivo offers best pricing for high volumes; Sinch provides balanced pricing with rich messaging features; MessageBird focuses on simplicity and reliable delivery. Choose based on your volume (Plivo for 100k+/month), integration complexity (MessageBird for simple setups), or feature requirements (Twilio for advanced workflows).
Is two-way SMS supported in Réunion?
No, two-way SMS is not supported in Réunion through standard channels. If you require two-way communication capabilities, consider alternative messaging solutions such as WhatsApp Business API, dedicated short code services, or other OTT messaging platforms with bidirectional support.
Recap and Additional Resources
Key Takeaways:
- Always use alphanumeric sender IDs for better deliverability
- Respect time windows (10 AM – 1 PM, 2 PM – 8 PM Mon-Fri) for marketing messages
- Maintain proper consent records and honor opt-outs immediately
- Test thoroughly across all major carriers
Common Pitfalls and Troubleshooting:
-
Low delivery rates (<95%):
- Verify phone numbers are in E.164 format (+262XXXXXXXXX)
- Check for invalid numbers or landlines in your list
- Review message content for spam triggers (excessive caps, multiple URLs)
- Confirm sender ID is properly configured
-
Messages blocked by carriers:
- Remove excessive punctuation (!!!, ???)
- Use whitelisted URL shorteners only
- Avoid restricted industry keywords (gambling, crypto)
- Maintain consistent sending patterns (avoid sudden volume spikes)
-
High opt-out rates (>1.5%):
- Reduce sending frequency (max 2-4 messages/month)
- Improve message personalization and relevance
- Verify consent was properly obtained
- Test message content with focus groups
-
Time restriction violations:
- Implement timezone validation in your code (UTC+4 for Réunion)
- Check against public holiday calendar before sending
- Use scheduling features to defer marketing messages to allowed hours
- Set up automated compliance checks in your sending pipeline
Next Steps:
- Review ARCEP and CNIL guidelines for SMS marketing
- Implement proper consent management systems
- Set up monitoring and reporting infrastructure
- Establish relationships with SMS provider support teams
Additional Information:
- ARCEP Official Website – French telecom regulator
- CNIL Data Protection Guidelines – French data protection authority
- Réunion Telecom Authority – Local government portal
- French SMS Marketing Association – Industry best practices
Best Practice Resources:
- Mobile Marketing Association Guidelines
- GDPR Compliance Documentation
- Local Consumer Protection Laws
- Carrier-specific Technical Documentation
Frequently Asked Questions
How to send SMS messages in Réunion?
Réunion supports SMS messaging through international long codes and alphanumeric sender IDs. Short codes are also available but require longer provisioning times. Ensure compliance with French and EU data protection laws, including GDPR, for all marketing messages. Two-way SMS is not supported through standard channels; consider alternatives or dedicated short codes for two-way communication needs.
What is the MCC for Réunion (France)?
The Mobile Country Code (MCC) for Réunion is 647. This code is used in conjunction with the Mobile Network Code (MNC) to identify mobile network operators within Réunion. This information is essential for SMS routing and delivery.
Why does Réunion convert MMS to SMS?
MMS messages are automatically converted to SMS with an embedded URL link in Réunion to ensure compatibility across all devices. This allows for rich media content sharing through a web-based interface while maintaining deliverability to all handsets.
When should I send marketing SMS in Réunion?
Marketing SMS messages are permitted between 8 AM and 10 PM local time in Réunion, observing UTC+4. No marketing messages are allowed on Sundays or public holidays. Transactional messages and emergency notifications are exempt from these restrictions.
Can I send SMS to landlines in Réunion?
No, sending SMS to landline numbers in Réunion is not supported. Attempts to send messages to landlines will result in a 400 response with error code 21614, and you will not be charged.
What are the rules for SMS marketing consent in Réunion?
Explicit consent, freely given, specific, informed, and unambiguous is required before sending marketing SMS messages in Réunion. Maintain detailed records of consent, ideally through double opt-in processes, and ensure easy access to these records for compliance with GDPR.
How to handle STOP commands for SMS in Réunion?
All marketing messages must include clear opt-out instructions in both French and English. Support the STOP, ARRÊT, DÉSABONNEMENT (unsubscribe), AIDE, and HELP keywords. Response to STOP commands must be immediate and confirmed.
What SMS sender ID types are available in Réunion?
Alphanumeric sender IDs (up to 11 characters), international long codes, and short codes are supported in Réunion. Domestic long codes are not available. Alphanumeric Sender IDs are recommended for better deliverability and brand recognition.
What is the character limit for SMS in Réunion?
Standard SMS messages in Réunion are limited to 160 characters for GSM-7 encoding or 70 characters for Unicode (UCS-2) encoding. Messages exceeding these limits are segmented into concatenated messages.
How to comply with SMS regulations in Réunion?
Comply with ARCEP and CNIL regulations by obtaining explicit consent for marketing messages, respecting messaging time restrictions, honoring opt-out requests, and avoiding restricted content such as gambling promotions and adult material. Maintain thorough records for compliance reporting.
What are some best practices for SMS marketing in Réunion?
Use alphanumeric sender IDs, personalize messages, keep messages concise (under 160 characters), localize content to French and Creole, respect cultural norms, and maintain consistent brand voice. Implement robust opt-out management and monitor delivery rates for optimal campaign performance.
Which SMS APIs are recommended for Réunion?
Twilio, Sinch, MessageBird, and Plivo offer SMS API integrations with specific features for Réunion's regulatory requirements. Each platform requires specific authentication credentials and offers various functionalities for sending, scheduling, and managing SMS campaigns.
What are the SMS API rate limits in Réunion?
Default rate limits are typically 100 messages per second. For high-volume campaigns, implement batch sending and exponential backoff for retry logic. Queue messages during peak hours to avoid network congestion.