Thailand SMS Best Practices, Compliance, and Features
Thailand SMS Market Overview
Locale name: | Thailand |
---|---|
ISO code: | TH |
Region | Asia |
Mobile country code (MCC) | 520 |
Dialing Code | +66 |
Market Conditions: Thailand has a vibrant mobile market with high SMS adoption rates alongside popular OTT messaging apps like LINE and WhatsApp. The country's three major mobile operators - AIS, DTAC, and True Move - serve a predominantly Android user base (approximately 75% market share). While OTT messaging apps dominate personal communications, SMS remains crucial for business communications, particularly for authentication, notifications, and marketing purposes due to its reliability and universal reach.
Key SMS Features and Capabilities in Thailand
Thailand offers robust SMS capabilities with support for concatenated messages and alphanumeric sender IDs, though two-way messaging is not supported and MMS requires URL conversion.
Two-way SMS Support
Two-way SMS is not supported in Thailand for A2P (Application-to-Person) messaging. Businesses must use one-way messaging for their communications, with no ability to receive replies from recipients.
Concatenated Messages (Segmented SMS)
Support: Yes, concatenation is supported for most sender ID types, though support may vary based on the specific sender ID used.
Message length rules: Standard 160 characters per message segment using GSM-7 encoding.
Encoding considerations: Messages use GSM-7 encoding for Latin characters (160 characters) or UCS-2 for Thai language and special characters (70 characters per segment).
MMS Support
MMS messages are automatically converted to SMS with an embedded URL link. When sending rich media content, the system will generate a URL where recipients can access the media, and this URL is included in the SMS message body. Best practice is to use full-length URLs rather than shortened ones, as URL shorteners are considered prohibited content in Thailand.
Recipient Phone Number Compatibility
Number Portability
Number portability is available in Thailand, allowing users to keep their phone numbers when switching between mobile operators. This feature does not significantly impact SMS delivery or routing as messages are properly routed to the current carrier.
Sending SMS to Landlines
Sending SMS to landline numbers is not possible in Thailand. Attempts to send messages to landline numbers will result in a 400 response with error code 21614, the message will not appear in logs, and the account will not be charged.
Compliance and Regulatory Guidelines for SMS in Thailand
Thailand's SMS communications are regulated by the National Broadcasting and Telecommunications Commission (NBTC), which enforces strict guidelines for commercial messaging. The Personal Data Protection Act (PDPA) also governs how businesses handle customer data and consent management.
Consent and Opt-In
Explicit Consent Requirements:
- Written or electronic consent must be obtained before sending any marketing messages
- Consent records must be maintained for at least 3 months
- Purpose of messaging must be clearly stated during opt-in
- Consent must specify the types of messages customers will receive
Best Practices for Documentation:
- Store timestamp and source of consent
- Maintain audit trails of consent changes
- Use double opt-in for marketing lists
- Provide clear terms and conditions during signup
HELP/STOP and Other Commands
- Must support both English and Thai opt-out keywords:
- STOP/หยุด
- CANCEL/ยกเลิก
- HELP/ช่วยเหลือ
- Opt-out confirmation messages must be sent in the same language as the opt-out request
- Commands must be processed within 24 hours of receipt
Do Not Call / Do Not Disturb Registries
Thailand does not maintain a centralized Do Not Call registry, but businesses must:
- Maintain their own suppression lists
- Honor opt-out requests immediately
- Remove numbers within 24 hours of receiving an opt-out request
- Regularly clean contact lists to remove inactive numbers
Time Zone Sensitivity
- Marketing messages prohibited between 9 PM and 9 AM (ICT - UTC+7)
- Emergency and transactional messages exempt from time restrictions
- Consider Buddhist holidays and weekends when planning campaigns
Phone Numbers Options and SMS Sender Types for Thailand
Alphanumeric Sender ID
Operator network capability: Fully supported
Registration requirements: Pre-registration required; 2-week approval process
Sender ID preservation: Yes, displayed as registered
Additional requirements:
- Must be 11 characters or less
- Cannot contain special characters
- Must match registered business name
Long Codes
Domestic vs. International:
- Domestic long codes supported but not available to international businesses
- International long codes not supported
Sender ID preservation: No, international numbers are typically overwritten Provisioning time: N/A for international businesses Use cases: Not recommended for international businesses
Short Codes
Support: Not available for international businesses Provisioning time: N/A Use cases: Reserved for domestic entities only
Restricted SMS Content, Industries, and Use Cases
Prohibited Content and Industries:
- Gambling and betting services
- Adult content or explicit material
- Political messaging
- Religious content
- Financial loan solicitations
- Controlled substances
- Cannabis products
- Alcohol-related content
- Firearms and weapons
Financial Services Restrictions:
- Must have Bank of Thailand license for loan-related content
- URLs prohibited in banking/financial messages
Content Filtering
Carrier Filtering Rules:
- URL shorteners automatically blocked
- Keywords related to restricted industries filtered
- Messages containing spam indicators blocked
Best Practices to Avoid Filtering:
- Use full-length, registered URLs only
- Avoid excessive punctuation
- Don't use all caps
- Maintain consistent sender IDs
- Register URLs with carriers before use
Best Practices for Sending SMS in Thailand
Messaging Strategy
- Keep messages under 160 characters when possible
- Include clear call-to-action
- Use registered sender IDs consistently
- Avoid promotional language in transactional messages
Sending Frequency and Timing
- Limit to one promotional message per day per recipient
- Respect quiet hours (9 PM - 9 AM)
- Avoid sending during major holidays
- Space out bulk campaigns to prevent network congestion
Localization
- Support both Thai and English content
- Use proper Thai character encoding (UCS-2)
- Consider cultural sensitivities in message content
- Provide customer support in both languages
Opt-Out Management
- Process opt-outs within 24 hours
- Send confirmation of opt-out
- Maintain unified suppression lists across campaigns
- Regular audit of opt-out compliance
Testing and Monitoring
- Test across all major carriers (AIS, DTAC, True Move)
- Monitor delivery rates by carrier
- Track opt-out rates and patterns
- Regular testing of opt-out functionality
- Monitor URL click-through rates for compliance
SMS API Integrations for Thailand
Twilio
Twilio provides robust SMS capabilities for Thailand through their REST API. Authentication uses your Account SID and Auth Token, with support for pre-registered sender IDs.
import twilio from 'twilio';
// Initialize client with your credentials
const client = twilio(
process.env.TWILIO_ACCOUNT_SID,
process.env.TWILIO_AUTH_TOKEN
);
// Function to send SMS to Thailand
async function sendThaiSMS(
to: string,
message: string,
senderId: string
) {
try {
// Ensure proper formatting for Thailand numbers
const formattedNumber = to.startsWith('+66') ? to : `+66${to.substring(1)}`;
const response = await client.messages.create({
body: message,
from: senderId, // Must be pre-registered
to: formattedNumber,
// Optional parameters for delivery tracking
statusCallback: 'https://your-webhook.com/status'
});
console.log(`Message sent successfully: ${response.sid}`);
return response;
} catch (error) {
console.error('Error sending message:', error);
throw error;
}
}
Sinch
Sinch offers SMS services with support for Thai language and pre-registered sender IDs. Their API requires API Token authentication.
import { SinchClient } from '@sinch/sdk';
class ThaiSMSService {
private client: SinchClient;
constructor() {
this.client = new SinchClient({
apiToken: process.env.SINCH_API_TOKEN,
projectId: process.env.SINCH_PROJECT_ID,
region: 'APAC' // Specific for Thailand
});
}
async sendMessage(
to: string,
message: string,
senderId: string
) {
try {
const response = await this.client.sms.send({
to: [to],
from: senderId,
body: message,
encoding: 'UCS2', // For Thai characters
delivery_report: 'summary'
});
return response;
} catch (error) {
console.error('Sinch SMS Error:', error);
throw error;
}
}
}
MessageBird
MessageBird provides SMS API access with specific support for Thailand's regulations and character encoding.
import messagebird from 'messagebird';
class ThaiMessageBirdService {
private client: any;
constructor() {
this.client = messagebird(process.env.MESSAGEBIRD_API_KEY);
}
sendSMS(
recipient: string,
message: string,
senderId: string
): Promise<any> {
return new Promise((resolve, reject) => {
this.client.messages.create({
originator: senderId,
recipients: [recipient],
body: message,
datacoding: 'unicode', // For Thai language support
type: 'flash' // Optional for urgent messages
}, (err: any, response: any) => {
if (err) {
reject(err);
} else {
resolve(response);
}
});
});
}
}
Plivo
Plivo's API supports Thailand SMS with features for handling Thai language and compliance requirements.
import plivo from 'plivo';
class ThaiPlivoService {
private client: any;
constructor() {
this.client = new plivo.Client(
process.env.PLIVO_AUTH_ID,
process.env.PLIVO_AUTH_TOKEN
);
}
async sendSMS(
to: string,
message: string,
senderId: string
) {
try {
const response = await this.client.messages.create({
src: senderId,
dst: to,
text: message,
url_strip_query_params: false, // Important for URL tracking
powerpack_uuid: process.env.PLIVO_POWERPACK_ID // Optional for better routing
});
return response;
} 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 queuing systems (Redis, RabbitMQ) for high-volume sending
- Batch messages when possible (up to 100 recipients per request)
Error Handling and Reporting
- Implement comprehensive logging with Winston or similar
- Track delivery receipts via webhooks
- Monitor common error codes:
- 4xx: Client errors (invalid numbers, sender ID issues)
- 5xx: Server errors (retry with backoff)
- Store message metadata for troubleshooting
Recap and Additional Resources
Key Takeaways
-
Compliance Priorities
- Pre-register sender IDs
- Respect time restrictions (9 PM - 9 AM)
- Maintain proper consent records
-
Technical Considerations
- Use UCS-2 encoding for Thai language
- Implement proper error handling
- Monitor delivery rates
-
Next Steps
- Review NBTC regulations
- Register sender IDs with chosen provider
- Implement consent management system
Official Resources
- NBTC Official Website
- Thailand PDPA Guidelines
- [SMS Provider Documentation]
Additional Support
- Contact your SMS provider's support team for technical assistance
- Consult with local legal counsel for compliance matters
- Join developer communities for implementation best practices