Cambodia SMS Best Practices, Compliance, and Features
Cambodia SMS Market Overview
Locale name: | Cambodia |
---|---|
ISO code: | KH |
Region | Asia |
Mobile country code (MCC) | 456 |
Dialing Code | +855 |
Market Conditions: Cambodia has a growing mobile market with several major operators including Smart Axiata, Metfone, and Cellcard. SMS remains an important communication channel, particularly for business messaging and notifications, though OTT apps like LINE and Facebook Messenger are increasingly popular. The market shows strong Android dominance, with iOS having a relatively small market share. A2P (Application-to-Person) SMS services face some challenges with gray routes, which account for approximately 39% of SMS traffic.
Key SMS Features and Capabilities in Cambodia
Cambodia supports basic SMS functionality with some limitations on two-way messaging and specific requirements for sender ID registration, particularly for messages sent to Smart Axiata networks.
Two-way SMS Support
Two-way SMS is not supported in Cambodia through major SMS providers. This means businesses cannot receive replies to their messages through standard SMS channels.
Concatenated Messages (Segmented SMS)
Support: Yes, concatenated messages are supported in Cambodia, though support may vary by sender ID type.
Message length rules: Standard SMS length limits apply, with messages being split according to encoding type.
Encoding considerations: Both GSM-7 and UCS-2 encoding are supported, with UCS-2 being particularly important for local Khmer language support.
MMS Support
MMS messages are not directly supported in Cambodia. Instead, MMS content is automatically converted to SMS with an embedded URL link where recipients can view the multimedia content. This ensures compatibility while still allowing rich media sharing capabilities.
Recipient Phone Number Compatibility
Number Portability
Number portability is not available in Cambodia. This means mobile numbers remain tied to their original carrier, which can simplify message routing but limits consumer flexibility.
Sending SMS to Landlines
Sending SMS to landline numbers is not possible in Cambodia. Attempts to send messages to landline numbers will result in a failed delivery and typically generate a 400 response error (error code 21614) through SMS APIs. These messages will not appear in logs and accounts will not be charged for failed attempts.
Compliance and Regulatory Guidelines for SMS in Cambodia
Cambodia's SMS regulations are primarily overseen by the Telecommunication Regulator of Cambodia (TRC). While specific SMS marketing laws are still evolving, businesses must adhere to general telecommunications guidelines and carrier-specific requirements.
Consent and Opt-In
Explicit Consent Required: You must obtain and document explicit opt-in consent before sending marketing or promotional messages. Best practices include:
- Maintaining clear records of how and when consent was obtained
- Using double opt-in processes for marketing campaigns
- Providing clear terms and conditions at the point of opt-in
- Specifying the types of messages users will receive
HELP/STOP and Other Commands
While Cambodia doesn't have strict HELP/STOP requirements, implementing these features is considered best practice:
- Support both English and Khmer language keywords
- Common commands should include: STOP, CANCEL, END, HELP
- Process opt-out requests within 24 hours
- Send confirmation messages in the user's preferred language
Do Not Call / Do Not Disturb Registries
Cambodia does not maintain an official Do Not Call registry. However, businesses should:
- Maintain their own suppression lists
- Honor opt-out requests immediately
- Document all opt-out requests for compliance purposes
- Regularly clean contact lists to remove unsubscribed numbers
Time Zone Sensitivity
Cambodia follows ICT (UTC+7) time zone. While there are no strict time restrictions, recommended practices include:
- Sending messages between 8:00 AM and 8:00 PM ICT
- Avoiding messages during religious holidays and festivals
- Limiting late-night messages to urgent communications only
Phone Numbers Options and SMS Sender Types for in Cambodia
Alphanumeric Sender ID
Operator network capability: Fully supported across major networks
Registration requirements: Pre-registration required for Smart Axiata (effective August 1, 2023); Dynamic usage supported for other carriers
Sender ID preservation: Preserved for Smart Axiata when registered; May be overwritten by Metfone with generic sender ID
Provisioning time: 14 business days for registration
Long Codes
Domestic vs. International:
- Domestic long codes not supported
- International long codes supported (except for Smart Axiata)
Sender ID preservation: No, typically overwritten with generic sender ID
Provisioning time: Immediate for international long codes
Use cases: Transactional messaging, alerts, notifications
Short Codes
Support: Not currently supported in Cambodia
Provisioning time: N/A
Use cases: N/A
Restricted SMS Content, Industries, and Use Cases
The following content types are restricted:
- Political content
- Religious messaging
- Adult content
- Gambling-related content
- Spam or unsolicited promotional content
Content Filtering
Known carrier filters:
- Messages containing restricted keywords
- High-volume sending from unregistered sender IDs
- Messages with suspicious URLs
Best practices to avoid filtering:
- Use registered sender IDs
- Avoid URL shorteners
- Maintain consistent sending patterns
- Use clear, professional language
Best Practices for Sending SMS in Cambodia
Messaging Strategy
- Keep messages under 160 characters when possible
- Include clear call-to-actions
- Personalize messages using recipient's name or relevant details
- Maintain consistent branding across messages
Sending Frequency and Timing
- Limit to 2-3 messages per week per recipient
- Respect Cambodian holidays and festivals
- Schedule campaigns during business hours
- Space out bulk sends to avoid network congestion
Localization
- Support both Khmer and English languages
- Use proper character encoding for Khmer script
- Consider cultural context in message content
- Provide language preference options
Opt-Out Management
- Process opt-outs within 24 hours
- Send opt-out confirmation messages
- Maintain updated suppression lists
- Regular audit of opt-out processes
Testing and Monitoring
- Test messages across all major carriers
- Monitor delivery rates by carrier
- Track engagement metrics
- Regular testing of opt-out functionality
SMS API integrations for Cambodia
Twilio
Twilio provides a robust SMS API with comprehensive support for Cambodia. Integration requires an account SID and auth token for authentication.
Key Parameters:
from
: Registered alphanumeric sender ID or phone numberto
: Recipient number in E.164 format (+855)body
: Message content (supports Unicode for Khmer)
import { Twilio } from 'twilio';
// Initialize client with environment variables
const client = new Twilio(
process.env.TWILIO_ACCOUNT_SID,
process.env.TWILIO_AUTH_TOKEN
);
async function sendSMSCambodia(
to: string,
message: string,
senderId: string
): Promise<void> {
try {
// Send message with error handling
const response = await client.messages.create({
from: senderId, // Registered alphanumeric sender ID
to: to, // Format: +85512345678
body: message,
// Optional parameters for delivery tracking
statusCallback: 'https://your-callback-url.com/status'
});
console.log(`Message sent successfully: ${response.sid}`);
} catch (error) {
console.error('Error sending message:', error);
throw error;
}
}
Sinch
Sinch offers direct carrier connections in Cambodia with support for both text and binary messages.
Key Parameters:
from
: Registered sender IDto
: Array of recipient numbersbody
: Message contentdelivery_report
: Delivery status tracking
import axios from 'axios';
interface SinchMessage {
from: string;
to: string[];
body: string;
delivery_report: string;
}
async function sendSinchSMS(
apiToken: string,
message: SinchMessage
): Promise<void> {
const baseUrl = 'https://sms.api.sinch.com/xms/v1';
const servicePlanId = process.env.SINCH_SERVICE_PLAN_ID;
try {
const response = await axios.post(
`${baseUrl}/${servicePlanId}/batches`,
message,
{
headers: {
'Authorization': `Bearer ${apiToken}`,
'Content-Type': 'application/json'
}
}
);
console.log('Batch ID:', response.data.id);
} catch (error) {
console.error('Sinch SMS Error:', error);
throw error;
}
}
MessageBird
MessageBird provides reliable SMS delivery in Cambodia with support for Unicode messages.
Key Parameters:
originator
: Sender ID (alphanumeric or number)recipients
: Array of recipient numberscontent
: Message content and type
import messagebird from 'messagebird';
class MessageBirdService {
private client: any;
constructor(apiKey: string) {
this.client = messagebird(apiKey);
}
async sendSMS(
originator: string,
recipient: string,
message: string
): Promise<void> {
return new Promise((resolve, reject) => {
this.client.messages.create({
originator,
recipients: [recipient],
body: message,
type: 'sms'
}, (err: any, response: any) => {
if (err) {
reject(err);
return;
}
resolve(response);
});
});
}
}
API Rate Limits and Throughput
- Default Rate Limits:
- Twilio: 250 messages per second
- Sinch: 30 requests per second
- MessageBird: 60 messages per second
Throughput Management Strategies:
- Implement exponential backoff for retries
- Use batch APIs for bulk sending
- Queue messages during peak times
- Monitor delivery rates by carrier
Error Handling and Reporting
interface SMSError {
code: string;
message: string;
timestamp: Date;
recipient: string;
}
class SMSErrorHandler {
private errors: SMSError[] = [];
logError(error: SMSError): void {
this.errors.push(error);
// Implement your logging logic
console.error(`SMS Error [${error.code}]: ${error.message}`);
}
async retryFailedMessages(): Promise<void> {
// Implement retry logic with exponential backoff
const retryDelay = (attempt: number) => Math.pow(2, attempt) * 1000;
// Retry implementation
}
}
Recap and Additional Resources
Key Takeaways
-
Compliance Priorities
- Register alphanumeric sender IDs with Smart Axiata
- Maintain proper opt-in/opt-out processes
- Follow time zone considerations
-
Technical Requirements
- Use E.164 number formatting
- Support Unicode for Khmer language
- Implement proper error handling
-
Best Practices
- Test across all major carriers
- Monitor delivery rates
- Maintain clean contact lists
Next Steps
- Review the Telecommunication Regulator of Cambodia (TRC) guidelines
- Register sender IDs with relevant carriers
- Implement proper error handling and monitoring
- Set up delivery tracking systems
Additional Resources
- Telecommunication Regulator of Cambodia
- Smart Axiata Business Solutions
- Cambodia Telecommunications Law
Industry Guidelines: