Azerbaijan SMS Best Practices, Compliance, and Features
Azerbaijan SMS Market Overview
Locale name: | Azerbaijan |
---|---|
ISO code: | AZ |
Region | Asia |
Mobile country code (MCC) | 400 |
Dialing Code | +994 |
Market Conditions: Azerbaijan has a mature mobile market dominated by three major operators: Azercell (market leader), Bakcell, and Azerfon. SMS remains a crucial communication channel for business messaging, particularly for authentication and notifications. While messaging apps like WhatsApp and Telegram are popular for personal communication, SMS maintains its position as the primary channel for business-to-consumer communications due to its reliability and universal reach.
Key SMS Features and Capabilities in Azerbaijan
Azerbaijan supports most standard SMS features including alphanumeric sender IDs and concatenated messages, though two-way SMS functionality is limited.
Two-way SMS Support
Two-way SMS is not supported in Azerbaijan for international senders. Local businesses may have access to two-way capabilities through direct arrangements with mobile operators.
Concatenated Messages (Segmented SMS)
Support: Yes, concatenation is supported across all major carriers, though support may vary by sender ID type.
Message length rules: Standard GSM-7 encoding allows 160 characters per segment, while UCS-2 encoding allows 70 characters per segment.
Encoding considerations: Messages using GSM-7 encoding can be concatenated up to 6 segments (918 characters), while UCS-2 encoded messages support up to 3 segments (201 characters).
MMS Support
MMS messages are not directly supported in Azerbaijan. When MMS content is sent, it is automatically converted to SMS with an embedded URL link where recipients can view the multimedia content. This ensures message delivery while maintaining the ability to share rich media content.
Recipient Phone Number Compatibility
Number Portability
Number portability is available in Azerbaijan. This means subscribers can change mobile operators while keeping their phone numbers. While this doesn't significantly impact SMS delivery, it's important to maintain updated routing tables for optimal delivery rates.
Sending SMS to Landlines
SMS cannot be sent to landline numbers in Azerbaijan. Attempts to send messages to landline numbers will result in delivery failure and typically trigger 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 Azerbaijan
SMS communications in Azerbaijan are governed by the Law of the Republic of Azerbaijan "On Personal Data" and overseen by the Ministry of Digital Development and Transport. Companies must comply with data protection regulations and telecommunications guidelines when sending SMS messages.
Consent and Opt-In
Explicit Consent Requirements:
- Written or electronic consent must be obtained before sending marketing messages
- Consent records should be maintained for at least 2 years
- Purpose of messaging must be clearly stated during opt-in
- Double opt-in is recommended for marketing campaigns
Best Practices for Documentation:
- Store timestamp and source of consent
- Maintain detailed records of opt-in methods
- Keep proof of consent acquisition channel
- Document the specific services or communications the user agreed to receive
HELP/STOP and Other Commands
- All marketing messages must include opt-out instructions
- STOP, DAYANDIR (Stop in Azerbaijani), and ОТМЕНА (Cancel in Russian) must be supported
- HELP or KÖMƏK (Help in Azerbaijani) commands should provide service information
- Commands should be processed in Latin, Cyrillic, and Arabic scripts
- Responses to commands must be provided in the same language as the request
Do Not Call / Do Not Disturb Registries
Azerbaijan does not maintain a centralized Do Not Call registry. However, businesses should:
- Maintain their own suppression lists
- Honor opt-out requests within 24 hours
- Keep records of opted-out numbers for at least 5 years
- Regularly clean contact lists to remove unsubscribed numbers
Time Zone Sensitivity
Azerbaijan follows AZT (UTC+4) time zone. While there are no strict legal restrictions on messaging hours, recommended practices include:
- Sending messages between 9:00 AM and 9:00 PM local time
- Avoiding messages during religious holidays
- Limiting late-night messages to critical notifications only
- Considering Ramadan timing during the holy month
Phone Numbers Options and SMS Sender Types for in Azerbaijan
Alphanumeric Sender ID
Operator network capability: Fully supported across all major networks
Registration requirements: Pre-registration not required, but dynamic usage is supported
Sender ID preservation: Yes, sender IDs are preserved as specified
Best practices: Avoid generic terms like "INFO" or "SMS" to prevent filtering
Long Codes
Domestic vs. International:
- Domestic long codes not supported
- International long codes fully supported
- Sender ID preservation: Yes, original sender ID is maintained
Provisioning time: Typically 1-2 business days
Use cases: Ideal for two-factor authentication and transactional messages
Short Codes
Support: Not currently supported in Azerbaijan
Alternative recommendation: Use alphanumeric sender IDs or international long codes instead
Restricted SMS Content, Industries, and Use Cases
Prohibited Content:
- Gambling and betting services
- Adult content or services
- Unauthorized pharmaceutical products
- Political campaign messages without proper authorization
- Religious content without proper permits
Regulated Industries:
- Financial services must include sender identification
- Healthcare messages must maintain patient confidentiality
- Insurance services must include disclaimer information
Content Filtering
Known Carrier Filters:
- URLs from unknown domains
- Multiple exclamation marks
- ALL CAPS messages
- Excessive special characters
Best Practices to Avoid Filtering:
- Use registered domains for links
- Maintain consistent sender IDs
- Avoid spam trigger words
- Keep message content professional and clear
Best Practices for Sending SMS in Azerbaijan
Messaging Strategy
- Keep messages under 160 characters when possible
- Include clear calls-to-action
- Use personalization tokens thoughtfully
- Maintain consistent branding across messages
Sending Frequency and Timing
- Limit marketing messages to 2-3 per week
- Space out messages across different days
- Respect national holidays and cultural events
- Avoid sending during prayer times during Ramadan
Localization
- Support Azerbaijani, Russian, and English
- Use proper character encoding for local languages
- Consider cultural nuances in message content
- Provide customer support in local languages
Opt-Out Management
- Process opt-outs within 24 hours
- Confirm opt-out with one final message
- Maintain separate opt-out lists per service type
- Regular audit of opt-out compliance
Testing and Monitoring
- Test across all major carriers (Azercell, Bakcell, Azerfon)
- Monitor delivery rates by carrier
- Track opt-out rates and patterns
- Regular testing of opt-out functionality
SMS API integrations for Azerbaijan
Twilio
Twilio provides robust SMS capabilities for Azerbaijan through their REST API. Authentication uses your Account SID and Auth Token.
import * as Twilio from 'twilio';
// Initialize the Twilio client
const client = new Twilio(
process.env.TWILIO_ACCOUNT_SID, // Your Account SID
process.env.TWILIO_AUTH_TOKEN // Your Auth Token
);
// Function to send SMS to Azerbaijan
async function sendSMSToAzerbaijan(
to: string,
message: string,
senderId: string
): Promise<void> {
try {
// Ensure proper formatting for Azerbaijan numbers
const formattedNumber = to.startsWith('+994') ? to : `+994${to}`;
const response = await client.messages.create({
body: message,
from: senderId, // Your alphanumeric sender ID
to: formattedNumber,
// 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 direct carrier connections in Azerbaijan. Their API requires API Token and Service Plan ID authentication.
import axios from 'axios';
class SinchSMSService {
private readonly apiToken: string;
private readonly servicePlanId: string;
private readonly baseUrl: string = 'https://sms.api.sinch.com/xms/v1';
constructor(apiToken: string, servicePlanId: string) {
this.apiToken = apiToken;
this.servicePlanId = servicePlanId;
}
async sendSMS(to: string, message: string, senderId: string): Promise<void> {
try {
const response = await axios.post(
`${this.baseUrl}/${this.servicePlanId}/batches`,
{
from: senderId,
to: [to],
body: message,
// Enable delivery reports
delivery_report: 'summary'
},
{
headers: {
'Content-Type': 'application/json',
Authorization: `Bearer ${this.apiToken}`
}
}
);
console.log('Message sent:', response.data.id);
} catch (error) {
console.error('Sinch SMS error:', error);
throw error;
}
}
}
MessageBird
MessageBird provides reliable SMS delivery in Azerbaijan with straightforward API integration.
import { MessageBird } from 'messagebird';
class MessageBirdService {
private client: MessageBird;
constructor(apiKey: string) {
this.client = new MessageBird(apiKey);
}
async sendSMS(
to: string,
message: string,
senderId: string
): Promise<void> {
const params = {
originator: senderId,
recipients: [to],
body: message,
// Optional parameters
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 {
console.log('Message sent:', response.id);
resolve();
}
});
});
}
}
Plivo
Plivo offers competitive rates and good coverage in Azerbaijan through their REST API.
import * as plivo from 'plivo';
class PlivoSMSService {
private client: plivo.Client;
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,
// Optional parameters
url: 'https://your-webhook.com/delivery-status',
method: 'POST'
});
console.log('Message sent:', response.messageUuid[0]);
} catch (error) {
console.error('Plivo error:', error);
throw 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 batch APIs for high-volume sending
- Consider implementing a queue system for large campaigns
Recommended Queue Implementation:
import * as Queue from 'bull';
const smsQueue = new Queue('sms-queue', {
redis: {
host: 'localhost',
port: 6379
}
});
// Add rate limiting
smsQueue.process(10, async (job) => {
const { to, message, senderId } = job.data;
// Implement your SMS sending logic here
});
Error Handling and Reporting
- Implement comprehensive logging for all API calls
- Track delivery receipts via webhooks
- Monitor error rates by carrier
- Set up alerts for unusual error patterns
Recap and Additional Resources
Key Takeaways:
- Always use alphanumeric sender IDs for best delivery rates
- Implement proper opt-out handling
- Respect local time zones and cultural considerations
- Maintain proper consent records
Next Steps:
- Review the Law of the Republic of Azerbaijan "On Personal Data"
- Implement proper consent management systems
- Set up monitoring and reporting infrastructure
Additional Resources:
- Ministry of Digital Development and Transport
- Azerbaijan Data Protection Overview
- Telecom Regulations Portal
Industry Guidelines: