Multi-Language Notifications That Speak Your Users' Language
Pass your user's locale — Sendivent resolves the right template with graceful fallbacks when translations are missing.
Locale-Aware Delivery
Pass the language with your event. We resolve the right template version.
Template Per Locale
All language versions grouped under the same event. One payload, many languages.
Graceful Fallbacks
If a translation is missing, fall back to your default language automatically.
RTL-Friendly Templates
Author templates for Arabic, Hebrew, and other RTL languages using standard HTML patterns.
Date Formatting
Format dates in templates using Handlebars helpers.
Template Overview
See which events have templates for each language so you can spot gaps.
Pass the locale, we handle the rest
User receives the German template, or gracefully falls back to default if missing.
await sendivent
.event('order.confirmed')
.to({ email: 'user@example.com' })
.language('de')
.payload({
orderNumber: '12345',
total: 99.00
})
.send();
Why Multi-Language Matters
Global products need global communication. When users receive notifications in their own language:
- Higher engagement: Localized content consistently outperforms generic messages
- Better experience: Users feel valued and understood
- Reduced support: Fewer "I don't understand this email" tickets
- Legal compliance: Some regions require native language communication
How It Works
1. Set User Language
Store the user's preferred language in their contact profile via the REST API:
// POST /v1/contacts - create or update a contact
await fetch('https://api.sendivent.com/v1/contacts', {
method: 'POST',
headers: {
'Authorization': 'Bearer live_xxx',
'Content-Type': 'application/json'
},
body: JSON.stringify({
email: 'hans@example.de',
name: 'Hans Schmidt',
language: 'de' // ISO 639-1 language code
})
});
2. Create Localized Templates
Create templates for each language you support:
| Event | Language | Template |
|---|---|---|
welcome |
en |
"Welcome to Acme!" |
welcome |
de |
"Willkommen bei Acme!" |
welcome |
es |
"¡Bienvenido a Acme!" |
welcome |
ja |
"Acmeへようこそ!" |
3. Send With Language
Pass the language explicitly or rely on the user's stored preference:
// Option A: Pass language explicitly
await sendivent
.event('welcome')
.to({ email: 'ana@example.com' })
.language('pt-BR') // Brazilian Portuguese
.payload({ activationUrl: 'https://app.example.com/activate' })
.send();
// Option B: Use stored user language (from contact profile)
await sendivent
.event('welcome')
.to({ email: 'hans@example.de' }) // Has language: 'de' in profile
.payload({ activationUrl: 'https://app.example.com/activate' })
.send();
4. Automatic Fallback Resolution
When Sendivent looks for a template, it tries in order:
- Exact match:
pt-BR(Brazilian Portuguese) - Language only:
pt(Portuguese) - Default:
*(fallback template)
This means you can support regional variants where needed, but fall back gracefully when you don't have a specific translation.
Date Formatting
Use the formatDate helper to format dates in your templates:
Order placed: {{formatDate orderDate "YYYY-MM-DD"}}
For locale-specific date and currency formatting, format values in your application code before passing them to the payload.
Translation Workflow
Dashboard Overview
Track your translation coverage at a glance:
- See which events have templates for each language
- Identify missing translations before they cause fallbacks
Template Organization
Organize templates by language in the dashboard:
Events/
├── welcome/
│ ├── email/
│ │ ├── en (default)
│ │ ├── de
│ │ ├── es
│ │ └── ja
│ └── sms/
│ ├── en (default)
│ └── de
└── order-confirmation/
└── email/
├── en (default)
└── de
Fallback Chain
Configure how Sendivent handles missing translations:
- Exact match:
de-AT(Austrian German) - Language match:
de(German) - Default language:
en(English)
RTL Language Support
Right-to-left languages like Arabic, Hebrew, and Persian require special handling. Author RTL templates using standard HTML attributes:
<div dir="rtl" style="text-align: right;">
<h1>مرحباً {{user.name}}!</h1>
<p>شكراً لطلبك رقم {{payload.orderNumber}}</p>
</div>
Set dir="rtl" on your template's container to ensure proper text direction.
Best Practices
1. Start With Your Top Languages
Don't try to support every language at once:
- Check your analytics for user language distribution
- Start with your top 3-5 languages
- Add more as you grow
2. Keep Templates in Sync
When you update the English template, remember to update translations too. The dashboard shows all language versions grouped under each event, making it easy to spot which ones need attention.
3. Test Across Languages
Some languages require more space than English:
- German text is often 30% longer
- Test email layouts with the longest translations
- Ensure SMS templates fit in character limits
4. Handle Pluralization
Different languages have different plural rules. Handle pluralization in your application code before passing values to the payload, or use conditional blocks in templates:
{{#eq count 1}}
You have 1 item
{{else}}
You have {{count}} items
{{/eq}}
Going global? Create a free account and see how easy multi-language templates can be. Your international users will thank you.
Frequently asked questions
How does Sendivent know which language to use?
You pass the language in your API call or store it on the user profile. Your app owns locale detection (user settings, browser, etc.), and we handle template resolution.
What happens if a translation is missing?
We gracefully fall back through the chain: exact match (pt-BR) → language (pt) → default (*). Users always receive a notification.
Can I use different templates for regional variants?
Yes, you can create templates for specific locales like 'en-US' vs 'en-GB' or just use the base language code.
How do I format dates per locale?
Use our formatDate Handlebars helper to format dates in templates. For currencies and numbers, format them in your application code before passing to the payload.
Related content
Welcome emails, activation reminders, and onboarding notifications to help new users succeed with your product.
Read moreBuild beautiful notification templates with Handlebars, preview across channels, and personalize content for every user. No code changes needed to update templates.
Read moreSend order confirmations, shipping updates, and delivery notifications via email and SMS with Sendivent's multi-channel API.
Read moreStill relying only on email for product notifications? Learn why multi-channel matters and when to expand beyond the inbox.
Read moreAlert your team via Slack when important events happen in your product. New signups, large orders, support escalations, and more.
Read moreCompare Sendivent and Twilio for notifications. See how Sendivent's unified API compares to building on Twilio's communication primitives.
Read moreReadytogetstarted?
Experience multi-language notifications that speak your users' language with Sendivent's powerful API.