Ukraine SMS Best Practices, Compliance, and Features
Ukraine SMS Market Overview
Locale name: | Ukraine |
---|---|
ISO code: | UA |
Region | Europe |
Mobile country code (MCC) | 255 |
Dialing Code | +380 |
Market Conditions: Ukraine has a robust mobile market with high SMS adoption rates. The country's major mobile operators include Kyivstar, Vodafone Ukraine, and lifecell. While OTT messaging apps like Viber and Telegram are popular for personal communication, SMS remains crucial for business communications, especially for authentication and notifications. Android devices dominate the market with approximately 80% market share, while iOS devices account for roughly 20%.
Key SMS Features and Capabilities in Ukraine
Ukraine supports most standard SMS features including concatenated messages and alphanumeric sender IDs, though two-way SMS functionality is limited.
Two-way SMS Support
Two-way SMS is not supported in Ukraine through most major SMS providers. This means businesses cannot receive replies to their SMS messages through standard A2P channels.
Concatenated Messages (Segmented SMS)
Support: Yes, concatenation is supported for most sender ID types, though support may vary by carrier.
Message length rules: Standard 160 characters per message segment using GSM-7 encoding.
Encoding considerations: Messages using GSM-7 encoding allow 160 characters, while UCS-2 encoding (for Cyrillic characters) allows 70 characters per segment.
MMS Support
MMS messages are not directly supported in Ukraine. Instead, MMS content is automatically converted to SMS with an embedded URL link where recipients can view the multimedia content. This ensures compatibility while maintaining the ability to share rich media content.
Recipient Phone Number Compatibility
Number Portability
Number portability is available in Ukraine, allowing users to keep their phone numbers when switching carriers. This feature does not significantly impact message delivery or routing as the SMS infrastructure handles ported numbers automatically.
Sending SMS to Landlines
Sending SMS to landline numbers is not supported in Ukraine. Attempts to send messages to landline numbers will result in delivery failure with a 400 response error (code 21614), and no charges will be incurred.
Compliance and Regulatory Guidelines for SMS in Ukraine
Ukraine's SMS communications are governed by the Law of Ukraine "On Electronic Communications" (effective since 01.01.2022) and the E-commerce Law. The National Commission for State Regulation of Electronic Communications (NCEC) oversees telecommunications regulations, while data protection falls under the Ukrainian Parliament Commissioner for Human Rights.
Consent and Opt-In
Explicit Consent Requirements:
- Written or electronic consent must be obtained before sending marketing messages
- Consent records should include timestamp, source, and scope of permission
- Documentation must be maintained for the duration of messaging activities
Best Practices for Obtaining Consent:
- Use clear, unambiguous language when requesting permission
- Provide detailed information about message frequency and content type
- Maintain an auditable trail of consent collection
- Enable double opt-in for marketing campaigns
HELP/STOP and Other Commands
- All SMS campaigns must support standard opt-out keywords:
- STOP, ВІДПИСАТИСЯ (unsubscribe)
- HELP, ДОВІДКА (help)
- Commands must be recognized in both Latin and Cyrillic characters
- Response messages should be provided in Ukrainian
Do Not Call / Do Not Disturb Registries
Ukraine does not maintain a centralized Do Not Call registry. However, businesses should:
- Maintain internal suppression lists
- Honor opt-out requests within 24 hours
- Implement automated filtering systems to exclude opted-out numbers
- Document all opt-out requests for compliance purposes
Time Zone Sensitivity
While Ukraine doesn't have strict quiet hours regulations for SMS, recommended practices include:
- Limiting marketing messages to 9:00-20:00 local time (UTC+2/+3)
- Sending transactional messages 24/7 only when necessary
- Respecting national holidays and cultural events
Phone Numbers Options and SMS Sender Types for in Ukraine
Alphanumeric Sender ID
Operator network capability: Fully supported
Registration requirements: No pre-registration required, dynamic usage supported
Sender ID preservation: Yes, sender IDs are preserved as specified
Long Codes
Domestic vs. International:
- Domestic long codes not supported
- International long codes supported but with limitations
Sender ID preservation: No, international long codes may be replaced with generic alphanumeric IDs
Provisioning time: Immediate for international long codes
Use cases: Recommended for transactional messaging and two-factor authentication
Short Codes
Support: Not currently supported in Ukraine
Provisioning time: N/A
Use cases: N/A
Restricted SMS Content, Industries, and Use Cases
Restricted Industries:
- Gambling and betting services
- Adult content and services
- Unauthorized pharmaceutical products
- Political campaign messages without proper disclosure
Regulated Industries:
- Financial services require regulatory disclaimers
- Healthcare messages must maintain patient confidentiality
- Insurance products need clear terms and conditions
Content Filtering
Carrier Filtering Rules:
- Messages containing URLs may face increased scrutiny
- High-frequency messaging patterns trigger spam filters
- Specific keywords related to restricted industries are blocked
Best Practices to Avoid Filtering:
- Avoid URL shorteners in messages
- Use consistent sender IDs
- Maintain steady message volumes
- Include clear business identification
Best Practices for Sending SMS in Ukraine
Messaging Strategy
- Keep messages under 160 characters when possible
- Include clear call-to-action in each message
- Personalize content using recipient's name or relevant details
- Maintain consistent branding across messages
Sending Frequency and Timing
- Limit marketing messages to 2-3 per week per recipient
- Space out messages to avoid clustering
- Consider Ukrainian holidays and observances
- Monitor engagement metrics to optimize timing
Localization
- Primary language should be Ukrainian
- Consider bilingual messages (Ukrainian/Russian) based on recipient preference
- Use proper character encoding for Cyrillic alphabets
- Respect cultural nuances in message content
Opt-Out Management
- Process opt-outs in real-time
- Send confirmation message after opt-out
- Maintain opt-out lists across all campaigns
- Regular audit of opt-out compliance
Testing and Monitoring
- Test messages across major carriers (Kyivstar, Vodafone, lifecell)
- Monitor delivery rates by carrier
- Track engagement metrics and conversion rates
- Regular testing of opt-out functionality
SMS API integrations for Ukraine
Twilio
Twilio provides a robust SMS API with specific support for Ukrainian message delivery. Authentication uses account SID and auth token credentials.
import { Twilio } from 'twilio';
// Initialize Twilio client with credentials
const client = new Twilio(
process.env.TWILIO_ACCOUNT_SID,
process.env.TWILIO_AUTH_TOKEN,
{
region: 'ie1', // Use Ireland region for better delivery to Ukraine
edge: 'dublin'
}
);
// Function to send SMS to Ukraine
async function sendSmsToUkraine(
to: string,
message: string,
senderId: string
): Promise<void> {
try {
// Ensure proper formatting for Ukrainian numbers
const formattedNumber = to.startsWith('+380') ? to : `+380${to}`;
const response = await client.messages.create({
body: message,
from: senderId, // Alphanumeric sender ID
to: formattedNumber,
statusCallback: 'https://your-webhook.com/status' // Optional delivery status updates
});
console.log(`Message sent successfully! SID: ${response.sid}`);
} catch (error) {
console.error('Error sending message:', error);
}
}
Sinch
Sinch offers direct integration with Ukrainian carriers and supports alphanumeric sender IDs.
import axios from 'axios';
class SinchSmsService {
private readonly apiToken: string;
private readonly serviceId: string;
private readonly baseUrl: string;
constructor(apiToken: string, serviceId: string) {
this.apiToken = apiToken;
this.serviceId = serviceId;
this.baseUrl = 'https://eu.sms.sinch.com/xms/v1';
}
async sendSms(to: string, message: string, senderId: string): Promise<void> {
try {
const response = await axios.post(
`${this.baseUrl}/${this.serviceId}/batches`,
{
from: senderId,
to: [to],
body: message,
delivery_report: 'summary' // Enable delivery reporting
},
{
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 provides reliable SMS delivery to Ukraine with support for multiple message types.
import messagebird from 'messagebird';
class MessageBirdService {
private client: any;
constructor(apiKey: string) {
this.client = messagebird(apiKey);
}
sendSms(
to: string,
message: string,
senderId: string
): Promise<any> {
return new Promise((resolve, reject) => {
// Configure message parameters
const params = {
originator: senderId,
recipients: [to],
body: message,
type: 'business', // Specify message type
encoding: 'auto' // Automatic handling of Unicode characters
};
this.client.messages.create(params, (err: any, response: any) => {
if (err) {
reject(err);
} else {
resolve(response);
}
});
});
}
}
Plivo
Plivo offers comprehensive SMS capabilities for Ukrainian message delivery.
import plivo from 'plivo';
class PlivoSmsService {
private client: any;
constructor(authId: string, authToken: string) {
this.client = new plivo.Client(authId, authToken);
}
async sendSms(
to: string,
message: string,
senderId: string
): Promise<void> {
try {
const response = await this.client.messages.create({
src: senderId,
dst: to,
text: message,
url_strip_query_params: false, // Preserve URL parameters if included
powerpack_uuid: 'your-powerpack-id' // Optional for better routing
});
console.log('Message sent:', response.messageUuid);
} catch (error) {
console.error('Plivo error:', 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
- Consider batch APIs for bulk messaging
Error Handling and Reporting
- Implement comprehensive logging with Winston or similar
- Monitor delivery receipts via webhooks
- Track common error codes:
- Invalid number format
- Network errors
- Rate limit exceeded
- Store message status updates for analytics
Recap and Additional Resources
Key Takeaways:
- Always use alphanumeric sender IDs for best delivery rates
- Implement proper error handling and monitoring
- Follow Ukrainian language requirements
- Maintain proper consent records
Next Steps:
- Review the Law of Ukraine "On Electronic Communications"
- Implement proper opt-out handling
- Set up delivery monitoring systems
Additional Information:
- National Commission for State Regulation of Electronic Communications
- Ukrainian Data Protection Authority
- Electronic Communications Law Portal
Technical Resources: