sms compliance
sms compliance
Haiti SMS Best Practices, Compliance, and Features
Complete guide to SMS messaging in Haiti, including compliance requirements, carrier capabilities, and API integration examples
Haiti SMS Best Practices, Compliance, and Features
Overview of Haiti's SMS Market and Mobile Network
| Locale name: | Haiti |
|---|---|
| ISO code: | HT |
| Region | North America |
| Mobile country code (MCC) | 372 |
| Dialing Code | +509 |
| Mobile Number Format | +509 XX XX XXXX (8 digits after country code) |
| Mobile Prefixes | 30-43 (Digicel: 30-31, 34, 36-39; Natcom: 32-33, 40-43) |
| Landline Prefixes | 22, 25, 28, 29 |
Market Conditions: Haiti's mobile market is dominated by two major operators: Digicel and Natcom. SMS remains a critical communication channel due to limited smartphone penetration and internet connectivity challenges. While OTT messaging apps like WhatsApp are gaining popularity in urban areas, traditional SMS maintains widespread usage for both personal and business communications, especially in rural regions where network infrastructure is less developed.
Number Format Details (ITU E.164):
- Haiti transitioned from 7-digit to 8-digit phone numbers on March 1, 2008
- Format: +509 XX XX XXXX
- Mobile numbers use prefixes 30–43
- Landline numbers use prefixes 22, 25, 28, 29
- VoIP numbers use 96X, 97X, 98X, 99X prefixes
SMS Features and Capabilities in Haiti
Haiti supports basic SMS functionality with some limitations on advanced features, primarily offering one-way messaging capabilities with support for concatenated messages and alphanumeric sender IDs. These limitations reflect the developing telecommunications infrastructure and carrier-level technical constraints in the market.
Two-Way SMS Support
Haiti does not support two-way SMS for A2P (Application-to-Person) messaging. You can only send messages one-way from applications to end users.
Why Two-Way SMS Isn't Available: Two-way messaging requires dedicated short codes or long codes with inbound routing capabilities. Haiti's carriers do not provision short codes, and inbound SMS routing infrastructure for A2P messaging is not widely deployed.
Alternatives for Receiving Responses:
- Direct users to web forms or mobile apps for responses
- Use WhatsApp Business API for two-way communication in urban areas
- Implement voice call response systems (IVR)
- Provide email or social media channels for feedback
Concatenated Messages (Segmented SMS)
Support: Yes, most sender ID types support concatenation.
Message length rules: Standard SMS length limits apply – 160 characters for GSM-7 encoding, 70 characters for UCS-2 encoding.
Encoding considerations: Both GSM-7 and UCS-2 encodings work, with message splitting and rejoining varying based on the character encoding used.
Impact on Delivery and Costs:
- Concatenated messages incur charges per segment (a 200-character message = 2 message credits)
- Each segment includes a 7-byte header for reassembly, reducing usable characters (153 for GSM-7, 67 for UCS-2)
- Multi-segment messages have lower delivery success rates due to increased complexity
- Handsets reassemble messages, but older devices may display segments separately
MMS Support
Haiti does not support MMS messages directly. When you send MMS content, it converts automatically to SMS with an embedded URL link where recipients can view the multimedia content.
Best Practice: When sending multimedia content, shorten the URL and clearly label it to build recipient trust.
Recipient Phone Number Compatibility
Number Portability
Haiti does not support number portability. Phone numbers remain tied to their original mobile operator, simplifying message routing and delivery.
Identifying the Operator: Use the mobile prefix to identify the carrier:
- Digicel: 30, 31, 34, 36, 37, 38, 39
- Natcom: 32, 33, 40, 41, 42, 43
Sending SMS to Landlines
You cannot send SMS to landline numbers in Haiti. Attempts to send SMS to landline numbers will result in a 400 response error (code 21614). The message will not be logged, and you will not incur charges.
Mobile vs. Landline Validation:
Mobile (valid for SMS): ^(\+509|509)?(3[0-4]|3[6-9]|4[0-3])\d{6}$
Landline (invalid for SMS): ^(\+509|509)?(22|25|28|29)\d{6}$Validation Example (TypeScript):
function isHaitiMobile(phoneNumber: string): boolean {
// Remove +509 or 509 prefix and whitespace
const normalized = phoneNumber.replace(/^(\+?509)?\s*/g, '');
// Check if it's 8 digits and starts with mobile prefix
return /^(3[0-4]|3[6-9]|4[0-3])\d{6}$/.test(normalized);
}Haiti SMS Compliance and Regulatory Requirements
CONATEL (Conseil National des Télécommunications) regulates Haiti's telecommunications sector. While specific SMS marketing regulations are still evolving, follow general telecommunications guidelines and international best practices for messaging.
Consent and Opt-In
Explicit Consent Required: Obtain and document clear opt-in consent before sending marketing or promotional messages.
Best Practices for Consent:
- Collect consent through written forms, web forms, or SMS keyword responses
- Maintain detailed records of when and how you obtained consent
- Clearly state the types of messages users will receive
- Include your company name and message frequency in consent requests
- Recommended retention: Keep consent records for at least 3 years after last contact
HELP/STOP and Other Commands
- Support standard opt-out keywords in all SMS campaigns: STOP, ARRET, RETE (in both French and Haitian Creole)
- Support HELP/AIDE messages in both French and Haitian Creole
- Respond to these commands immediately and free of charge
- Record all opt-out requests for compliance purposes
Do Not Call / Do Not Disturb Registries
Haiti does not maintain an official Do Not Call registry. However, you should:
- Maintain your own suppression lists of opted-out numbers
- Honor opt-out requests within 24 hours
- Regularly clean contact lists to remove inactive or invalid numbers
- Document all opt-out requests and their processing dates
Time Zone Sensitivity
Haiti observes Eastern Time (ET/UTC-4) year-round (no daylight saving time). Follow these best practices:
- Send messages between 8:00 AM and 8:00 PM local time
- Avoid sending during religious holidays and national celebrations
- Send messages outside these hours only for urgent communications (e.g., security alerts)
Major Haiti Holidays to Avoid (source):
- January 1–2: New Year's Day and Heroes' Day (Independence Day)
- February: Carnival (dates vary, typically mid-February)
- April: Good Friday and Easter
- May 1: Labor Day
- May 18: Flag Day
- May (last Sunday): Mother's Day
- June 4: Corpus Christi (local holiday)
- October 17: Dessalines Day
- November 1–2: All Saints' Day and All Souls' Day
- November 18: Vertières Day
- December 25: Christmas Day
SMS Sender ID Options for Haiti (Alphanumeric, Long Codes, Short Codes)
Alphanumeric Sender ID
Operator network capability: Partially supported
Registration requirements: No pre-registration required, dynamic usage supported
Sender ID preservation: Yes, except for Operator Natcom (37203) where alphanumeric IDs are not supported
Character limit: Up to 11 characters
Allowed characters: A-Z, a-z, 0-9, and space (no special characters)
Note: Generic sender IDs (INFO, SMS, NOTICE) are prohibited
Natcom Behavior: When you send to Natcom subscribers (prefixes 32, 33, 40-43) with an alphanumeric sender ID, the message delivers but the sender ID may be replaced with a numeric ID or short code. The message content is not blocked.
Long Codes
Domestic vs. International:
- Domestic long codes not supported
- International long codes fully supported
Sender ID preservation: Yes, original sender ID is preserved
Provisioning time: Immediate activation for international long codes
Use cases: Ideal for transactional messages, alerts, and notifications
Short Codes
Support: Not currently available in Haiti
Provisioning time: N/A
Use cases: N/A
Restricted Content and Industry Limitations for Haiti SMS
Prohibited Content (Carrier Policies):
- Political messaging
- Religious content
- Gambling and betting
- Adult content
- Cryptocurrency promotions
- Unsolicited marketing messages
Note: Carriers enforce these restrictions at the network level rather than through specific legislation. Violations may result in message blocking, sender ID blacklisting, or account suspension without prior notice.
Content Filtering
Carrier Filtering Rules:
- Carriers automatically block messages containing restricted keywords
- URLs may trigger additional scrutiny
- High-volume sending patterns may be flagged
Tips to Avoid Blocking:
- Avoid URL shorteners when possible
- Use clear, straightforward language
- Maintain consistent sending patterns
- Include clear company identification
- Avoid excessive punctuation and all-caps text
Haiti SMS Best Practices: Timing, Frequency & Localization
Messaging Strategy
- Keep messages under 160 characters when possible
- Include clear call-to-actions
- Identify your business in each message
- Use personalization thoughtfully (e.g., recipient's name)
Sending Frequency and Timing
- Limit to 4–5 messages per month per recipient
- Space out messages to avoid overwhelming recipients
- Consider local holidays and cultural events
- Maintain consistent sending patterns
- High-volume threshold: Sending >1,000 messages per hour to a single carrier may trigger scrutiny
Localization
- Support both French and Haitian Creole
- Consider cultural nuances in message content
- Use local date and time formats
- Avoid colloquialisms that may not translate well
Language Demographics (source):
- Haitian Creole: Spoken by virtually 100% of the population (11+ million speakers)
- French: Spoken by approximately 42% of the population, primarily educated Haitians and in urban areas
- Recommendation: Provide messages in Haitian Creole for broadest reach. Use French for professional/business communications or bilingual messages for maximum impact.
Opt-Out Management
- Process opt-outs within 24 hours
- Send confirmation of opt-out completion
- Maintain opt-out lists across all campaigns
- Regular audit of opt-out processing
Testing and Monitoring
- Test messages across both major carriers (Digicel and Natcom)
- Monitor delivery rates by carrier
- Track opt-out rates and patterns
- Regular testing of HELP/STOP functionality
- Monitor for carrier filtering changes
Haiti SMS API Integration Examples (Twilio, Sinch, MessageBird, Plivo)
Twilio
Twilio provides a robust SMS API with comprehensive support for Haiti. Integration requires your Account SID and Auth Token from the Twilio Console.
import { Twilio } from 'twilio';
// Initialize the client with your credentials
const client = new Twilio(process.env.TWILIO_ACCOUNT_SID, process.env.TWILIO_AUTH_TOKEN);
// Function to send SMS to Haiti
async function sendSMSToHaiti(
to: string,
message: string,
senderId: string
): Promise<void> {
try {
// Ensure phone number is in E.164 format for Haiti (+509XXXXXXXX)
const formattedNumber = to.startsWith('+509') ? to : `+509${to}`;
const response = await client.messages.create({
body: message,
from: senderId, // Alphanumeric sender ID or international number
to: formattedNumber,
});
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 Haiti. Their API requires an API Token and Service Plan ID.
import { SinchClient } from '@sinch/sdk';
// Initialize Sinch client
const sinchClient = new SinchClient({
apiToken: process.env.SINCH_API_TOKEN,
servicePlanId: process.env.SINCH_SERVICE_PLAN_ID,
});
// Function to send SMS using Sinch
async function sendSinchSMS(
recipientNumber: string,
messageText: string
): Promise<void> {
try {
const response = await sinchClient.sms.send({
to: [recipientNumber], // Must include +509 prefix
message: messageText,
from: 'YourCompany', // Your approved sender ID
});
console.log(`Batch ID: ${response.batchId}`);
} catch (error) {
console.error('Sinch SMS Error:', error);
throw error;
}
}MessageBird
MessageBird provides reliable SMS delivery to Haiti with straightforward API integration.
import { MessageBird } from 'messagebird';
// Initialize MessageBird client
const messagebird = new MessageBird(process.env.MESSAGEBIRD_API_KEY);
// Function to send SMS via MessageBird
async function sendMessageBirdSMS(
to: string,
message: string,
originator: string
): Promise<void> {
const params = {
originator, // Your sender ID
recipients: [to], // Haiti number with +509 prefix
body: message,
};
try {
const response = await new Promise((resolve, reject) => {
messagebird.messages.create(params, (err, response) => {
if (err) reject(err);
resolve(response);
});
});
console.log('MessageBird Response:', response);
} catch (error) {
console.error('MessageBird Error:', error);
throw error;
}
}Plivo
Plivo offers reliable SMS delivery to Haiti with good delivery rates and tracking capabilities.
import { Client } from 'plivo';
// Initialize Plivo client
const plivo = new Client(
process.env.PLIVO_AUTH_ID,
process.env.PLIVO_AUTH_TOKEN
);
// Function to send SMS via Plivo
async function sendPlivoSMS(
destination: string,
message: string,
sourceNumber: string
): Promise<void> {
try {
const response = await plivo.messages.create({
src: sourceNumber, // Your Plivo number or sender ID
dst: destination, // Haiti number (+509)
text: message,
});
console.log('Message UUID:', response.messageUuid);
} catch (error) {
console.error('Plivo Error:', error);
throw 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 queue systems like Redis or RabbitMQ for high-volume sending
- Batch messages when possible to optimize throughput
Error Handling and Reporting
- Implement comprehensive error logging
- Monitor delivery receipts (DLRs)
- Track common error codes:
- Invalid number format
- Network errors
- Rate limit exceeded
- Invalid sender ID
- Store message metadata for troubleshooting
Common Haiti-Specific Error Codes:
- 21614 (Twilio): Invalid phone number (landline or incorrect format)
- 30007 (Twilio): Message filtered by carrier
- 30008 (Twilio): Unknown destination handset
- 30034 (Twilio): Invalid sender ID
Summary: Key Takeaways for Haiti SMS Messaging
Key Takeaways:
- Always use E.164 format (+509 XX XX XXXX) for Haiti numbers
- Validate mobile prefixes (30–43) to avoid sending to landlines
- Implement proper opt-out handling in both French and Haitian Creole
- Monitor delivery rates and errors by carrier (Digicel vs. Natcom)
- Prioritize Haitian Creole for maximum reach (100% vs. 42% for French)
- Respect local time zones (UTC-4) and avoid major holidays
Next Steps:
- Review CONATEL regulations (Haiti's telecom authority)
- Implement proper consent management with 3-year record retention
- Set up error monitoring and reporting
- Test thoroughly with both major carriers
- Configure number validation to filter landlines
Additional Resources:
Technical Documentation: