Ivory Coast SMS Best Practices, Compliance, and Features
Ivory Coast SMS Market Overview
Locale name: | Ivory Coast |
---|---|
ISO code: | CI |
Region | Middle East & Africa |
Mobile country code (MCC) | 612 |
Dialing Code | +225 |
Market Conditions: Ivory Coast has a vibrant mobile market dominated by three major operators: Orange (07), MTN (05), and Moov/Etisalat (01). The country recently underwent a significant numbering scheme update in 2021, transitioning from 8 to 10-digit phone numbers to accommodate growing mobile adoption. While OTT messaging apps are gaining popularity in urban areas, SMS remains a critical communication channel, particularly for business-to-consumer communications and authentication services.
Key SMS Features and Capabilities in Ivory Coast
Ivory Coast supports most standard SMS features including concatenated messaging and alphanumeric sender IDs, though two-way SMS functionality is not currently available.
Two-way SMS Support
Two-way SMS is not supported in Ivory Coast at this time. Businesses should design their SMS strategies around one-way communication flows.
Concatenated Messages (Segmented SMS)
Support: Yes, concatenation is supported for messages exceeding standard length limits, though support may vary by sender ID type.
Message length rules: Messages are split according to standard SMS character limits:
- 160 characters for GSM-7 encoding
- 70 characters for UCS-2 encoding
Encoding considerations: Both GSM-7 and UCS-2 encoding are supported. UCS-2 is required for messages containing special characters or non-Latin alphabets.
MMS Support
MMS messages are automatically converted to SMS with an embedded URL link to access the multimedia content. This ensures compatibility across all devices while still enabling rich media sharing capabilities.
Recipient Phone Number Compatibility
Number Portability
Number portability is not available in Ivory Coast. Mobile numbers remain tied to their original network operators, making it easier to ensure accurate message routing.
Sending SMS to Landlines
SMS to landline numbers is not supported in Ivory Coast. Attempts to send messages to landline numbers will result in a 400 response error (code 21614) through the REST API, with no message delivery and no charges applied to the account.
Compliance and Regulatory Guidelines for SMS in Ivory Coast
SMS communications in Ivory Coast are regulated by the Autorité de Régulation des Télécommunications/TIC de Côte d'Ivoire (ARTCI). While specific SMS marketing regulations are still evolving, businesses must comply with general telecommunications guidelines and data privacy requirements.
Consent and Opt-In
Explicit Consent Requirements:
- Written or electronic consent must be obtained before sending marketing messages
- Maintain detailed records of when and how consent was obtained
- Clearly communicate the purpose and frequency of messages during opt-in
Best Practices for Consent Collection:
- Use double opt-in processes for marketing lists
- Provide clear terms and conditions during signup
- Document consent timestamp, source, and scope
- Enable easy opt-out methods at signup
HELP/STOP and Other Commands
- All SMS campaigns must support standard STOP commands
- HELP and STOP keywords should be recognized in both French and English
- Common French keywords include: ARRETER, STOP, DESABONNER
- Responses to HELP/STOP commands should be immediate and free of charge
Do Not Call / Do Not Disturb Registries
While Ivory Coast does not maintain an official Do Not Call registry, businesses should:
- Maintain their own suppression lists
- Honor opt-out requests within 24 hours
- Keep records of opted-out numbers for at least 12 months
- Regularly clean contact lists to remove unsubscribed numbers
Time Zone Sensitivity
Time Restrictions:
- Avoid sending messages between 10 PM and 6 AM local time
- Limit messages to 3 per subscriber per day
- Exception: Emergency or requested messages may be sent outside these hours
Phone Numbers Options and SMS Sender Types for in Ivory Coast
Alphanumeric Sender ID
Operator network capability: Fully supported across all major networks
Registration requirements: Pre-registration required; no dynamic usage allowed
Sender ID preservation: Yes, registered IDs are preserved across networks
Provisioning time: Approximately 3 weeks for registration approval
Long Codes
Domestic vs. International:
- Domestic long codes: Supported but not available through international providers
- International long codes: Supported with limitations on MTN network
Sender ID preservation: No, international long codes may be modified by carriers
Use cases: Recommended for transactional messages and 2FA
Short Codes
Support: Available through major carriers
Provisioning time: 8-12 weeks for approval and setup
Use cases: Ideal for:
- High-volume marketing campaigns
- Two-factor authentication
- Customer service interactions
Restricted SMS Content, Industries, and Use Cases
Restricted Industries:
- Gambling and betting services
- Adult content or services
- Cryptocurrency promotions
- Political messaging without proper authorization
Content Filtering
Carrier Filtering Rules:
- Messages containing certain keywords may be blocked
- URLs should be from approved domains
- Message content should be in French or English
Best Practices to Avoid Filtering:
- Avoid excessive punctuation
- Don't use all caps
- Limit URL usage in marketing messages
- Keep content clear and professional
Best Practices for Sending SMS in Ivory Coast
Messaging Strategy
- Keep messages under 160 characters when possible
- Include clear call-to-actions
- Personalize messages using subscriber name or relevant details
- Maintain consistent sender ID across campaigns
Sending Frequency and Timing
- Maximum 3 messages per day per subscriber
- Respect religious holidays and Sundays
- Peak engagement hours: 9 AM - 6 PM local time
- Space out campaign messages to avoid overwhelming recipients
Localization
- Primary language: French
- Consider bilingual messages for important communications
- Use local date and time formats
- Respect cultural sensitivities in content
Opt-Out Management
- Process opt-outs within 24 hours
- Send confirmation of successful opt-out
- Maintain unified opt-out lists across campaigns
- Regular audit of opt-out compliance
Testing and Monitoring
- Test across all three major carriers (Orange, MTN, Moov)
- Monitor delivery rates by carrier
- Track engagement metrics and opt-out rates
- Regular testing of HELP/STOP functionality
SMS API integrations for Ivory Coast
Twilio
Twilio provides a robust SMS API with specific support for Ivory Coast's messaging requirements.
Authentication and Setup:
- Account SID and Auth Token required
- Pre-registered alphanumeric sender IDs recommended
- E.164 number format mandatory (+225)
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 Ivory Coast
async function sendSMSToIvoryCoast(
to: string,
message: string,
senderId: string
) {
try {
// Validate phone number format
if (!to.startsWith('+225')) {
throw new Error('Invalid Ivory Coast phone number format');
}
const response = await client.messages.create({
body: message,
from: senderId, // Pre-registered alphanumeric sender ID
to: to,
// Optional parameters for delivery tracking
statusCallback: 'https://your-callback-url.com/status'
});
console.log(`Message sent successfully: ${response.sid}`);
return response;
} catch (error) {
console.error('Error sending message:', error);
throw error;
}
}
Sinch
Sinch offers direct carrier connections in Ivory Coast with support for high-volume messaging.
import { SinchClient } from '@sinch/sdk';
// Initialize Sinch client
const sinchClient = new SinchClient({
apiKey: process.env.SINCH_API_KEY,
apiSecret: process.env.SINCH_API_SECRET
});
async function sendBatchSMS(
recipients: string[],
message: string
) {
try {
const batch = await sinchClient.sms.batches.create({
from: 'YOUR_SENDER_ID',
to: recipients.map(num => num.startsWith('+225') ? num : `+225${num}`),
body: message,
// Delivery report configuration
deliveryReport: 'summary'
});
return batch;
} catch (error) {
console.error('Batch sending failed:', error);
throw error;
}
}
MessageBird (Bird)
MessageBird provides specific features for the Ivory Coast market including delivery optimization.
import { MessageBird } from 'messagebird';
// Initialize MessageBird client
const messagebird = new MessageBird(process.env.MESSAGEBIRD_API_KEY);
interface SMSResponse {
id: string;
status: string;
recipients: {
total: number;
delivered: number;
};
}
async function sendMessageBirdSMS(
recipient: string,
message: string
): Promise<SMSResponse> {
return new Promise((resolve, reject) => {
messagebird.messages.create({
originator: 'YOUR_SENDER_ID',
recipients: [recipient],
body: message,
// Ivory Coast specific parameters
datacoding: 'auto', // Handles special characters
type: 'premium' // For guaranteed delivery
}, (err, response) => {
if (err) {
reject(err);
return;
}
resolve(response);
});
});
}
API Rate Limits and Throughput
Rate Limits by Provider:
- Twilio: 100 messages/second
- Sinch: 250 messages/second
- MessageBird: 150 messages/second
Throughput Management Strategies:
// Example rate limiting implementation
import { RateLimiter } from 'limiter';
const limiter = new RateLimiter({
tokensPerInterval: 100,
interval: 'second'
});
async function sendBulkSMS(messages: Array<{to: string, body: string}>) {
const results = [];
for (const msg of messages) {
await limiter.removeTokens(1);
try {
const result = await sendSMSToIvoryCoast(msg.to, msg.body);
results.push(result);
} catch (error) {
console.error(`Failed to send to ${msg.to}:`, error);
results.push({ error, to: msg.to });
}
}
return results;
}
Error Handling and Reporting
Common Error Scenarios:
- Invalid phone number format
- Unregistered sender ID
- Network timeouts
- Carrier rejections
Logging Best Practices:
interface SMSLog {
timestamp: Date;
recipient: string;
status: string;
error?: any;
provider: string;
messageId?: string;
}
async function logSMSActivity(log: SMSLog): Promise<void> {
// Implement your logging logic here
console.log(JSON.stringify(log, null, 2));
// Example: Store in database
await db.smsLogs.insert(log);
}
Recap and Additional Resources
Key Takeaways:
- Always use pre-registered sender IDs
- Implement proper rate limiting
- Monitor delivery rates by carrier
- Maintain comprehensive logging
- Follow time window restrictions
Next Steps:
- Register sender IDs with chosen provider
- Implement delivery tracking
- Set up monitoring and alerting
- Test with small volumes before scaling
Additional Information:
- ARTCI (Telecom Regulator): https://www.artci.ci
- Orange Ivory Coast Developer Portal: https://developer.orange.com/apis/sms-ci
- SMS Compliance Guidelines: https://www.artci.ci/index.php/sms-guidelines