Taiwan SMS Best Practices, Compliance, and Features
Taiwan SMS Market Overview
Locale name: | Taiwan |
---|---|
ISO code: | TW |
Region | Asia |
Mobile country code (MCC) | 466 |
Dialing Code | +886 |
Market Conditions: Taiwan has a highly developed mobile market with near-universal smartphone penetration. While OTT messaging apps like LINE dominate personal communications, SMS remains crucial for business communications, particularly for authentication, notifications, and marketing. The market is served by major operators including Chunghwa Telecom, Taiwan Mobile, and Far EasTone. Android devices hold approximately 65% market share, with iOS devices accounting for most of the remainder.
Key SMS Features and Capabilities in Taiwan
Taiwan supports most standard SMS features with some restrictions, notably on sender IDs and content types, while maintaining strong compliance requirements for business messaging.
Two-way SMS Support
Two-way SMS is not supported in Taiwan for A2P (Application-to-Person) messaging. No exceptions or special provisions are available for enabling two-way communication.
Concatenated Messages (Segmented SMS)
Support: Yes, concatenation is supported, though availability may vary by sender ID type.
Message length rules: Standard SMS length is 160 characters (GSM-7) or 70 characters (UCS-2) before splitting. For Chinese characters, the maximum is 65 characters per SMS.
Encoding considerations: Both GSM-7 and UCS-2 encoding are supported. Messages containing Chinese characters automatically use UCS-2 encoding.
MMS Support
MMS messages are automatically converted to SMS with an embedded URL link. Best Practice: When sending media content, ensure the URL is registered/allowlisted with local carriers to prevent delivery failures.
Recipient Phone Number Compatibility
Number Portability
Number portability is available in Taiwan.
This feature does not significantly impact message delivery or routing as carriers handle the routing automatically.
Sending SMS to Landlines
SMS cannot be sent to landline numbers in Taiwan.
Attempts to send SMS to landline numbers will result in a 400 response error (code 21614), with no message delivery and no charge to the account.
Compliance and Regulatory Guidelines for SMS in Taiwan
Taiwan's SMS communications are regulated by the National Communications Commission (NCC) and governed by the Telecommunications Act. Companies must comply with both telecommunications regulations and the Personal Data Protection Act (PDPA) when handling customer data and sending messages.
Consent and Opt-In
Explicit Consent Requirements:
- Written or electronic consent must be obtained before sending marketing messages
- Consent records must be maintained and easily accessible
- Purpose of messaging must be clearly stated during opt-in
- Separate consent required for different types of communications
Best Practices for Consent:
- Implement double opt-in verification
- Store consent timestamps and methods
- Maintain detailed records of opt-in sources
- Regularly update consent status
HELP/STOP and Other Commands
- All marketing messages must include opt-out instructions
- STOP commands must be supported in both Chinese and English
- Common keywords: 退訂, STOP, 取消, CANCEL
- Response to HELP/STOP must be immediate and free of charge
Do Not Call / Do Not Disturb Registries
Taiwan maintains a national Do Not Call (DNC) registry managed by the NCC.
- Businesses must:
- Check numbers against the DNC registry monthly
- Maintain internal suppression lists
- Remove numbers within 24 hours of opt-out requests
- Document compliance procedures
Time Zone Sensitivity
Strict Time Restrictions:
- No promotional messages between 12:30 PM - 1:30 PM
- No promotional messages between 9:00 PM - 9:00 AM
- Emergency and service messages exempt from time restrictions
- All times based on Taiwan Standard Time (GMT+8)
Phone Numbers Options and SMS Sender Types for Taiwan
Alphanumeric Sender ID
Operator network capability: Not supported for direct use
Registration requirements: No pre-registration available
Sender ID preservation: Sender IDs are overwritten with long codes outside platform
Long Codes
Domestic vs. International:
- Domestic long codes not supported
- International long codes supported but modified during delivery
Sender ID preservation: No, original sender IDs are not preserved
Provisioning time: Immediate to 24 hours
Use cases: Transactional messages, alerts, notifications
Short Codes
Support: Not currently available in Taiwan
Provisioning time: N/A
Use cases: N/A
Restricted SMS Content, Industries, and Use Cases
Prohibited Content and Industries:
- Firearms and weapons
- Gambling and betting
- Adult content
- Money lending/loan services
- Political messages
- Religious content
- Controlled substances
- Cannabis products
- Alcohol-related content
- WhatsApp/LINE chat links
Content Filtering
Carrier Filtering Rules:
- URLs must be pre-registered and allowlisted
- Shortened URLs are strictly prohibited
- Maximum of 5 sender IDs per business
- Content screening for prohibited keywords
Tips to Avoid Blocking:
- Use full-length, registered URLs only
- Avoid sensitive keywords
- Maintain consistent sender IDs
- Follow time restriction guidelines
Best Practices for Sending SMS in Taiwan
Messaging Strategy
- Keep messages under 65 Chinese characters when possible
- Include clear call-to-actions
- Use registered company name in messages
- Avoid excessive punctuation or symbols
Sending Frequency and Timing
- Limit to 1-2 messages per day per recipient
- Respect quiet hours and lunch breaks
- Consider Taiwan's public holidays
- Space out bulk campaigns
Localization
- Support both Traditional Chinese and English
- Use appropriate character encoding (UCS-2)
- Consider local cultural sensitivities
- Include local contact information
Opt-Out Management
- Process opt-outs within 24 hours
- Maintain centralized opt-out database
- Confirm opt-out status to users
- Regular database cleaning
Testing and Monitoring
- Test across major carriers (Chunghwa, Taiwan Mobile, Far EasTone)
- Monitor delivery rates by carrier
- Track opt-out rates and patterns
- Regular content compliance audits
SMS API integrations for Taiwan
Twilio
Twilio provides a RESTful API for sending SMS messages to Taiwan. Authentication uses your Account SID and Auth Token.
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 Taiwan
async function sendSMSToTaiwan(
to: string,
message: string
): Promise<void> {
try {
// Ensure number is in E.164 format for Taiwan (+886)
const formattedNumber = to.startsWith('+886')
? to
: `+886${to.replace(/^0/, '')}`;
const response = await client.messages.create({
body: message,
to: formattedNumber,
// Sender ID will be overwritten by carrier
from: process.env.TWILIO_PHONE_NUMBER,
// Optional parameters for delivery tracking
statusCallback: 'https://your-webhook.com/status'
});
console.log(`Message sent! SID: ${response.sid}`);
} catch (error) {
console.error('Error sending message:', error);
}
}
Sinch
Sinch uses Bearer token authentication and provides a simple REST API for SMS delivery.
import axios from 'axios';
class SinchSMSService {
private readonly baseUrl: string;
private readonly apiToken: string;
constructor(serviceId: string, apiToken: string) {
this.baseUrl = `https://sms.api.sinch.com/xms/v1/${serviceId}`;
this.apiToken = apiToken;
}
async sendSMS(to: string, message: string): Promise<void> {
try {
const response = await axios.post(
`${this.baseUrl}/batches`,
{
to: [to],
body: message,
// Encoding for Traditional Chinese support
encoding: 'UCS2'
},
{
headers: {
'Authorization': `Bearer ${this.apiToken}`,
'Content-Type': 'application/json'
}
}
);
console.log('Message sent:', response.data.id);
} catch (error) {
console.error('Sinch SMS error:', error);
}
}
}
MessageBird
MessageBird offers a straightforward REST API with comprehensive delivery reporting.
import { MessageBird } from 'messagebird';
class MessageBirdService {
private client: any;
constructor(apiKey: string) {
this.client = MessageBird(apiKey);
}
sendSMS(to: string, message: string): Promise<void> {
return new Promise((resolve, reject) => {
this.client.messages.create({
originator: 'YourBrand', // Will be overwritten
recipients: [to],
body: message,
// Taiwan-specific parameters
datacoding: 'unicode',
type: 'flash' // For time-sensitive messages
}, (err: any, response: any) => {
if (err) {
reject(err);
return;
}
resolve(response);
});
});
}
}
Plivo
Plivo provides a REST API with authentication via Basic Auth using your Auth ID and Auth Token.
import { Client } from 'plivo';
class PlivoSMSService {
private client: Client;
constructor(authId: string, authToken: string) {
this.client = new Client(authId, authToken);
}
async sendSMS(to: string, message: string): Promise<void> {
try {
const response = await this.client.messages.create({
src: process.env.PLIVO_NUMBER, // Source number
dst: to, // Destination number
text: message,
// Taiwan-specific parameters
url_strip_query_params: false, // Preserve full URLs
method: 'POST'
});
console.log('Message sent:', response.messageUuid);
} catch (error) {
console.error('Plivo error:', error);
}
}
}
API Rate Limits and Throughput
- Default rate limits: 30 messages per second
- Batch processing recommended for volumes > 1000/hour
- Implement exponential backoff for retry logic
- Queue messages during peak hours (9AM-5PM TST)
Error Handling and Reporting
// Common error handling implementation
interface SMSError {
code: string;
message: string;
timestamp: Date;
recipient: string;
}
class SMSErrorHandler {
static handleError(error: SMSError): void {
// Log error to monitoring system
console.error(`SMS Error ${error.code}: ${error.message}`);
// Implement retry logic for specific error codes
if (['30003', '30004', '30005'].includes(error.code)) {
// Queue for retry
this.queueForRetry(error);
}
}
private static queueForRetry(error: SMSError): void {
// Implement retry queue logic
}
}
Recap and Additional Resources
Key Takeaways
-
Compliance Priorities
- Obtain explicit consent
- Respect time restrictions
- Register URLs
- Monitor DNC registry
-
Technical Considerations
- Use UCS-2 encoding for Chinese
- Implement proper error handling
- Monitor delivery rates
- Test across major carriers
Next Steps
- Review NCC regulations at www.ncc.gov.tw
- Consult with local legal counsel for compliance
- Register with chosen SMS provider
- Implement testing framework
Additional Resources
- Taiwan NCC Guidelines: www.ncc.gov.tw/english/guidelines
- Personal Data Protection Act: www.moj.gov.tw/EN/pdpa
- Telecom Regulations: www.law.moj.gov.tw
Industry Associations:
- Taiwan Mobile Business Association
- Taiwan Communications Industry Development Association