Vietnam SMS Best Practices, Compliance, and Features
Vietnam SMS Market Overview
Locale name: | Vietnam |
---|---|
ISO code: | VN |
Region | Asia |
Mobile country code (MCC) | 452 |
Dialing Code | +84 |
Market Conditions: Vietnam has a vibrant mobile market with high SMS usage alongside popular OTT messaging apps. The country has three major mobile operators: Viettel, Vinaphone, and Mobifone, collectively serving over 120 million mobile subscribers. Android devices dominate the market with approximately 85% market share, while iOS devices account for roughly 14%. While OTT apps like Zalo (Vietnam's leading messaging platform), Facebook Messenger, and WhatsApp are widely used, SMS remains crucial for business communications, especially for verification codes, notifications, and transactional messages.
Key SMS Features and Capabilities in Vietnam
Vietnam supports basic SMS features with strict regulations on sender IDs and content, requiring pre-registration for business messaging and maintaining specific compliance requirements for message delivery.
Two-way SMS Support
Two-way SMS is not supported in Vietnam for A2P (Application-to-Person) messaging. Businesses must use one-way messaging for their communications, with no ability to receive replies from end users.
Concatenated Messages (Segmented SMS)
Support: Yes, concatenated messages are supported, though availability may vary based on sender ID type.
Message length rules: Messages are limited to 160 characters before splitting occurs.
Encoding considerations: Messages use GSM-7 encoding for standard ASCII characters. For Vietnamese characters and other special symbols, UCS-2 encoding is used, which reduces the character limit to 70 characters per segment.
MMS Support
MMS is not available in Vietnam. Any attempt to send MMS will fail, and it's recommended to send SMS with a URL link instead for sharing media content. However, note that messages containing URLs are subject to strict filtering and may face delivery challenges.
Recipient Phone Number Compatibility
Number Portability
Number portability is available in Vietnam. This means subscribers can change their mobile operator while keeping their phone number. While this doesn't significantly affect SMS delivery, it's important to maintain updated routing tables for optimal delivery rates.
Sending SMS to Landlines
Sending SMS to landline numbers is not possible in Vietnam. Attempts to send messages to landline numbers will result in a failed delivery and an error response (400 error code 21614 for Twilio's API). These messages won't appear in logs and won't incur charges.
Compliance and Regulatory Guidelines for SMS in Vietnam
Vietnam's SMS regulations are governed by the Ministry of Information and Communications (MIC) and the Authority of Broadcasting and Electronic Information (ABEI). Starting August 12, 2024, all SMS messages must include a brand name or application name in the message body that matches the registered alphanumeric Sender ID.
Consent and Opt-In
Explicit Consent Requirements:
- Written or electronic consent must be obtained before sending any marketing messages
- Consent records must be maintained and readily available for audit
- Purpose of messaging must be clearly stated during opt-in
- Double opt-in is recommended for marketing campaigns
Best Practices for Consent Documentation:
- Store timestamp and source of consent
- Maintain detailed opt-in logs
- Keep records of consent for at least 2 years
- Document the specific services or message types the user agreed to receive
HELP/STOP and Other Commands
- All messages must include opt-out information in Vietnamese
- Standard keywords must be supported:
- STOP, HUY, TD (Stop all messages)
- HELP, HUONGDAN (Get help information)
- Response messages must be in Vietnamese
- Opt-out confirmations must be sent within 24 hours
Do Not Call / Do Not Disturb Registries
Vietnam maintains a national Do Not Call registry managed by the MIC. Businesses must:
- Check numbers against the registry before sending messages
- Update their databases at least every 30 days
- Remove numbers from marketing lists within 24 hours of registration
- Maintain internal suppression lists for opt-outs
Time Zone Sensitivity
Regulated Hours:
- Marketing messages prohibited between 8:00 PM and 8:00 AM (GMT+7)
- Transactional messages can be sent 24/7
- Consider Vietnamese holidays and weekends for non-urgent communications
Phone Numbers Options and SMS Sender Types for in Vietnam
Alphanumeric Sender ID
Operator network capability: Fully supported and required for business messaging
Registration requirements:
- Pre-registration mandatory
- 5-week approval process
- Business license and authorization documents required
- Dynamic usage not supported
Sender ID preservation: Yes, registered Sender IDs are preserved across all major carriers
Long Codes
Domestic vs. International:
- Domestic long codes not supported
- International long codes supported but not recommended
Sender ID preservation: No, international long codes are typically overwritten
Provisioning time: N/A
Use cases: Not recommended for business messaging in Vietnam
Short Codes
Support: Not currently supported in Vietnam
Provisioning time: N/A
Use cases: N/A
Restricted SMS Content, Industries, and Use Cases
Prohibited Content and Industries:
- Virtual currency and cryptocurrency
- Gambling and betting
- Adult content
- Political messages
- Religious content
- Controlled substances
- Cannabis
- Alcohol
- Firearms
- Unauthorized financial services
Financial Services Requirements:
- License from State Bank of Vietnam required
- Pre-approved message templates mandatory
- No promotional content allowed
Content Filtering
Carrier Filtering Rules:
- URLs and links typically blocked
- Phone numbers in message body not allowed
- WhatsApp/LINE chat links blocked
- Message content must match pre-approved templates
Tips to Avoid Blocking:
- Use registered Sender ID
- Follow approved message templates
- Include brand name in message body
- Avoid URL shorteners
- Keep content clear and straightforward
Best Practices for Sending SMS in Vietnam
Messaging Strategy
- Keep messages under 160 characters
- Include brand name at beginning of message
- Use clear call-to-actions
- Avoid promotional language in transactional messages
Sending Frequency and Timing
- Limit to 1-2 messages per day per recipient
- Respect quiet hours (8 PM - 8 AM)
- Avoid sending during Tet Holiday period
- Space out bulk campaigns to prevent network congestion
Localization
- Primary language should be Vietnamese
- Use proper Vietnamese diacritical marks
- Consider including English translation for international businesses
- Follow local date/time formats (DD/MM/YYYY)
Opt-Out Management
- Process opt-outs within 24 hours
- Maintain centralized opt-out database
- Send opt-out confirmation
- Regular audit of opt-out lists
Testing and Monitoring
- Test across all major carriers (Viettel, Vinaphone, Mobifone)
- Monitor delivery rates by carrier
- Track opt-out rates
- Regular content compliance checks
- Test message rendering on popular device types
SMS API integrations for Vietnam
Twilio
Twilio provides a RESTful API for sending SMS messages to Vietnam. Authentication uses account SID and auth token.
import { Twilio } from 'twilio';
// Initialize client with your credentials
const client = new Twilio(
process.env.TWILIO_ACCOUNT_SID,
process.env.TWILIO_AUTH_TOKEN
);
async function sendSMSToVietnam() {
try {
// Send message with required brand name prefix
const message = await client.messages.create({
body: '[YourBrand] Your verification code is: 123456',
from: 'YOUR_REGISTERED_SENDER_ID', // Must be pre-registered
to: '+84123456789', // Vietnam number in E.164 format
// Optional parameters for delivery tracking
statusCallback: 'https://your-callback-url.com/status'
});
console.log(`Message sent with SID: ${message.sid}`);
return message;
} catch (error) {
console.error('Error sending message:', error);
throw error;
}
}
Sinch
Sinch requires API token authentication and supports batch sending capabilities.
import axios from 'axios';
const SINCH_API_TOKEN = process.env.SINCH_API_TOKEN;
const SINCH_SERVICE_PLAN_ID = process.env.SINCH_SERVICE_PLAN_ID;
async function sendBatchSMS() {
const url = `https://sms.api.sinch.com/xms/v1/${SINCH_SERVICE_PLAN_ID}/batches`;
try {
const response = await axios.post(url, {
from: 'YOUR_SENDER_ID',
to: ['+84123456789'],
body: '[YourBrand] Your message here',
delivery_report: 'summary'
}, {
headers: {
'Authorization': `Bearer ${SINCH_API_TOKEN}`,
'Content-Type': 'application/json'
}
});
console.log('Batch ID:', response.data.id);
return response.data;
} catch (error) {
console.error('Sinch API error:', error.response?.data);
throw error;
}
}
Bird
Bird CRM's API requires workspace and channel setup before sending messages.
import axios from 'axios';
interface BirdSMSResponse {
messageId: string;
status: string;
}
async function sendBirdSMS(
phoneNumber: string,
message: string
): Promise<BirdSMSResponse> {
const BIRD_API_KEY = process.env.BIRD_API_KEY;
const WORKSPACE_ID = process.env.BIRD_WORKSPACE_ID;
const CHANNEL_ID = process.env.BIRD_CHANNEL_ID;
try {
const response = await axios.post(
`https://api.bird.com/workspaces/${WORKSPACE_ID}/channels/${CHANNEL_ID}/messages`,
{
receiver: {
contacts: [{ identifierValue: phoneNumber }]
},
body: {
type: 'text',
text: { text: `[YourBrand] ${message}` }
}
},
{
headers: {
'Authorization': `AccessKey ${BIRD_API_KEY}`,
'Content-Type': 'application/json'
}
}
);
return response.data;
} catch (error) {
console.error('Bird API error:', error);
throw error;
}
}
API Rate Limits and Throughput
Vietnam carriers impose various rate limits:
- Maximum 30 messages per second per sender ID
- Daily volume limits vary by carrier
- Batch processing recommended for large campaigns
Throughput Management Strategies:
- Implement exponential backoff for retries
- Use queuing systems (Redis, RabbitMQ) for high volume
- Schedule campaigns across multiple time windows
- Monitor carrier feedback for throttling
Error Handling and Reporting
Common Error Scenarios:
- Invalid sender ID (401/403)
- Message content violations (400)
- Network timeouts (504)
- Rate limiting (429)
Logging Best Practices:
interface SMSLogEntry {
messageId: string;
timestamp: Date;
recipient: string;
status: string;
errorCode?: string;
retryCount: number;
}
async function logSMSActivity(entry: SMSLogEntry): Promise<void> {
// Implement logging to your preferred system
// Consider using structured logging tools like Winston
console.log(JSON.stringify(entry));
}
Recap and Additional Resources
Key Takeaways
-
Compliance Requirements:
- Brand name inclusion mandatory
- Pre-registered sender IDs required
- Strict content restrictions
-
Technical Considerations:
- E.164 number formatting
- Message template compliance
- Rate limit management
-
Best Practices:
- Vietnamese language support
- Proper opt-out handling
- Delivery time restrictions
Next Steps
-
Regulatory Compliance:
- Review MIC guidelines
- Register sender IDs
- Prepare message templates
-
Technical Setup:
- Choose API provider
- Implement error handling
- Set up monitoring
-
Testing:
- Verify delivery across carriers
- Test opt-out workflow
- Monitor delivery rates
Additional Resources
Official Resources:
- Ministry of Information and Communications (MIC): https://www.mic.gov.vn
- Vietnam Telecommunications Authority: https://vnta.gov.vn
Industry Guidelines:
- Vietnam Mobile Marketing Association
- GSMA Guidelines for Vietnam
API Provider Documentation:
- Twilio Vietnam Guidelines
- Sinch Vietnam API Documentation
- Bird CRM Integration Guide