sms compliance
sms compliance
Croatia SMS Best Practices, Compliance, and Features
Explore Croatia's SMS landscape: compliance (Electronic Communications Act & GDPR), features, & best practices. Understand consent, STOP commands, & sender IDs. Learn about 400 error code 21614 (landlines), message concatenation (160 GSM-7/70 UCS-2 chars), plus Twilio, Sinch, MessageBird, and Plivo API integration.
Croatia SMS Best Practices, Compliance, and Features
SMS Market Overview in Croatia
| 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 approximately 4.5 million mobile subscribers (as of 2024), representing a penetration rate exceeding 110% of the population. The country's primary mobile operators include Hrvatski Telekom (HT), A1 Croatia, and Telemach Croatia, with market shares of approximately 40%, 35%, and 20% respectively [source: HAKOM Annual Report]. 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. Typical SMS delivery rates in Croatia range from 95-98% for properly formatted messages sent through registered channels.
SMS Features and Technical Capabilities for Croatian Networks
Croatia supports robust SMS delivery with concatenated messaging and alphanumeric sender IDs across all major mobile operators (Hrvatski Telekom, A1 Croatia, Telemach), though two-way SMS has network limitations.
Two-Way SMS Messaging in Croatia
Croatian mobile networks do not support standard two-way SMS due to carrier infrastructure limitations and regulatory requirements. Inbound SMS routing from mobile numbers to API endpoints is not available through major providers like Hrvatski Telekom, A1, or Telemach.
Alternative solutions for interactive SMS:
- Use dedicated short codes or long codes with inbound support (provisioning required)
- Implement web-based response forms with unique links in messages
- Direct users to email or customer support channels
- Use QR codes linking to feedback forms
- Implement app-based messaging for interactive communications
Design your messaging strategies around one-way communications for standard campaigns.
Long SMS and Concatenated Messaging
Support: Yes, concatenation works across most networks, though availability varies 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 work in Croatia. Messages with special characters automatically use UCS-2 encoding, reducing the character limit per segment.
Croatian diacritics example: The text "Poštovani, vaša narudžba je spremna" (22 characters) contains Croatian-specific characters (š, ž) that trigger UCS-2 encoding, counting as 22 characters against the 70-character limit per segment.
Segmentation table:
| Segments | GSM-7 max chars | UCS-2 max chars |
|---|---|---|
| 1 | 160 | 70 |
| 2 | 306 (153×2) | 134 (67×2) |
| 3 | 459 (153×3) | 201 (67×3) |
| 4+ | 153 per segment | 67 per segment |
MMS to SMS Conversion
MMS messages automatically convert to SMS with an embedded URL link, ensuring compatibility across all devices while allowing rich media content through linked web pages.
MMS conversion details:
- Maximum file size: typically 300-500 KB depending on carrier
- URL expiration: links remain active for 30 days
- Supported formats: JPEG, PNG, GIF for images; MP4 for video
- Conversion is automatic and transparent to the sender
- Recipient receives SMS with shortened URL to view content
Croatian Mobile Number Formats and Portability
Number Portability in Croatia
Croatia supports mobile number portability (MNP) under HAKOM regulations, allowing subscribers to retain phone numbers when switching carriers. Number portability does not affect SMS delivery rates or routing reliability.
Can You Send SMS to Croatian Landlines?
Croatia does not support sending SMS to landline numbers. Attempts to send messages to landlines result in failed delivery and an error response (400 error code 21614) from the SMS API. These messages don't appear in logs and don't incur charges.
SMS Compliance Requirements and GDPR Regulations in Croatia
Croatian SMS communications are governed by the Electronic Communications Act (Zakon o elektroničkim komunikacijama, NN 73/08, 90/11, 133/12, 80/13) and EU GDPR (2016/679). HAKOM (Croatian Regulatory Authority for Network Industries) oversees telecommunications compliance, while AZOP (Croatian Personal Data Protection Agency) enforces data privacy and consent requirements for marketing SMS.
Key legal references:
- GDPR Article 6 (lawfulness of processing) and Article 7 (conditions for consent)
- Electronic Communications Act Article 107 (unsolicited communications)
- Croatian Personal Data Protection Act (NN 42/18)
Penalties for non-compliance:
- GDPR violations: up to €20 million or 4% of annual global turnover (whichever is higher)
- Electronic Communications Act violations: fines ranging from 10,000-500,000 HRK (approx. €1,300 – €66,000)
- Administrative warnings and cease-and-desist orders from HAKOM
SMS Consent Requirements and Opt-In Management
Explicit Consent Requirements:
- Obtain written or electronic consent before sending marketing messages
- Consent must be freely given, specific, and informed
- Maintain consent records and keep them 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
Implementing STOP Keywords and Opt-Out Commands
- Include clear opt-out instructions in all marketing messages
- Support the STOP command in both Croatian ("STOP") and English
- Support additional keywords like "POMOĆ" (HELP)
- Respond to STOP commands immediately and confirm the opt-out
- Send messages in Croatian unless the recipient specifies otherwise
Croatia Do Not Call Registry and Suppression Lists
Croatia does not maintain a centralized Do Not Call registry. However, you should:
- Maintain your 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
Best Times to Send SMS in Croatia (CET Timezone)
Croatia observes Central European Time (CET/CEST). Send messages between 8:00 AM and 8:00 PM local time:
- Avoid sending on Sundays and national holidays
- Send emergency notifications outside these hours only if necessary
SMS Sender ID Options: Alphanumeric, Long Codes, and Short Codes
Using Alphanumeric Sender IDs for Croatian SMS
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
Sender ID specifications:
- Length: 3-11 characters
- Allowed characters: A-Z, a-z, 0-9, spaces (no special characters)
- Must start with a letter (not a number)
- Case-sensitive but may be converted to uppercase by some carriers
- Examples: "MyCompany", "InfoHR", "NotifyApp"
A1 sender ID override: A1 Croatia may replace custom alphanumeric sender IDs with a generic sender (e.g., "INFO" or "SMS") for unregistered senders. To prevent this, register your sender ID directly with A1 or use a long code.
Long Code Numbers for SMS in Croatia
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 Code Provisioning and Use Cases
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
Prohibited Content and Restricted Industries for SMS Marketing
Restricted Industries:
- Gambling (requires special permits from the Ministry of Finance)
- Adult content (prohibited)
- Cryptocurrency (subject to financial regulations)
- Political messaging (special requirements during election periods)
Permit acquisition for gambling: Obtain a license from the Croatian Tax Administration and register with HAKOM. Applications require proof of legal entity status, financial guarantees, and compliance plans. Processing time: 3 – 6 months.
Consequences for violations:
- Immediate suspension of SMS sending privileges
- Fines from HAKOM (10,000-500,000 HRK)
- Potential criminal liability for fraudulent or illegal content
- Blacklisting of sender IDs and phone numbers
- Legal action from AZOP for data privacy violations
SMS Content Filtering Rules by Croatian Carriers
Known Carrier Rules:
- URLs must be from trusted domains
- No excessive capitalization
- Limited use of special characters
- No references to restricted content
Detailed filtering criteria:
- "Excessive capitalization": More than 30% of message in UPPERCASE
- "Trusted domains": Registered domains with HTTPS, no URL shorteners unless whitelisted (e.g., bit.ly, goo.gl may be blocked)
- Spam trigger words: "free", "winner", "click now", "limited time", "urgent", "act now" in English or Croatian equivalents
- Special characters: Avoid excessive emojis (>2 per message), currency symbols, or unusual Unicode characters
Tips to Avoid Blocking:
- Use registered URL shorteners
- Avoid spam trigger words
- Maintain consistent sending patterns
- Include clear business identification
SMS Best Practices: Delivery, Timing, and Localization
Crafting Effective SMS Messages for Croatian Audiences
- Keep messages under 160 characters when possible
- Include clear call-to-action
- Use personalization tokens thoughtfully
- Maintain consistent brand voice
Croatian message templates:
- Transactional: "Poštovani, vaša narudžba #[ID] je poslana. Pratite: [URL]"
- Appointment reminder: "Podsjetnik: Vaš termin je [DATE] u [TIME]. Za promjene: [PHONE]"
- 2FA: "Vaš sigurnosni kod: [CODE]. Vrijedi 10 minuta."
Optimal SMS Sending Frequency and Campaign 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
Croatian Language Localization and Character Encoding
- Default to Croatian language
- Offer language preference selection
- Use proper diacritical marks
- Consider regional dialects for targeted campaigns
Croatian diacritical marks and encoding:
- Croatian alphabet includes: Č, Ć, Dž, Đ, LJ, NJ, Š, Ž (uppercase and lowercase)
- These characters require UCS-2 encoding, reducing message length from 160 to 70 characters per segment
- Common characters: č, ć, š, ž, đ in words like "hvala", "naručiti", "poslano"
- Encoding impact: A message "Hvala što ste naručili!" (24 chars including spaces) fits in one 70-char UCS-2 segment, but "Thank you for your order!" (25 chars) fits in one 160-char GSM-7 segment
Managing SMS Unsubscribes and Opt-Outs
- Process opt-outs within 24 hours
- Maintain centralized opt-out database
- Confirm opt-out status via SMS
- Regular audit of opt-out compliance
SMS Delivery Testing and Performance Monitoring
- Test across all major Croatian carriers
- Monitor delivery rates by carrier
- Track engagement metrics
- Regular A/B testing of message content
Benchmark metrics for Croatia:
- Good delivery rate: >95%
- Excellent delivery rate: >98%
- Average click-through rate: 3-5% (for messages with links)
- Typical opt-out rate: <0.5% per campaign
- Average response time: Messages typically deliver within 5-15 seconds
Monitoring implementation: Use status callbacks with your SMS provider to track delivery receipts (DLR). Monitor error codes 30003 (unreachable), 30005 (unknown destination), and 30006 (landline) for Croatian numbers.
SMS API Integration Examples: Twilio, Sinch, MessageBird, Plivo
Twilio
Twilio provides a robust REST API for sending SMS to Croatia. Authenticate using 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
// 8 digits: older mobile numbers and some operators
// 9 digits: newer mobile numbers (most common)
return /^\+385\d{8,9}$/.test(phoneNumber);
};
// Hrvatski Telekom (HT): primarily 9-digit numbers starting with 91, 92, 95, 97, 99
// A1 Croatia: 9-digit numbers starting with 98
// Telemach: 9-digit numbers starting with 96
// Legacy 8-digit numbers are still in use but being phased out
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;
}
}
}SMS API Rate Limits and High-Volume Sending Strategies
- 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
Common SMS Error Codes and Troubleshooting
- Implement comprehensive logging
- Monitor delivery receipts
- Track common error codes
- Set up alerts for failure thresholds
- Store message metadata for troubleshooting
Common SMS error codes for Croatia:
| Error Code | Provider | Meaning | Remediation |
|---|---|---|---|
| 21614 | Twilio | Invalid phone number (landline) | Validate number format, ensure mobile |
| 30003 | Twilio | Unreachable destination | Check number is active, retry later |
| 30005 | Twilio | Unknown destination | Verify number format and country code |
| 30006 | Twilio | Landline or unreachable | Use mobile numbers only |
| 40001 | Sinch | Invalid recipient | Validate E.164 format |
| 40301 | Sinch | Insufficient credits | Top up account balance |
| 9 | MessageBird | Missing or invalid parameters | Check API request structure |
| 21 | MessageBird | Message too long | Reduce length or enable concatenation |
| 155 | Plivo | Invalid sender ID | Check sender ID format and registration |
| 157 | Plivo | Number portability lookup failed | Retry with delay |
Error handling code pattern:
try {
await sendSMS(to, message);
} catch (error) {
if (error.code === 21614) {
// Log and skip landline
logger.warn(`Landline detected: ${to}`);
} else if (error.code === 30003) {
// Queue for retry
await retryQueue.add({ to, message }, { delay: 60000 });
} else {
// Alert and escalate
alerting.notify(`SMS error ${error.code}: ${error.message}`);
}
}Summary and Additional Croatian SMS 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
Frequently Asked Questions About Croatian SMS
Q: Why are my messages not delivering to Croatian numbers?
- Verify E.164 format: +385XXXXXXXXX (8-9 digits)
- Check if number is landline (not supported)
- Ensure sender ID is 3-11 characters, starts with letter
- Confirm account balance and rate limits
Q: How do I handle Croatian special characters?
- Use UCS-2 encoding (automatic when special chars detected)
- Remember: 70 chars per segment instead of 160
- Test with actual Croatian text containing č, ć, š, ž, đ
Q: My sender ID is being replaced by "INFO". Why?
- A1 Croatia overwrites unregistered sender IDs
- Solution: Register sender ID with A1 or use long code
- Alternative: Use international long code for preservation
Q: What's the best time to send marketing SMS in Croatia?
- Weekdays: 9:00 AM – 7:00 PM CET/CEST
- Avoid: Sundays, national holidays, late evenings
- Best engagement: Tuesday-Thursday, 10:00 AM – 4:00 PM
Q: Do I need consent for transactional messages?
- Transactional (order confirmations, 2FA): No explicit marketing consent required
- Must be service-related and expected by user
- Marketing content in transactional messages requires consent
- Always provide opt-out mechanism
Q: How long should I retain consent records?
- Minimum: Duration of relationship + 3 years
- Recommended: 5-7 years for audit protection
- Must be easily retrievable for AZOP inspections
Frequently Asked Questions
How to send SMS messages to Croatia?
Use a reputable SMS API provider like Twilio, Sinch, MessageBird, or Plivo. Ensure the recipient numbers are in E.164 format (+385XXXXXXXXX) and comply with Croatian regulations. Remember that two-way SMS is not supported.
What is the SMS character limit in Croatia?
Standard SMS length limits apply: 160 characters for GSM-7 encoding and 70 characters for UCS-2. Concatenated messages are supported for longer texts, but special characters reduce the limit per segment as they require UCS-2 encoding.
Why does Croatia convert MMS to SMS?
MMS messages are automatically converted to SMS with an embedded URL link in Croatia to guarantee compatibility across devices while still allowing sharing of rich media content through web pages.
When should I send marketing SMS in Croatia?
The best practice is between 8:00 AM and 8:00 PM local time, avoiding Sundays and national holidays. Adhere to consent and opt-out regulations while respecting recipient preferences.
Can I send SMS to landlines in Croatia?
No, sending SMS to landline numbers in Croatia is not supported. Attempts to do so will result in failed delivery and a specific error response (400 error code 21614) from the SMS API without incurring charges.
What is the process for getting consent for SMS marketing in Croatia?
Explicit consent is required for marketing messages. This must be freely given, specific, and informed, either in written or electronic form. Maintain clear records of consent, including the date, time, and method of collection.
What are the HELP/STOP command requirements for SMS in Croatia?
All marketing messages must include clear opt-out instructions. The STOP command must be honored in both Croatian ("STOP") and English, with an immediate confirmed response. Other keywords like "POMO??" (HELP) should also be supported.
What are the rules for alphanumeric sender IDs in Croatia?
Alphanumeric sender IDs are supported, and dynamic usage is allowed without pre-registration. However, be aware that the sender ID is not guaranteed to be preserved and may be overwritten by the A1 network.
How to use long codes for SMS in Croatia?
Long codes are supported for both domestic and international messaging with good delivery rates and sender ID preservation for international codes. They're ideal for transactional messages, 2FA, and customer support, with provisioning typically taking 1-2 business days.
What is the best way to manage high-volume SMS sending in Croatia?
Implement queue systems, use batch APIs, incorporate exponential backoff for retries, and monitor throughput and adjust as needed to manage high-volume SMS campaigns effectively.
What is the role of HAKOM in SMS regulations in Croatia?
The Croatian Regulatory Authority for Network Industries (HAKOM) oversees telecommunications, enforcing regulations related to SMS communication, including compliance with the Electronic Communications Act.
What SMS content is restricted in Croatia?
Restricted content includes gambling (requires special permits), adult content (prohibited), cryptocurrency (subject to financial regulations), and political messaging (special requirements during elections). Avoid spam trigger words and ensure URLs are from trusted domains.
What are the best practices for SMS localization in Croatia?
Default to Croatian, offer language preferences, use proper diacritical marks, and consider regional dialects for targeted campaigns. Ensure all communications respect local customs and language nuances.
How to handle SMS opt-outs in Croatia?
Process opt-outs within 24 hours, maintain a centralized opt-out database, confirm the opt-out via SMS, and regularly audit for compliance. Respecting user preferences is crucial for maintaining good practice.
What are the API rate limits for popular SMS providers in Croatia?
Twilio: 100/second, Sinch: 30/second, MessageBird: 60/second, and Plivo: 50/second. Remember to implement strategies like queuing and backoff for high-volume sending to stay within these limits.