Check phone number activity, carrier details, line type and more.
Malaysia SMS Best Practices, Compliance, and Features
Malaysia SMS Market Overview
Locale name:
Malaysia
ISO code:
MY
Region
Asia
Mobile country code (MCC)
502
Dialing Code
+60
Market Conditions: Malaysia has a mature mobile market with high SMS adoption rates alongside popular OTT messaging apps like WhatsApp and WeChat. The country's major mobile operators include Maxis, Celcom, and Digi, serving a predominantly Android-based user base (approximately 80% Android vs 20% iOS). SMS remains a crucial channel for business communications, particularly for authentication, notifications, and marketing messages.
Key SMS Features and Capabilities in Malaysia
Malaysia offers comprehensive SMS capabilities with support for two-way messaging, message concatenation, and strict regulatory compliance requirements for business messaging.
Two-way SMS Support
Yes, Malaysia fully supports two-way SMS communications. Businesses can engage in bidirectional messaging with customers, though they must comply with local regulations regarding consent and opt-out mechanisms.
Concatenated Messages (Segmented SMS)
Support: Yes, concatenation is supported by most operators, with a notable exception of Digi Malaysia which delivers split messages separately. Message length rules: Standard 160 characters for single SMS using GSM-7 encoding, or 70 characters for Unicode (UCS-2). Encoding considerations: GSM-7 is supported for basic Latin characters, while UCS-2 is required for local language support including Bahasa Malaysia characters.
MMS Support
MMS messages are automatically converted to SMS with an embedded URL link. Due to recent regulations effective September 1, 2024, URLs in messages are blocked unless specifically whitelisted, making MMS delivery challenging in the Malaysian market.
Recipient Phone Number Compatibility
Number Portability
Yes, number portability is available in Malaysia.
While it doesn't significantly impact delivery, carriers handle routing automatically through Malaysia's Mobile Number Portability (MNP) system.
Sending SMS to Landlines
No, sending SMS to landline numbers is not possible in Malaysia.
Attempts to send SMS to landline numbers will result in a failed delivery with a 400 response error (code 21614), and no charges will be incurred.
Compliance and Regulatory Guidelines for SMS in Malaysia
The Malaysian Communications and Multimedia Commission (MCMC) oversees SMS communications, enforcing strict regulations to protect consumers. All businesses must comply with the Personal Data Protection Act 2010 (PDPA) when handling customer data and communications.
Consent and Opt-In
Explicit consent is mandatory before sending any marketing or promotional messages. Best practices include:
Maintaining clear records of when and how consent was obtained
Using double opt-in processes for marketing lists
Providing clear terms and conditions during signup
Specifying the types of messages customers will receive
Documenting consent timestamp and source
HELP/STOP and Other Commands
All SMS campaigns must support standard opt-out keywords: STOP, BATAL, HENTI
HELP/BANTUAN commands must provide information in both English and Bahasa Malaysia
Responses to these commands should be immediate and free of charge
Keywords must be case-insensitive and work in both languages
Do Not Call / Do Not Disturb Registries
Malaysia maintains a Do Not Call (DNC) registry under the PDPA. To ensure compliance:
Check numbers against the DNC registry before sending marketing messages
Maintain an internal suppression list of opted-out numbers
Remove numbers from marketing lists within 24 hours of receiving an opt-out request
Regularly update and clean marketing databases
Time Zone Sensitivity
Marketing messages are prohibited between 8:00 PM and 8:00 AM Malaysian time
Transactional and emergency messages can be sent 24/7
Consider cultural sensitivities during Ramadan and other religious observances
Phone Numbers Options and SMS Sender Types for Malaysia
Alphanumeric Sender ID
Operator network capability: Not supported for direct use Registration requirements: N/A - Alphanumeric sender IDs are not supported Sender ID preservation: All sender IDs are overwritten with operator-approved numeric sender IDs
Long Codes
Domestic vs. International:
Domestic: Supported with 200 messages/day limit
International: Supported with no daily limits
Sender ID preservation:
Domestic: Original sender ID preserved
International: Overwritten with random operator-approved numeric ID
Provisioning time: Immediate to 24 hours Use cases: P2P messaging for domestic, A2P messaging for international
Short Codes
Support: Available through operator-approved channels Provisioning time: 4-6 weeks for approval Use cases: High-volume marketing, 2FA, alerts
Restricted SMS Content, Industries, and Use Cases
Prohibited Content and Industries:
Gambling and betting
Adult content
Political messages
Religious content
Controlled substances
Cannabis products
Alcohol-related content
Firearms and weapons
Money lending/loan services
Content Filtering
Known Carrier Filtering Rules:
URLs and hyperlinks are blocked
Phone numbers in message body are blocked
Requests for personal information are filtered
Messages without "RM 0.00" prefix are blocked
Tips to Avoid Blocking:
Always include "RM 0.00" prefix
Include brand name in message content
Avoid URL shorteners
Keep content clear and straightforward
Use approved templates for sensitive industries
Best Practices for Sending SMS in Malaysia
Messaging Strategy
Keep messages under 160 characters when possible
Include clear call-to-actions
Use personalization tokens thoughtfully
Maintain consistent brand voice
Sending Frequency and Timing
Limit marketing messages to 2-4 per month per recipient
Respect time restrictions (8 AM - 8 PM)
Consider Malaysian public holidays
Space out messages to avoid overwhelming recipients
Localization
Support both Bahasa Malaysia and English
Use appropriate language based on user preference
Consider cultural nuances in message content
Provide customer support in both languages
Opt-Out Management
Process opt-outs within 24 hours
Maintain centralized opt-out database
Confirm opt-out with one final message
Never send marketing messages to opted-out numbers
Testing and Monitoring
Test across all major Malaysian carriers
Monitor delivery rates by carrier
Track opt-out rates and patterns
Analyze engagement metrics by message type
Regular A/B testing of message content
SMS API integrations for Malaysia
Twilio
Twilio provides a robust SMS API with specific support for Malaysian regulations. Integration requires an Account SID and Auth Token from your Twilio console.
import{ Twilio }from'twilio';// Initialize Twilio client with environment variablesconst client =newTwilio( process.env.TWILIO_ACCOUNT_SID, process.env.TWILIO_AUTH_TOKEN);asyncfunctionsendSMSToMalaysia(){try{// Note: RM 0.00 prefix and brand name are required for Malaysiaconst message =await client.messages.create({ body:'RM 0.00 CompanyName: Your verification code is 123456', from: process.env.TWILIO_PHONE_NUMBER, to:'+60123456789'// Malaysian number in E.164 format});console.log(`Message sent successfully: ${message.sid}`);}catch(error){console.error('Error sending message:', error);}}
Sinch
Sinch offers direct carrier connections in Malaysia with support for local regulations and formatting requirements.
import{ SinchClient }from'@sinch/sdk';const sinch =newSinchClient({ servicePlanId: process.env.SINCH_SERVICE_PLAN_ID, apiToken: process.env.SINCH_API_TOKEN});asyncfunctionsendSMSViaSinch(){try{const response =await sinch.messages.send({ from: process.env.SINCH_SENDER_ID, to:['+60123456789'],// Include required RM 0.00 prefix and brand name body:'RM 0.00 CompanyName: Welcome to our service!', delivery_report:'summary'});console.log('Message batch ID:', response.id);}catch(error){console.error('Sinch API error:', error);}}
MessageBird
MessageBird provides enterprise-grade SMS capabilities with Malaysian carrier connections.
import{ MessageBird }from'messagebird';const messagebird =MessageBird(process.env.MESSAGEBIRD_API_KEY);interfaceSMSResponse{ id:string; status:string; recipients:{ totalCount:number; totalSentCount:number;};}asyncfunctionsendSMSViaMessageBird():Promise<SMSResponse>{returnnewPromise((resolve, reject)=>{ messagebird.messages.create({ originator:'CompanyName', recipients:['+60123456789'], body:'RM 0.00 CompanyName: Your account has been activated',},(err, response)=>{if(err){reject(err);return;}resolve(response);});});}
Plivo
Plivo offers reliable SMS delivery to Malaysia with support for local compliance requirements.
import{ Client }from'plivo';const client =newClient( process.env.PLIVO_AUTH_ID, process.env.PLIVO_AUTH_TOKEN);asyncfunctionsendSMSViaPlivo(){try{const response =await client.messages.create({ src: process.env.PLIVO_SENDER_ID,// Will be overwritten with local shortcode dst:'+60123456789', text:'RM 0.00 CompanyName: Thank you for your purchase!',// Optional parameters for delivery tracking url:'https://your-callback-url.com/status', method:'POST'});console.log('Message UUID:', response.messageUuid);}catch(error){console.error('Plivo API error:', error);}}
API Rate Limits and Throughput
Domestic long codes: 200 messages per day per number
Short codes: Up to 100 messages per second
International routes: Varies by provider
Strategies for Large-Scale Sending:
Implement queue systems (Redis/RabbitMQ)
Use batch APIs when available
Monitor throughput and adjust sending rates
Implement exponential backoff for retries
Error Handling and Reporting
Log all API responses and delivery receipts
Monitor common error codes:
21614: Invalid landline number
30007: Blocked content detected
30008: Message outside allowed hours
Implement webhook handlers for delivery status updates