Bulgaria SMS Best Practices, Compliance, and Features
Bulgaria SMS Market Overview
Locale name: | Bulgaria |
---|---|
ISO code: | BG |
Region | Europe |
Mobile country code (MCC) | 284 |
Dialing Code | +359 |
Market Conditions: Bulgaria has a mature mobile market with high SMS adoption rates. The country's main mobile operators include A1 Bulgaria, Telenor Bulgaria, and Vivacom. While OTT messaging apps like WhatsApp and Viber are popular, SMS remains crucial for business communications and authentication purposes. The market shows a relatively even split between Android and iOS users, with Android having a slight edge in market share.
Key SMS Features and Capabilities in Bulgaria
Bulgaria supports most standard SMS features including concatenated messages and number portability, though two-way SMS functionality is limited.
Two-way SMS Support
Two-way SMS is not supported in Bulgaria through major SMS providers. This limitation affects interactive messaging campaigns and automated response systems.
Concatenated Messages (Segmented SMS)
Support: Yes, concatenation is supported, though availability may vary by sender ID type.
Message length rules: Standard SMS length limits apply - 160 characters for GSM-7 encoding, 70 characters for UCS-2 encoding.
Encoding considerations: Both GSM-7 and UCS-2 encodings are supported. Messages using special characters will automatically use UCS-2 encoding, reducing the character limit per segment.
MMS Support
MMS messages are automatically converted to SMS with an embedded URL link. This conversion ensures delivery while maintaining rich media sharing capabilities through web-based content delivery.
Recipient Phone Number Compatibility
Number Portability
Number portability is available in Bulgaria. This feature allows users to keep their phone numbers when switching between mobile operators, with minimal impact on SMS delivery or routing.
Sending SMS to Landlines
Sending SMS to landline numbers is not possible in Bulgaria. Attempts to send messages to landline numbers will result in a failed delivery and typically generate a 400 response error (code 21614) through SMS APIs.
Compliance and Regulatory Guidelines for SMS in Bulgaria
Bulgaria follows EU telecommunications regulations and GDPR requirements for SMS communications. The Communications Regulation Commission (CRC) oversees telecommunications activities, while the Commission for Personal Data Protection (CPDP) enforces data privacy regulations.
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 communication must be clearly stated during opt-in
- Double opt-in recommended for marketing campaigns
HELP/STOP and Other Commands
- STOP commands must be supported in both Bulgarian and English
- Common keywords include: STOP, ОТКАЗ, КРАЙ
- All marketing messages must include opt-out instructions
- HELP responses should be provided in Bulgarian by default
Do Not Call / Do Not Disturb Registries
Bulgaria does not maintain a centralized Do Not Call registry. However, businesses must:
- Maintain their own suppression lists
- Honor opt-out requests within 24 hours
- Keep records of opted-out numbers for at least 2 years
- Regularly clean contact lists against internal opt-out databases
Time Zone Sensitivity
Bulgaria observes Eastern European Time (EET/EEST). Best practices include:
- Sending messages between 9:00 AM and 8:00 PM local time
- Avoiding messages on national holidays
- Limiting urgent messages outside business hours to genuine emergencies
Phone Numbers Options and SMS Sender Types for in Bulgaria
Alphanumeric Sender ID
Operator network capability: Supported
Registration requirements: Pre-registration not required, but dynamic usage is supported
Sender ID preservation: Yes, except for A1 and Vivacom Bulgaria where generic Alphanumeric IDs may be used
Long Codes
Domestic vs. International:
- Domestic long codes not supported
- International long codes supported
Sender ID preservation: No, international numbers may be overwritten with generic Alphanumeric IDs
Provisioning time: Immediate to 24 hours
Use cases: Transactional messages, alerts, and notifications
Short Codes
Support: Not currently supported in Bulgaria
Provisioning time: N/A
Use cases: N/A
Restricted SMS Content, Industries, and Use Cases
Restricted Industries:
- Unauthorized gambling services
- Adult content or services
- Unlicensed financial services
- Cryptocurrency promotions without proper disclaimers
- Unauthorized pharmaceutical products
Content Filtering
Carrier Filtering Rules:
- Messages containing certain keywords may be blocked
- URLs should be from reputable domains
- Avoid excessive capitalization and special characters
Best Practices to Avoid Filtering:
- Use clear, professional language
- Avoid spam trigger words
- Include company name in sender ID
- Keep URLs short and legitimate
Best Practices for Sending SMS in Bulgaria
Messaging Strategy
- Keep messages under 160 characters when possible
- Include clear call-to-actions
- Personalize messages using recipient's name or preferences
- Maintain consistent brand voice
Sending Frequency and Timing
- Limit to 2-4 messages per month per recipient
- Respect Bulgarian holidays and Orthodox Christian observances
- Avoid weekends unless specifically requested
- Space out messages to prevent recipient fatigue
Localization
- Primary language should be Bulgarian
- Consider dual-language messages for international businesses
- Use proper character encoding for Cyrillic alphabet
- Respect local cultural nuances and customs
Opt-Out Management
- Process opt-outs immediately
- Maintain clear opt-out records
- Provide confirmation of successful opt-out
- Regular audit of opt-out lists
Testing and Monitoring
- Test across all major Bulgarian carriers (A1, Telenor, Vivacom)
- Monitor delivery rates by carrier
- Track engagement metrics
- Regular testing of opt-out functionality
SMS API integrations for Bulgaria
Twilio
Twilio provides a robust SMS API with comprehensive support for Bulgarian numbers. Here's how to implement it:
import * as Twilio from 'twilio';
// Initialize client with your credentials
const client = new Twilio(
process.env.TWILIO_ACCOUNT_SID,
process.env.TWILIO_AUTH_TOKEN
);
// Function to send SMS to Bulgaria
async function sendBulgarianSMS(
to: string,
message: string,
senderId: string
) {
try {
// Validate Bulgarian phone number format
if (!to.startsWith('+359')) {
throw new Error('Invalid Bulgarian phone number format');
}
const response = await client.messages.create({
body: message,
to: to, // Bulgarian number in E.164 format
from: senderId, // Your registered sender ID
// Optional parameters for delivery tracking
statusCallback: 'https://your-webhook.com/status'
});
return response.sid;
} catch (error) {
console.error('SMS sending failed:', error);
throw error;
}
}
Sinch
Sinch offers reliable SMS delivery to Bulgaria with support for Unicode characters:
import { SinchClient } from '@sinch/sdk-core';
// Initialize Sinch client
const sinchClient = new SinchClient({
servicePlanId: process.env.SINCH_SERVICE_PLAN_ID,
apiToken: process.env.SINCH_API_TOKEN,
region: 'eu' // Use EU region for Bulgaria
});
async function sendSinchSMS(
recipientNumber: string,
messageText: string
) {
try {
const response = await sinchClient.sms.batches.send({
to: [recipientNumber],
from: 'YourBrand', // Alphanumeric sender ID
body: messageText,
// Enable delivery reports
deliveryReport: 'summary'
});
return response.id;
} catch (error) {
console.error('Sinch SMS failed:', error);
throw error;
}
}
MessageBird
MessageBird provides high-throughput SMS delivery for Bulgarian numbers:
import * as messagebird from 'messagebird';
// Initialize MessageBird client
const mbClient = messagebird(process.env.MESSAGEBIRD_API_KEY);
// Function to send SMS with delivery tracking
async function sendMessageBirdSMS(
to: string,
message: string
): Promise<string> {
return new Promise((resolve, reject) => {
mbClient.messages.create({
originator: 'YourBrand',
recipients: [to],
body: message,
// Optional parameters
reportUrl: 'https://your-webhook.com/delivery',
encoding: 'auto' // Automatically handle Unicode
}, (err, response) => {
if (err) reject(err);
else resolve(response.id);
});
});
}
Plivo
Plivo offers competitive rates for Bulgarian SMS with detailed delivery insights:
import * as plivo from 'plivo';
// Initialize Plivo client
const plivoClient = new plivo.Client(
process.env.PLIVO_AUTH_ID,
process.env.PLIVO_AUTH_TOKEN
);
async function sendPlivoSMS(
destination: string,
message: string
) {
try {
const response = await plivoClient.messages.create({
src: 'YourBrand', // Your sender ID
dst: destination, // Destination number
text: message,
// Optional parameters
url: 'https://your-webhook.com/status',
method: 'POST'
});
return response.messageUuid[0];
} catch (error) {
console.error('Plivo SMS failed:', error);
throw error;
}
}
API Rate Limits and Throughput
- Twilio: 100 messages per second
- Sinch: 30 messages per second
- MessageBird: 60 messages per second
- Plivo: 50 messages per second
Throughput Management Strategies:
- Implement exponential backoff for retry logic
- Use queue systems (Redis, RabbitMQ) for high-volume sending
- Batch messages when possible (up to 500 recipients per request)
- Monitor delivery rates and adjust sending patterns accordingly
Error Handling and Reporting
- Implement comprehensive logging with Winston or Bunyan
- Track delivery rates and failures by carrier
- Set up automated alerts for unusual error rates
- Store delivery receipts for audit purposes
- Implement circuit breakers for API failures
Recap and Additional Resources
Key Takeaways:
- Always use E.164 format for Bulgarian numbers (+359)
- Implement proper error handling and retry logic
- Monitor delivery rates and adjust sending patterns
- Maintain compliance with GDPR and local regulations
Next Steps:
- Review the Communications Regulation Commission guidelines
- Implement proper consent management systems
- Set up monitoring and alerting for SMS delivery
- Test thoroughly across all major Bulgarian carriers
Additional Resources: