DocsComing soon

letr.dev as a Resend alternative

What differs when you pick letr.dev over Resend, what is the same, when Resend fits better, and how to switch.

For a team that sends transactional email through Resend and wants to know what changes with letr.dev.

What differs

  • A person answers. First answer by email within 1 Swiss business day; a stopped or paused account within 4 business hours, Monday to Friday, 08:00 to 18:00 Swiss time.
  • The pause rules are public. An account pauses at a 5 % bounce rate, or at a 0.3 % complaint rate with at least 2 complaints, over the last 7 days, counted once it has sent to 50 recipients in that window. The dashboard shows the reason and an account.paused webhook event carries it; nothing pauses silently.
  • The company is Viascom GmbH in Switzerland. The servers run at Hetzner in Germany with encrypted backups at Contabo in the EU; the privacy policy names every processor.
  • One plan. CHF 12 a month for 10'000 recipients, then CHF 0.50 per started 1'000 up to a monthly ceiling you choose, tax added at checkout where it applies, cancel monthly. No tiers and no sales call.

What is the same

An HTTPS API with a Bearer key, signed webhooks for every delivery event, DKIM-verified sending domains, an SMTP relay with an API key as the password, suppressions, idempotency keys and batch sending. The migration guide maps each of them to its Resend counterpart.

When Resend fits better

  • Newsletters, broadcasts and campaigns: letr.dev sends transactional email only.
  • Templates rendered by the provider, receiving email, contacts and topics, open and click tracking: letr.dev does none of these. Your app renders the email and sends the finished html and text.
  • More than 25'000 recipients a month: letr.dev's self-serve ceiling ends there; a higher one needs a request to support.

Switching

Keep Resend sending while you set letr.dev up: add the domain and publish letr.dev's DKIM record next to Resend's, create a key per app, point a webhook endpoint at the events you use, import your suppressions, then move the app. The migration guide walks through each step with the field and event names on both sides.