MAILERSEND · TECH STACK
MailerSend: template editor and solid API with EU region
MailerSend (Lithuanian MailerLite spin-off) is a modern mail-sending platform with drag-and-drop template editor. USD 30/month for 50,000 mails, EU region Frankfurt, clean API, solid DX.
Researched & fact-checked by: DuneDive LLC · As of: 2026-05
What is MailerSend?
MailerSend is a Lithuanian mail-sending platform, founded in 2019 as a spin-off of MailerLite (the 2010-founded newsletter tool from Vilnius). Unlike MailerLite, which focuses on marketing newsletters, MailerSend targets transactional mail: login notifications, order confirmations, dunning mail, audit reports. The platform positions itself between Brevo (EU-first, marketing-plus) and Postmark (US-first, pure transactional) -- with European headquarters, drag-and-drop template editor, and modern API.
Headquarters sit in Vilnius (Lithuania), data centers in Frankfurt (Germany, EU main region) and Ashburn (Virginia, US region). The EU region has been productive since 2021 and is selectable at account creation -- later switching is not possible. SOC-2 Type-2 certified, ISO-27001 in preparation (expected 2026). DPA per GDPR in the dashboard, Swiss standard clauses on request.
MailerSend DX highlight is the template editor: drag-and-drop interface similar to Mailchimp/MailerLite, but specifically optimised for transactional mail (variable substitution, conditional blocks, multi-language support). Templates are built in the web UI and filled via API with data -- alternatively created directly via API or uploaded as HTML/Markdown. For teams with marketing members who do not want to write HTML/React-Email, this is a clear advantage.
Pricing (May 2026): Free 3,000 mails/month (verified sender domain required, no CC enforced), Starter USD 30/month for 50,000 mails plus 5 sender domains, Professional USD 80/month for 100,000 mails plus extended features, Enterprise individual from 1M mails. SMS and SMTP packages separate.
Why it matters for Swiss SMEs
MailerSend is the right choice in three specific Swiss SME cases: template care by non-developers, EU region as GDPR default, and moderate prices with generous free tier.
Template care without developers: A fiduciary firm often has a secretariat person who formats client mails -- but no React/HTML know-how. MailerSend allows her to maintain a dunning mail template in the drag-and-drop editor, with variables like `{{ customer_name }}`, `{{ invoice_number }}`, `{{ amount }}`. The developer calls the template via API with the variable values -- clean separation of content and code.
EU region as default: Unlike Postmark (US-only) or Resend (EU-beta), the EU region at MailerSend has been stably productive since 2021. Pick Frankfurt at account creation -- the data path including logs lands in DE. Read the sub-processor list, pull the DPA from the dashboard. For revFADP compliance without a third-country transfer impact assessment.
Free tier 3,000 mails/month: As generous as Resend, clearly better than Postmark (100/month) or Mailgun (trial only). For smaller fiduciary offices or SaaS MVPs, 3,000/month is a productively usable free tier -- without CC requirement, with sender-domain verification as the only gate.
The trade-off: MailerSend has 5 points weaker inbox rate than Postmark (94 vs 99 percent in 2026 benchmarks). Market brand awareness in DACH is lower than Brevo or SendGrid -- in a sales conversation the brand often needs explanation first. Inbound routing exists since mid-2025 but is less flexible than Mailgun Routes. Whoever needs maximum DACH brand awareness: Brevo. Whoever wants template editor + EU region + modern API: MailerSend.
How it works
MailerSend exposes SMTP relay, HTTPS API, and SDKs in Node.js, PHP, Python, Ruby, Java, Go, Laravel.
SMTP relay: Host `smtp.mailersend.net`, port 587 STARTTLS or 2525 STARTTLS, user `MS_*` (generated in dashboard), pass the SMTP password. Works with any classical mail framework.
HTTPS API: Endpoint `https://api.mailersend.com/v1/email`, header `Authorization: Bearer <API-Key>`. cURL example:
``` curl -X POST "https://api.mailersend.com/v1/email" \ -H "Authorization: Bearer ${MAILERSEND_API_KEY}" \ -H "Content-Type: application/json" \ -d '{ "from": { "email": "invoice@firm-müller.ch", "name": "Firm Müller" }, "to": [{ "email": "[email protected]", "name": "Mrs Berger" }], "subject": "Dunning No. 2 - Invoice 2026-104", "text": "Dear Mrs Berger, ...", "template_id": "ynrw7g7xjz5l4k8d", "variables": [{ "email": "[email protected]", "substitutions": [ { "var": "customer_name", "value": "Mrs Berger" }, { "var": "invoice_number", "value": "2026-104" }, { "var": "amount", "value": "CHF 1450.00" } ] }] }' ```
The `template_id` references a template maintained in the dashboard, `variables` delivers per-recipient substitutions. No need to send the HTML body -- only variable values.
DNS setup: Three DNS records per sender domain: SPF (`v=spf1 include:_spf.mlsend.com ~all`), DKIM (TXT, selector `mlsend2._domainkey.<domain>`, platform-generated), and tracking CNAME (`email.<domain>` to `mlsend.net`). DMARC recommended `v=DMARC1; p=quarantine; pct=100`. Domain verified in dashboard, status visible.
Webhooks: In the dashboard under "Webhooks", enter endpoint, pick event types (sent, delivered, soft_bounce, hard_bounce, spam_complaint, opened, clicked, unsubscribed). HMAC-SHA256 signature in header `Signature`. Retries: 5 attempts over 24h.
Inbound routing (since 2025): point MX record at `inbound.mailersend.net`, then configure "Inbound Routing" in the dashboard. Filter (`To`-address pattern), action (webhook forward). Less flexible than Mailgun Routes, but enough for simple use cases.
Test and monitoring: Dashboard yields real-time "Activity" feed, analytics module with filter (tag, sender, template, status). Template editor with live preview. Sandbox mode per domain (mail validated but not delivered).
MailerSend setup in 5 steps
- 01Create a MailerSend account, pick EU region (Frankfurt) at account creation -- switching is not possible.
- 02Add sender domain, set three DNS records (SPF, DKIM with selector `mlsend2._domainkey`, tracking CNAME) in Cloudflare as DNS-only.
- 03DMARC initially p=none for 14 days, then raise to quarantine. Generate API key in dashboard, store in .env (MAILERSEND_API_KEY).
- 04Maintain first template in the drag-and-drop editor, note the `template_id`. Call via API with variable substitution.
- 05Set webhooks for hard_bounce, spam_complaint, delivered, verify HMAC signature, verify Mail-Tester.com 10/10.
When MailerSend fits
MailerSend is the right choice when (a) template care by non-developers is needed (marketing, secretariat), (b) EU region as a stable default is desired, and (c) volume sits between 10,000 and 200,000 mails per month.
Concrete cases: A fiduciary firm with a secretariat person who adjusts dunning templates monthly -- MailerSend drag-and-drop saves development time. A SaaS platform with multi-language mails (DE/FR/IT/EN for Swiss market) -- MailerSends template system supports this natively. A marketing agency with 50k mails/month for client projects -- USD 30/month Starter is a clear middle ground between Postmark and Brevo.
For DACH setups: mandatorily pick EU region (Frankfurt) at account creation. Set DKIM selector `mlsend2._domainkey` correctly (not the old `mlsend1`, that is legacy). Use the template editor for standardisation instead of inline HTML.
When not to use
MailerSend is the wrong choice when (a) maximum deliverability for dunning mail is required (Postmark beats MailerSend by 5 points), (b) professional secrecy demands strict Swiss hosting -- then Infomaniak or AWS SES eu-central-2, or (c) volume is below 5,000 mails per month and the drag-and-drop editor is unused -- then Brevo Starter is slightly cheaper and more marketing-capable.
More pitfalls: US region accidentally chosen at account creation -- client data lands in us-east-1 without EU containment, switching not possible. Setting DKIM selector `mlsend1` from legacy docs instead of `mlsend2` -- mails land silently in spam. Not using the template editor and maintaining inline HTML -- the MailerSend advantage disappears, Postmark would be more sensible. Expecting free tier without sender-domain verification -- the domain MUST be verified, otherwise no send operations.
Trade-offs
STRENGTHS
- Drag-and-drop template editor for non-developers
- EU region Frankfurt stably productive since 2021
- Free tier 3,000 mails/month without CC requirement
- Multi-language template support for CH/DACH market
WEAKNESSES
- Deliverability 5 points below Postmark (94 vs 99 percent)
- Brand awareness in DACH lower than Brevo/SendGrid
- Region chosen once, switching not possible
- Inbound routing less flexible than Mailgun Routes
FAQ
What does MailerSend cost an SME?
Free 3,000 mails/month (with domain verification, without CC requirement). Starter USD 30/month for 50,000 mails plus 5 sender domains. Professional USD 80/month for 100,000 mails plus dedicated IP and extended webhooks. Comparison Brevo Starter EUR 19 for 20k, Postmark EUR 15 for 10k -- MailerSend wins narrowly in the sub-50k range.
Do I get EU hosting with MailerSend?
Yes, pick Frankfurt at account creation. Hosting in DE (eu-central-1 cluster), GDPR DPA available in the dashboard. As of May 2026: productively stable since 2021. Important: region chosen once, no switch possible. With US region everything lands in Ashburn (Virginia) -- TIA needed.
MailerSend vs Brevo -- which fits SMEs?
Brevo: EU-first FR hosting, polished UI, Free 300/day, EUR 19 for 20k, combines SMTP plus marketing CRM. MailerSend: EU region DE, drag-and-drop template editor, Free 3000/month, USD 30 for 50k. For marketing CRM needs and DACH brand awareness: Brevo. For template care by non-developers and 50k+ mails: MailerSend.
How do template variables work?
Insert variables with `{{ var_name }}` in the drag-and-drop editor (Mustache syntax). On the API call send the `variables` field with per-recipient substitutions: `{ "email": "x@y", "substitutions": [{ "var": "name", "value": "Mrs Berger" }] }`. MailerSend renders the template server-side at send time. Multi-recipient send with different variables per recipient is natively supported.