Croatia SMS Best Practices, Compliance, and Features
Croatia SMS Market Overview
Locale name: | Croatia |
---|---|
ISO code: | HR |
Region | Europe |
Mobile country code (MCC) | 219 |
Dialing Code | +385 |
Market Conditions: Croatia has a mature mobile market with high SMS adoption rates. The country's primary mobile operators include Hrvatski Telekom (HT), A1 Croatia, and Telemach Croatia. While OTT messaging apps like WhatsApp and Viber are popular, SMS remains crucial for business communications and authentication purposes due to its reliability and universal reach.
Key SMS Features and Capabilities in Croatia
Croatia offers robust SMS capabilities with support for concatenated messages and alphanumeric sender IDs, though two-way SMS functionality is limited.
Two-way SMS Support
Two-way SMS is not supported in Croatia through major SMS providers. Businesses should design their messaging strategies around one-way communications.
Concatenated Messages (Segmented SMS)
Support: Yes, concatenation is supported across most networks, 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 ensures compatibility across all devices while still allowing rich media content to be shared through linked web pages.
Recipient Phone Number Compatibility
Number Portability
Number portability is available in Croatia. This means subscribers can keep their phone numbers when switching between mobile operators. The feature is fully supported and doesn't significantly impact message delivery or routing.
Sending SMS to Landlines
Sending SMS to landline numbers is not supported in Croatia. Attempts to send messages to landline numbers will result in a failed delivery and an error response (400 error code 21614) from the SMS API. These messages won't appear in logs and won't incur charges.
Compliance and Regulatory Guidelines for SMS in Croatia
SMS communications in Croatia are governed by the Electronic Communications Act and GDPR. The Croatian Regulatory Authority for Network Industries (HAKOM) oversees telecommunications, while the Croatian Personal Data Protection Agency (AZOP) enforces data privacy regulations.
Consent and Opt-In
Explicit Consent Requirements:
- Written or electronic consent must be obtained before sending marketing messages
- Consent must be freely given, specific, and informed
- Records of consent must be maintained and easily accessible
- Pre-checked boxes or assumed consent are not compliant
Best Practices for Consent Collection:
- Use clear, unambiguous language when requesting consent
- Specify the types of messages recipients will receive
- Document the date, time, and method of consent collection
- Maintain an auditable trail of consent records
HELP/STOP and Other Commands
- All marketing messages must include clear opt-out instructions
- STOP command must be supported in both Croatian ("STOP") and English
- Additional keywords like "POMOĆ" (HELP) should be supported
- Response to STOP commands must be immediate and confirmed
- Messages should be in Croatian unless the recipient has specified otherwise
Do Not Call / Do Not Disturb Registries
Croatia does not maintain a centralized Do Not Call registry. However, businesses should:
- Maintain their own suppression lists
- Honor opt-out requests within 24 hours
- Regularly clean contact lists to remove unsubscribed numbers
- Document all opt-out requests and their execution
Time Zone Sensitivity
Croatia observes Central European Time (CET/CEST). While there are no strict legal restrictions on SMS timing:
- Send messages between 8:00 AM and 8:00 PM local time
- Avoid sending on Sundays and national holidays
- Emergency notifications may be sent outside these hours if necessary
Phone Numbers Options and SMS Sender Types for Croatia
Alphanumeric Sender ID
Operator network capability: Supported across major networks
Registration requirements: Dynamic usage allowed without pre-registration
Sender ID preservation: Not guaranteed - may be overwritten by A1 network with generic Sender ID
Long Codes
Domestic vs. International: Both supported with good delivery rates
Sender ID preservation: Yes, original Sender ID is preserved for international long codes
Provisioning time: Typically 1-2 business days
Use cases: Ideal for transactional messages, 2FA, and customer support
Short Codes
Support: Available through major carriers
Provisioning time: 8-12 weeks for approval and setup
Use cases: Best for high-volume marketing campaigns, contests, and voting applications
Restricted SMS Content, Industries, and Use Cases
Restricted Industries:
- Gambling (requires special permits)
- Adult content (prohibited)
- Cryptocurrency (subject to financial regulations)
- Political messaging (special requirements during election periods)
Content Filtering
Known Carrier Rules:
- URLs must be from trusted domains
- No excessive capitalization
- Limited use of special characters
- No references to restricted content
Tips to Avoid Blocking:
- Use registered URL shorteners
- Avoid spam trigger words
- Maintain consistent sending patterns
- Include clear business identification
Best Practices for Sending SMS in Croatia
Messaging Strategy
- Keep messages under 160 characters when possible
- Include clear call-to-action
- Use personalization tokens thoughtfully
- Maintain consistent brand voice
Sending Frequency and Timing
- Limit to 2-4 messages per month per recipient
- Respect Croatian holidays and cultural events
- Avoid sending during major sporting events
- Space out messages to prevent fatigue
Localization
- Default to Croatian language
- Offer language preference selection
- Use proper diacritical marks
- Consider regional dialects for targeted campaigns
Opt-Out Management
- Process opt-outs within 24 hours
- Maintain centralized opt-out database
- Confirm opt-out status via SMS
- Regular audit of opt-out compliance
Testing and Monitoring
- Test across all major Croatian carriers
- Monitor delivery rates by carrier
- Track engagement metrics
- Regular A/B testing of message content
SMS API integrations for Croatia
Twilio
Twilio provides a robust REST API for sending SMS to Croatia. Authentication uses account SID and auth token credentials.
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 validate Croatian phone numbers
const validateCroatianNumber = (phoneNumber: string): boolean => {
// Croatian numbers should be in format: +385XXXXXXXXX
return /^\+385\d{8,9}$/.test(phoneNumber);
};
async function sendSMSToCroatia(
to: string,
message: string,
senderId: string
): Promise<void> {
try {
// Validate phone number format
if (!validateCroatianNumber(to)) {
throw new Error('Invalid Croatian phone number format');
}
// Send message
const response = await client.messages.create({
body: message,
to: to,
from: senderId,
// Optional statusCallback URL to track delivery status
statusCallback: 'https://your-callback-url.com/status'
});
console.log(`Message sent successfully! SID: ${response.sid}`);
} catch (error) {
console.error('Error sending message:', error);
throw error;
}
}
Sinch
Sinch offers a REST API with bearer token authentication for SMS delivery to Croatia.
import axios from 'axios';
interface SinchSMSResponse {
id: string;
status: string;
}
class SinchSMSClient {
private readonly baseUrl = 'https://sms.api.sinch.com/xms/v1';
private readonly token: string;
private readonly serviceId: string;
constructor(token: string, serviceId: string) {
this.token = token;
this.serviceId = serviceId;
}
async sendSMS(to: string, message: string): Promise<SinchSMSResponse> {
try {
const response = await axios.post(
`${this.baseUrl}/${this.serviceId}/batches`,
{
from: 'YourCompany',
to: [to],
body: message
},
{
headers: {
'Authorization': `Bearer ${this.token}`,
'Content-Type': 'application/json'
}
}
);
return response.data;
} catch (error) {
console.error('Sinch SMS Error:', error);
throw error;
}
}
}
MessageBird
MessageBird provides a straightforward API for sending SMS to Croatia with API key authentication.
import { MessageBird } from 'messagebird';
class MessageBirdClient {
private client: MessageBird;
constructor(apiKey: string) {
this.client = new MessageBird(apiKey);
}
async sendSMS(
recipient: string,
message: string,
originator: string
): Promise<void> {
return new Promise((resolve, reject) => {
this.client.messages.create({
originator: originator,
recipients: [recipient],
body: message,
// Optional parameters for Croatian messages
type: 'sms',
datacoding: 'unicode' // Supports Croatian characters
}, (err, response) => {
if (err) {
reject(err);
} else {
resolve(response);
}
});
});
}
}
Plivo
Plivo's REST API supports SMS sending to Croatia with auth ID and auth token authentication.
import * as plivo from 'plivo';
class PlivoSMSClient {
private client: plivo.Client;
constructor(authId: string, authToken: string) {
this.client = new plivo.Client(authId, authToken);
}
async sendSMS(
src: string,
dst: string,
text: string
): Promise<plivo.MessageResponse> {
try {
const response = await this.client.messages.create({
src: src, // Your Plivo number or sender ID
dst: dst, // Recipient number in E.164 format
text: text,
// Optional parameters
url: 'https://your-callback-url.com/status',
method: 'POST'
});
return response;
} catch (error) {
console.error('Plivo SMS Error:', 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
Strategies for High Volume Sending:
- Implement queue systems (Redis/RabbitMQ)
- Use batch APIs where available
- Implement exponential backoff for retries
- Monitor throughput and adjust accordingly
Error Handling and Reporting
- Implement comprehensive logging
- Monitor delivery receipts
- Track common error codes
- Set up alerts for failure thresholds
- Store message metadata for troubleshooting
Recap and Additional Resources
Key Takeaways:
- Always validate phone numbers in E.164 format
- Implement proper error handling and logging
- Monitor delivery rates and engagement
- Follow compliance guidelines strictly
- Use appropriate character encoding for Croatian language
Next Steps:
- Review HAKOM regulations at www.hakom.hr
- Consult with local legal counsel for compliance
- Set up test accounts with preferred SMS providers
- Implement proper consent management
- Develop monitoring and reporting systems
Additional Resources:
- Croatian Regulatory Authority (HAKOM): www.hakom.hr
- Data Protection Agency: azop.hr
- Electronic Communications Act: nn.hr
- SMS Best Practices Guide: infobip.com/docs