sms compliance
sms compliance
Hungary SMS Best Practices, Compliance, and Features
Comprehensive guide to SMS messaging in Hungary covering technical capabilities, GDPR compliance, sender ID options, and API integration
Hungary SMS Best Practices, Compliance, and Features
SMS Market Overview in Hungary
| Locale name | Hungary |
|---|---|
| ISO code | HU |
| Region | Europe |
| Mobile country code (MCC) | 216 |
| Dialing code | +36 |
Market Conditions: Hungary's mobile market has over 100% penetration according to NMHH data. Three major operators provide nationwide coverage: Vodafone Hungary, Yettel (formerly Telenor), and Magyar Telekom. SMS remains critical for business communications – especially two-factor authentication (2FA), one-time passwords (OTP), and transactional notifications – despite the popularity of OTT apps like WhatsApp and Facebook Messenger. Android devices hold approximately 60% market share.
SMS Features and Technical Capabilities
Hungary's telecommunications infrastructure supports two-way messaging, concatenated messages, and number portability across all major carriers. However, sender ID preservation varies by operator, with only Vodafone maintaining alphanumeric sender IDs consistently.
Two-way SMS Support
All major carriers in Hungary support two-way SMS with no restrictions beyond standard compliance requirements for commercial messaging.
Common Use Cases:
- Customer support and service inquiries
- Appointment confirmations and reminders with reply options (CONFIRM/CANCEL)
- Survey responses and feedback collection
- Interactive voting and polling
- Verification workflows requiring user response
Implementation Example:
Outbound: "Your appointment is scheduled for 10 AM tomorrow. Reply CONFIRM or CANCEL."
Inbound: "CONFIRM"
Outbound: "Thank you! Your appointment is confirmed."Concatenated Messages (Segmented SMS)
Support: Yes, 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 | Characters per segment | Segment 1 | Segments 2+ | Max segments |
|---|---|---|---|---|
| GSM-7 | 7-bit | 160 | 153 | 255 |
| UCS-2 (Unicode) | 16-bit | 70 | 67 | 255 |
Encoding considerations: Both GSM-7 and UCS-2 encodings are supported. Messages using special characters automatically use UCS-2 encoding, reducing the character limit per segment.
MMS Support
Carriers automatically convert MMS messages to SMS with an embedded URL link, ensuring device compatibility while preserving rich media access. Use short URLs and include clear context in the SMS portion.
Technical Specifications:
- Maximum MMS size: typically 300–600 KB (carrier-dependent)
- Supported formats: JPEG, PNG, GIF, MP4 (video), MP3 (audio)
- Vodafone: up to 600 KB
- Yettel (Telenor): up to 300 KB
- Magyar Telekom: up to 500 KB
- Fallback behavior: MMS-to-SMS conversion with content link
- Recommended approach: host media externally, send shortened URL via SMS
Recipient Phone Number Compatibility
Number Portability
Users can keep their phone numbers when switching carriers. Number portability does not impact message delivery or routing.
Sending SMS to Landlines
Sending SMS to landline numbers is not supported. Attempts fail with error code 21614. These messages do not appear in logs and incur no charges.
SMS Compliance and GDPR Requirements in Hungary
Hungary follows GDPR requirements and enforces local regulations through the National Media and Infocommunications Authority (NMHH). All SMS marketing must comply with Act XLVIII of 2008 on Commercial Advertising Activities and the Hungarian Data Protection Act.
Penalties for Non-Compliance:
- GDPR violations: up to €20 million or 4% of annual global turnover (whichever is higher) per GDPR Article 83
- Hungarian advertising law violations: up to HUF 50 million (~€130,000) per offense
- NMHH can impose additional sanctions including service suspension
- Data Protection Authority (NAIH) can levy administrative fines for data handling violations
- Repeated violations may result in criminal prosecution under Hungarian law
Consent and Opt-In
Explicit Consent Requirements:
- Obtain written or electronic consent before sending marketing messages
- Ensure consent is freely given, specific, and informed
- Keep detailed records of when and how you obtained consent
- Include clear terms of service and privacy policy references
- Use double opt-in for marketing campaigns
Example Consent Language:
"I agree to receive promotional SMS messages from [Company Name].
I understand I can unsubscribe at any time by replying STOP.
Message frequency varies. Standard rates may apply."HELP/STOP and Other Commands
- Must support both "STOP" and "LEIRATKOZAS" (unsubscribe in Hungarian)
- HELP/SEGITSEG commands must provide support information in Hungarian
- All automated responses should be in both Hungarian and English
- Commands must be case-insensitive and free of charge for users
Example Automated Responses:
STOP response (bilingual):
"You have been unsubscribed. No more messages will be sent. /
Leiratkozás megtörtént. Nem küldünk több üzenetet."
HELP response (bilingual):
"For support, contact us at support@company.com or +36 1 234 5678.
Reply STOP to unsubscribe. /
Segítségért: support@company.com vagy +36 1 234 5678.
Leiratkozás: válaszoljon STOP."Do Not Call / Do Not Disturb Registries
Hungary maintains a national Do Not Call registry ("Robinson List") managed by the NMHH.
- Check numbers against this registry before sending marketing messages
- Maintain internal suppression lists of opted-out numbers
- Process opt-out requests within 24 hours
- Regularly update and clean contact databases
Accessing the Robinson List:
- Registry access: Apply through NMHH official portal
- Registration cost: approximately HUF 50,000–100,000 annually for commercial access
- API or bulk file download available for registered businesses
- Checking individual numbers: free through NMHH consumer portal
- Update frequency: check registry at least monthly or before each campaign
- Retention: maintain proof of registry checks for at least 2 years
Time Zone Sensitivity
Hungary observes Central European Time (CET/CEST):
- Restrict marketing messages to 8:00 AM – 8:00 PM local time
- Avoid sending during national holidays
- Emergency or service-related messages can be sent 24/7 if necessary
Hungarian National Holidays to Avoid:
- January 1: New Year's Day
- March 15: National Day (1848 Revolution)
- Easter Monday (variable date)
- May 1: Labour Day
- Whit Monday (variable date, 50 days after Easter)
- August 20: St. Stephen's Day (Constitution Day)
- October 23: National Day (1956 Revolution)
- November 1: All Saints' Day
- December 25–26: Christmas
SMS Sender ID Options and Phone Number Types
Alphanumeric Sender ID
Operator network capability: Partial support Registration requirements: Not required Sender ID preservation: Only Vodafone preserves sender IDs; Yettel (Telenor) and Magyar Telekom overwrite with local long codes
Character Limits and Formatting:
- Maximum length: 11 characters
- Allowed characters: A–Z, a–z, 0–9, space (no special symbols)
- Must start with a letter (not a number)
- Case-insensitive (displayed as sent by Vodafone, uppercase by others)
- No hyphens, underscores, or punctuation
- Examples: "CompanyName", "YourBrand", "ACME Corp"
Fallback Behavior (Yettel/Telekom):
- Carriers replace with a Hungarian long code (+36 format)
- Replacement number enables reply-to functionality
- Some devices show original sender ID in message body
Long Codes
Domestic vs. International: Both supported Sender ID preservation: Yes for domestic, No for international Provisioning time: Immediate to 24 hours Use cases: Ideal for two-way communication, customer support, and transactional messages
Pricing and Cost Considerations:
- Domestic long codes: typically €5–15/month rental + per-message fees
- International long codes: variable, often €20–50/month rental
- Per-message cost: €0.03–0.08 depending on volume and provider
- Two-way SMS: may incur additional inbound message charges (€0.01–0.03)
- Volume discounts available for high-throughput use cases
Short Codes
Support: Not currently supported in Hungary Provisioning time: N/A Use cases: N/A
Restricted SMS Content, Industries, and Use Cases
Restricted Industries and Content:
- Gambling and betting services (unless licensed)
- Adult content or services
- Unauthorized financial services
- Prescription medications
- Political messaging (requires special authorization)
Licensing and Authorization Process:
- Gambling/betting: Must hold valid license from National Tax and Customs Administration (NAV)
- Financial services: Requires authorization from Hungarian National Bank (MNB)
- Political messaging: Must register with National Election Office during campaign periods
- Prescription medications: Requires pharmaceutical advertising permit from National Institute of Pharmacy and Nutrition (OGYÉI)
- Processing time: 30–90 days depending on industry
- Annual compliance audits may be required
Penalties for Restricted Content:
- First offense: HUF 500,000–5 million fine
- Repeated violations: Service suspension and criminal charges
- NMHH can impose immediate blocking of sender IDs
- Reputational damage and potential lawsuits from recipients
Content Filtering
Known Carrier Filters:
- URLs from suspicious domains
- Keywords associated with spam or scams
- High-frequency sending patterns
- Messages containing certain special characters
Common Filtered Keywords (avoid or use carefully):
- "ingyen" (free), "nyerj" (win), "garancia" (guarantee) – in marketing context
- "klikkelj itt" (click here) – especially with shortened URLs
- Excessive use of "URGENT", "ACT NOW" type language
- Financial terms combined with URLs: "hitel" (loan), "befektetés" (investment)
- Multiple currency symbols or excessive punctuation (!!!, €€€)
Best Practices to Avoid Filtering:
- Use registered URL shorteners
- Avoid excessive punctuation
- Keep content clear and professional
- Maintain consistent sending patterns
Best Practices for SMS Campaigns in Hungary
Messaging Strategy
- Keep messages under 160 characters when possible
- Include clear calls-to-action
- Use personalization tokens thoughtfully
- Maintain consistent branding
Effective Messaging Examples:
✓ Good (clear, actionable, personalized):
"Hi [Name], your order #12345 shipped today. Track: [URL] Questions? Reply HELP."
✗ Poor (vague, no action, impersonal):
"Your package update is available. Check website for details."
✓ Good (promotional with clear opt-out):
"[BrandName]: 20% off this weekend! Use code SAVE20. Shop: [URL] Stop: reply STOP"
✗ Poor (misleading, no opt-out):
"WINNER!!! You've been selected! Click now!!!"Sending Frequency and Timing
- Limit to 2–4 messages per month per recipient
- Respect Hungarian holidays and observances
- Avoid weekends unless explicitly approved by recipient
- Space out bulk campaigns to prevent network congestion
Localization
- Primary language should be Hungarian
- Consider bilingual messages for international businesses
- Use proper character encoding for Hungarian special characters
- Respect cultural sensitivities and local customs
Hungarian Special Characters and Encoding:
- Hungarian alphabet includes: á, é, í, ó, ö, ő, ú, ü, ű
- GSM-7 encoding: Does NOT support ő and ű (forces UCS-2 encoding)
- UCS-2 (Unicode) encoding: Required for full Hungarian character set
- Character count impact: Using ő or ű reduces segment length from 160 to 70 characters
- Best practice: Test messages with Hungarian characters to verify encoding
- Example words requiring UCS-2: "köszönöm" (thank you), "időpont" (appointment), "rendelés" (order)
Opt-Out Management
- Process opt-outs in real-time
- Maintain centralized opt-out database
- Include clear opt-out instructions in every message
- Confirm opt-out status via confirmation message
Testing and Monitoring
- Test across all major Hungarian carriers
- Monitor delivery rates by carrier
- Track engagement metrics and opt-out rates
- Test opt-out functionality regularly
- Monitor for carrier filtering patterns
Recommended Monitoring Tools:
- SMS gateway provider dashboards (Twilio Console, Sinch Portal, MessageBird Dashboard)
- Third-party monitoring: Datadog, New Relic, Grafana for delivery metrics
- Carrier-specific tools: Vodafone Business Portal, Telekom Business Center
- Log aggregation: ELK Stack (Elasticsearch, Logstash, Kibana) or Splunk
- Alert systems: PagerDuty, Opsgenie for delivery failures
SMS API Integration: Twilio, Sinch, MessageBird & Plivo
Twilio
Twilio provides a robust SMS API with comprehensive support for Hungarian numbers. Authentication uses account SID and auth token credentials.
import { Twilio } from 'twilio';
// Initialize Twilio client
const client = new Twilio(process.env.TWILIO_ACCOUNT_SID, process.env.TWILIO_AUTH_TOKEN);
async function sendSMSToHungary(to: string, message: string) {
try {
// Ensure number is in E.164 format for Hungary (+36...)
const formattedNumber = to.startsWith('+36') ? to : `+36${to}`;
const response = await client.messages.create({
body: message,
to: formattedNumber,
from: process.env.TWILIO_PHONE_NUMBER, // Your Twilio number
// Optional parameters for delivery tracking
statusCallback: 'https://your-webhook.com/status'
});
console.log(`Message sent successfully! SID: ${response.sid}`);
return response;
} catch (error) {
console.error('Error sending message:', error);
// Handle specific error codes
if (error.code === 21211) {
console.error('Invalid phone number format');
} else if (error.code === 21408) {
console.error('Permission to send not available for this region');
} else if (error.code === 21610) {
console.error('Message rejected - likely unsubscribed or blocked');
}
throw error;
}
}Sinch
Sinch offers direct carrier connections in Hungary with support for both transactional and marketing messages.
import axios from 'axios';
class SinchSMSClient {
private readonly apiToken: string;
private readonly serviceId: string;
private readonly baseUrl: string = 'https://sms.api.sinch.com/xms/v1';
constructor(apiToken: string, serviceId: string) {
this.apiToken = apiToken;
this.serviceId = serviceId;
}
async sendSMS(to: string, message: string) {
try {
const response = await axios.post(
`${this.baseUrl}/${this.serviceId}/batches`,
{
from: 'YourCompany', // Alphanumeric sender ID
to: [to],
body: message,
delivery_report: 'summary'
},
{
headers: {
'Authorization': `Bearer ${this.apiToken}`,
'Content-Type': 'application/json'
}
}
);
return response.data;
} catch (error) {
console.error('Sinch SMS error:', error);
throw error;
}
}
}MessageBird
MessageBird provides reliable SMS delivery in Hungary with support for Unicode characters.
import { MessageBird } from 'messagebird';
class MessageBirdClient {
private client: MessageBird;
constructor(apiKey: string) {
this.client = new MessageBird(apiKey);
}
sendSMS(to: string, message: string): Promise<any> {
return new Promise((resolve, reject) => {
this.client.messages.create({
originator: 'YourBrand',
recipients: [to],
body: message,
type: 'sms',
encoding: 'unicode' // Supports Hungarian special characters
}, (err, response) => {
if (err) {
reject(err);
} else {
resolve(response);
}
});
});
}
}Plivo
Plivo offers high-throughput SMS capabilities for the Hungarian market.
import plivo from 'plivo';
class PlivoSMSClient {
private client: plivo.Client;
constructor(authId: string, authToken: string) {
this.client = new plivo.Client(authId, authToken);
}
async sendSMS(to: string, message: string) {
try {
const response = await this.client.messages.create({
src: 'YourNumber', // Your Plivo number
dst: to,
text: message,
// Optional parameters
url: 'https://your-webhook.com/status',
method: 'POST'
});
return response;
} catch (error) {
console.error('Plivo SMS error:', error);
throw error;
}
}
}API Provider Comparison for Hungary
| Provider | Alphanumeric ID Support | Two-way SMS | Delivery Rate | Avg. Latency | Pricing (per SMS) | Hungary-Specific Features |
|---|---|---|---|---|---|---|
| Twilio | Partial (Vodafone only) | Yes | 98–99% | 2–5 seconds | €0.045–0.075 | Strong delivery reporting, E.164 validation |
| Sinch | Partial (Vodafone only) | Yes | 97–99% | 3–6 seconds | €0.040–0.070 | Direct carrier connections, batch API |
| MessageBird | Partial (Vodafone only) | Yes | 97–98% | 3–7 seconds | €0.042–0.068 | Unicode optimization, conversation API |
| Plivo | Partial (Vodafone only) | Yes | 96–98% | 4–8 seconds | €0.038–0.065 | High throughput, powerpack features |
Selection Criteria:
- High-volume transactional: Sinch or Plivo (best throughput)
- Two-way conversations: Twilio or MessageBird (robust webhook systems)
- Hungarian character support: MessageBird or Twilio (best Unicode handling)
- Budget-conscious: Plivo (typically lowest cost)
- Reliability priority: Twilio or Sinch (highest delivery rates)
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 (max 500 per batch)
- Monitor delivery rates and adjust sending speed accordingly
Example: Queue Implementation with Redis:
import Redis from 'ioredis';
import { Twilio } from 'twilio';
const redis = new Redis();
const twilioClient = new Twilio(process.env.TWILIO_ACCOUNT_SID, process.env.TWILIO_AUTH_TOKEN);
async function queueSMS(to: string, message: string) {
await redis.lpush('sms_queue', JSON.stringify({ to, message, timestamp: Date.now() }));
}
async function processSMSQueue() {
while (true) {
const item = await redis.rpop('sms_queue');
if (!item) {
await new Promise(resolve => setTimeout(resolve, 100));
continue;
}
const { to, message } = JSON.parse(item);
try {
await twilioClient.messages.create({ to, from: process.env.TWILIO_PHONE_NUMBER, body: message });
} catch (error) {
console.error('Failed to send SMS:', error);
// Re-queue with exponential backoff
await redis.lpush('sms_retry_queue', item);
}
// Rate limit: 100 msgs/sec = 10ms delay
await new Promise(resolve => setTimeout(resolve, 10));
}
}Error Handling and Reporting
- Implement comprehensive logging with Winston or similar
- Track delivery receipts via webhooks
- Monitor common error codes (invalid numbers, network issues)
- Set up alerts for unusual error rates
- Store message metadata for troubleshooting
Common SMS Error Codes for Hungary
| Error Code | Provider | Description | Resolution | Billable |
|---|---|---|---|---|
| 21211 | Twilio | Invalid 'To' phone number | Validate E.164 format (+36...) | No |
| 21408 | Twilio | Permission to send not enabled for region | Enable Hungary in account geo-permissions | No |
| 21610 | Twilio | Unsubscribed recipient | Remove from list, honor opt-out | No |
| 21614 | Twilio | Landline or unreachable carrier | Verify mobile number, check number type | No |
| 30003 | Twilio | Unreachable destination | Number inactive or out of service | Yes |
| 30005 | Twilio | Unknown destination | Invalid number or blocked | No |
| 30007 | Twilio | Message filtered (spam) | Review content, avoid spam triggers | Yes |
| 400 | Sinch | Invalid request parameters | Check API payload format | No |
| 401 | Sinch | Authentication failed | Verify API token | No |
| 403 | Sinch | Forbidden (quota exceeded) | Upgrade plan or wait for reset | No |
| 9 | MessageBird | Missing or invalid parameters | Review required fields | No |
| 21 | MessageBird | Number not allowed | Check country permissions | No |
| 49 | MessageBird | Insufficient balance | Add credits to account | No |
| 105 | Plivo | Destination out of service | Number inactive or ported | Yes |
| 107 | Plivo | Gateway error | Retry with exponential backoff | No |
Best Practices for Error Handling:
- Implement retry logic with exponential backoff (wait 1s, 2s, 4s, 8s…)
- Log all errors with full context (timestamp, recipient, message ID, error details)
- Set up monitoring alerts for error rate > 5% or specific critical errors
- Maintain a dead-letter queue for persistently failing messages
- Regularly review error logs to identify patterns or carrier-specific issues
Recap and Additional Resources
Key Takeaways:
- Always format numbers in E.164 format (+36…)
- Implement proper error handling and monitoring
- Follow Hungarian time zone restrictions
- Maintain proper opt-out handling
- Use Unicode encoding for special characters
Next Steps:
- Review NMHH regulations at www.nmhh.hu
- Consult local legal counsel for compliance
- Set up test accounts with your preferred SMS providers
- Implement proper consent management
- Establish monitoring and reporting systems
Common Issues and Solutions:
| Issue | Symptom | Cause | Solution |
|---|---|---|---|
| Alphanumeric ID replaced | Sender shows as +36 number | Yettel/Telekom overwrite policy | Use domestic long code or accept replacement |
| Character encoding errors | Garbled Hungarian characters | Wrong encoding (GSM-7 vs UCS-2) | Force UCS-2 encoding for ő, ű characters |
| High delivery failures | Messages not reaching recipients | Numbers on Robinson List | Check DNC registry before sending |
| Spam filtering | Low delivery rates, no error | Content triggers carrier filters | Avoid spam keywords, use registered URLs |
| Rate limit errors | 429 HTTP errors | Exceeding provider limits | Implement queue system with rate throttling |
| Landline rejection | 21614 error code | Attempting SMS to landline | Validate mobile numbers before sending |
Additional Resources:
- Hungarian Data Protection Authority: www.naih.hu
- EU GDPR Guidelines: gdpr.eu
- Telecommunications Act: net.jogtar.hu
- NMHH Guidelines for Commercial Communications: www.nmhh.hu (English version available on request)
- Hungarian Consumer Protection Authority: www.nfh.hu
- Act XLVIII of 2008 on Commercial Advertising: net.jogtar.hu
Frequently Asked Questions
How to send SMS messages in Hungary?
Use an SMS API provider like Twilio, Sinch, MessageBird, or Plivo. Ensure phone numbers are in E.164 format (+36...) and comply with Hungarian regulations. Remember to manage opt-outs and monitor delivery rates.
What is the Robinson list in Hungary?
The Robinson List is Hungary's national Do Not Call registry, managed by the NMHH. Businesses must check against this list before sending marketing messages to ensure compliance and avoid penalties.
Why does Hungary convert MMS to SMS?
MMS messages are automatically converted to SMS with a URL link to maintain broad compatibility across all devices, some of which may not fully support MMS.
When should I send marketing SMS in Hungary?
Send messages between 8:00 AM and 8:00 PM local time, avoiding national holidays and weekends unless the recipient explicitly approves. Respect local customs and time zone sensitivities.
Can I use alphanumeric sender IDs in Hungary?
Alphanumeric sender IDs are partially supported. Only Vodafone preserves them; Telenor and Telekom overwrite with a local long code.
What are the SMS compliance rules in Hungary?
Hungary follows GDPR and local regulations overseen by the NMHH. Obtain explicit consent before sending marketing SMS, support STOP/LEIRATKOZAS commands, and respect the Robinson List (Do Not Call registry).
How to handle SMS opt-outs in Hungary?
Process opt-out requests (STOP/LEIRATKOZAS) within 24 hours, free of charge. Maintain a centralized opt-out database and confirm the opt-out status to the user via SMS.
What are the character limits for SMS in Hungary?
Standard limits are 160 characters for GSM-7 encoding and 70 for UCS-2, which is used for special characters. Longer messages are concatenated (segmented).
What SMS API integrations are available for Hungary?
Popular SMS API providers supporting Hungary include Twilio, Sinch, MessageBird, and Plivo. Each offers different features, pricing, and throughput capabilities.
How long does it take to provision a long code in Hungary?
Long code provisioning in Hungary can take anywhere from immediate up to 24 hours, depending on the provider and specific requirements.
What are the restricted SMS content types in Hungary?
Restricted content includes gambling, adult content, unauthorized financial services, prescription medications, and political messaging without proper authorization.
How to avoid SMS filtering in Hungary?
Use registered URL shorteners, avoid excessive punctuation, keep content clear and professional, maintain consistent sending patterns, and ensure compliance with regulations.
What is the best messaging strategy for SMS in Hungary?
Keep messages under 160 characters, include clear calls-to-action, personalize thoughtfully, maintain consistent branding, and localize content using Hungarian.
What are the throughput limits for SMS APIs in Hungary?
API throughput varies by provider (e.g., Twilio 100/second, Sinch 30/second). Use queue systems and exponential backoff strategies to manage high-volume sending.
How to format phone numbers for sending SMS to Hungary?
Always use the E.164 format, which begins with +36 followed by the Hungarian phone number. This international format ensures proper message delivery.