Singapore SMS Best Practices, Compliance, and Features
Singapore SMS Market Overview
Locale name: | Singapore |
---|---|
ISO code: | SG |
Region | Asia |
Mobile country code (MCC) | 525 |
Dialing Code | +65 |
Market Conditions: Singapore has a highly developed mobile market with near-universal smartphone penetration. While OTT messaging apps like WhatsApp and LINE are extremely popular, SMS remains critical for business communications, especially for authentication, notifications, and marketing. The market is dominated by three major mobile operators: Singtel, StarHub, and M1. Android devices hold approximately 60% market share, with iOS devices accounting for most of the remainder.
Key SMS Features and Capabilities in Singapore
Singapore offers robust SMS capabilities with support for concatenated messages and alphanumeric sender IDs, though two-way messaging functionality is limited.
Two-way SMS Support
Two-way SMS is not supported in Singapore through most A2P channels. Businesses requiring two-way communication typically need to use alternative methods or dedicated solutions.
Concatenated Messages (Segmented SMS)
Support: Yes, concatenation is supported for most sender ID types, though support may vary based on the specific sender ID type used.
Message length rules: Messages are limited to 160 ASCII characters before splitting occurs. Messages using GSM-7 encoding can contain up to 160 characters in a single SMS, while those using UCS-2 encoding are limited to 70 characters.
Encoding considerations: Both GSM-7 and UCS-2 encodings are supported. GSM-7 is recommended for basic Latin alphabet messages to maximize character count, while UCS-2 is required for messages containing Chinese characters or other special characters.
MMS Support
MMS messages are automatically converted to SMS with an embedded URL link. This conversion ensures delivery compatibility while still allowing rich media content to be shared through linked web pages. Best practice is to use short URLs and include clear context in the SMS portion of the message.
Recipient Phone Number Compatibility
Number Portability
Number portability is available in Singapore. This means subscribers can keep their phone numbers when switching between mobile operators. While this doesn't significantly affect message delivery or routing, it's important to maintain updated routing tables to ensure optimal delivery.
Sending SMS to Landlines
Sending SMS to landline numbers is not possible in Singapore. Attempts to send messages to landline numbers will result in a 400 response with error code 21614. These messages will not appear in logs and accounts will not be charged for failed delivery attempts.
Compliance and Regulatory Guidelines for SMS in Singapore
Singapore maintains strict regulations for SMS communications, primarily governed by the Infocomm Media Development Authority (IMDA) and the Personal Data Protection Commission (PDPC). All organizations must comply with both the Spam Control Act 2007 and the Personal Data Protection Act 2012 (PDPA).
Consent and Opt-In
Explicit Consent Requirements:
- Written or verbal consent must be obtained before sending marketing messages
- Consent must be documented and stored for verification purposes
- Purpose of messaging must be clearly stated during opt-in
- Consent records should include timestamp, source, and scope of permission
Best Practices for Obtaining Consent:
- Use double opt-in processes for marketing lists
- Provide clear terms and conditions during signup
- Maintain detailed consent logs with IP addresses and timestamps
- Regular audit and cleanup of consent records
HELP/STOP and Other Commands
- All marketing messages must include opt-out instructions
- Standard keywords that must be supported:
- "STOP" - Unsubscribe from all messages
- "HELP" - Receive information about the service
- "UNSUBSCRIBE" - Alternative to STOP
- Messages should support both English and Chinese commands
- Responses to these commands must be immediate and free of charge
Do Not Call / Do Not Disturb Registries
Singapore maintains an active Do Not Call (DNC) Registry under the PDPA:
- Organizations must check numbers against the DNC Registry before sending marketing messages
- Checking frequency: At least once every 30 days
- Penalties for non-compliance: Up to SGD 10,000 per violation
- Best Practice: Implement automated DNC checking before each campaign
Time Zone Sensitivity
Singapore follows the GMT+8 timezone (SGT). While there are no strict legal restrictions on messaging hours, follow these best practices:
- Recommended Sending Hours: 9:00 AM to 9:00 PM SGT
- Avoid Sending: Public holidays, early mornings, and late nights
- Exception: Critical service updates or emergency notifications
Phone Numbers Options and SMS Sender Types for Singapore
Alphanumeric Sender ID
Operator network capability: Fully supported across all major carriers Registration requirements:
- Mandatory registration with Singapore SMS Sender ID Registry (SSIR)
- Pre-registration required with 5-day processing time
- One-time setup fee: SGD 500
- Annual charge per Sender ID: SGD 200
Sender ID preservation:
- Registered IDs are preserved
- Unregistered IDs are replaced with "Likely-SCAM" as of January 30, 2023
Long Codes
Domestic vs. International:
- Domestic: Supported but requires registration
- International: Not supported as of January 2023
Sender ID preservation:
- Domestic: Preserved if registered
- International: Overwritten with "Likely-SCAM"
Provisioning time: Immediate for international, 5-7 business days for domestic registration
Use cases:
- Domestic: Customer service, notifications
- Not recommended for P2P messaging
Short Codes
Support: Available through major carriers Provisioning time: 8-12 weeks Use cases:
- High-volume marketing campaigns
- Two-factor authentication
- Customer service
Restricted SMS Content, Industries, and Use Cases
Prohibited Content:
- Gambling and betting
- Adult content
- Religious or political messages
- Money lending/loan services
- Controlled substances
- Cannabis products
- Alcohol-related content
- WhatsApp/LINE chat links
Content Filtering
Carrier Filtering Rules:
- Messages containing prohibited keywords are blocked
- URLs must be from approved domains
- Message content is scanned for compliance
Tips to Avoid Blocking:
- Avoid excessive punctuation
- Don't use all caps
- Limit URL usage to necessary links
- Use registered short URLs
- Avoid common spam trigger words
Best Practices for Sending SMS in Singapore
Messaging Strategy
- Keep messages under 160 characters when possible
- Include clear call-to-actions
- Use personalization tokens thoughtfully
- Maintain consistent sender ID across campaigns
Sending Frequency and Timing
- Limit to 4-6 messages per month per recipient
- Respect Singapore public holidays
- Schedule around peak business hours
- Space out messages to avoid overwhelming recipients
Localization
- Support both English and Chinese
- Use simplified Chinese characters when appropriate
- Consider cultural sensitivities in content
- Include both English and Chinese opt-out instructions
Opt-Out Management
- Process opt-outs within 24 hours
- Maintain centralized opt-out database
- Confirm opt-outs with acknowledgment message
- Regular audit of opt-out list compliance
Testing and Monitoring
- Test across all three major carriers (Singtel, StarHub, M1)
- Monitor delivery rates by carrier
- Track opt-out rates and patterns
- Regular A/B testing of message content
- Monitor for carrier filtering changes
SMS API integrations for Singapore
Twilio
Twilio provides a robust SMS API with specific support for Singapore's compliance requirements. Integration requires your Account SID and Auth Token from the Twilio Console.
Key Parameters:
from
: Registered alphanumeric sender ID or Twilio phone numberto
: Recipient number in E.164 format (+65XXXXXXXX)body
: Message content (max 1600 characters)
import { Twilio } from 'twilio';
// Initialize Twilio client
const client = new Twilio(process.env.TWILIO_ACCOUNT_SID, process.env.TWILIO_AUTH_TOKEN);
async function sendSMSSingapore(
to: string,
message: string,
senderId: string
): Promise<void> {
try {
// Validate Singapore phone number format
if (!to.startsWith('+65')) {
throw new Error('Singapore numbers must start with +65');
}
const response = await client.messages.create({
from: senderId, // Your registered Sender ID
to: to, // Recipient number
body: message, // Message content
// Optional parameters for delivery tracking
statusCallback: 'https://your-webhook.com/status'
});
console.log(`Message sent successfully! SID: ${response.sid}`);
} catch (error) {
console.error('Error sending message:', error);
throw error;
}
}
Sinch
Sinch offers a REST API for SMS delivery in Singapore, requiring API Token and Service Plan ID authentication.
Key Parameters:
from
: Registered sender IDto
: Array of recipient numbersbody
: Message textdelivery_report
: Delivery status tracking
import axios from 'axios';
class SinchSMSService {
private readonly baseUrl: string;
private readonly headers: Record<string, string>;
constructor(
private servicePlanId: string,
private apiToken: string,
private region: string = 'sg'
) {
this.baseUrl = `https://${region}.sms.api.sinch.com/xms/v1/${servicePlanId}`;
this.headers = {
'Authorization': `Bearer ${apiToken}`,
'Content-Type': 'application/json'
};
}
async sendSMS(
from: string,
to: string,
message: string
): Promise<any> {
try {
const response = await axios.post(
`${this.baseUrl}/batches`,
{
from,
to: [to],
body: message,
delivery_report: 'summary'
},
{ headers: this.headers }
);
return response.data;
} catch (error) {
console.error('Sinch SMS Error:', error);
throw error;
}
}
}
MessageBird
MessageBird (formerly Bird) provides a straightforward API for sending SMS messages in Singapore.
Key Parameters:
originator
: Your registered sender IDrecipients
: Array of recipient numberscontent
: Message contentreportUrl
: Webhook URL for delivery reports
import { MessageBirdClient, MessageParameters } from 'messagebird';
class MessageBirdService {
private client: MessageBirdClient;
constructor(apiKey: string) {
this.client = new MessageBirdClient(apiKey);
}
async sendSMS(
senderId: string,
recipient: string,
message: string
): Promise<void> {
const params: MessageParameters = {
originator: senderId,
recipients: [recipient],
body: message,
reportUrl: 'https://your-webhook.com/delivery-reports'
};
return new Promise((resolve, reject) => {
this.client.messages.create(params, (err, response) => {
if (err) {
console.error('MessageBird Error:', err);
reject(err);
} else {
resolve(response);
}
});
});
}
}
API Rate Limits and Throughput
Singapore carriers implement various rate limits:
- Per Second: 50-100 messages
- Per Minute: 1,000-2,000 messages
- Per Hour: 10,000-20,000 messages
Strategies for Large-Scale Sending:
- Implement queuing systems (Redis/RabbitMQ)
- Use batch sending APIs where available
- Implement exponential backoff for retries
- Monitor throughput and adjust sending rates
Error Handling and Reporting
Best Practices:
- Log all API responses and errors
- Implement retry logic for temporary failures
- Monitor delivery rates by carrier
- Set up alerting for unusual error rates
// Example error handling implementation
async function handleSMSError(error: any): Promise<void> {
const errorCode = error.code || 'UNKNOWN';
const errorMessage = error.message || 'Unknown error';
// Log error details
console.error(`SMS Error ${errorCode}: ${errorMessage}`);
// Determine if retry is appropriate
if (isRetryableError(errorCode)) {
await retryWithBackoff(async () => {
// Retry logic here
});
}
// Alert if error rate exceeds threshold
await checkErrorThreshold(errorCode);
}
Recap and Additional Resources
Key Takeaways
- Compliance First: Register sender IDs with SSIR before sending
- Message Content: Follow content restrictions and avoid prohibited topics
- Timing: Respect local time zones and sending frequency limits
- Error Handling: Implement robust error handling and monitoring
Next Steps
-
Registration:
- Register with SSIR (https://sgnic.sg/smsregistry)
- Complete provider-specific registration processes
-
Technical Setup:
- Implement proper error handling
- Set up delivery reporting
- Configure monitoring systems
-
Compliance Review:
- Consult with legal counsel
- Review PDPA requirements
- Set up DNC registry checking
Additional Resources
- IMDA Guidelines: https://www.imda.gov.sg
- PDPC Resources: https://www.pdpc.gov.sg
- Singapore SMS Registry: https://sgnic.sg/smsregistry
- DNC Registry: https://www.dnc.gov.sg