Notes from building email infrastructure
SPF, DKIM, and DMARC explained for SaaS founders
The three DNS records that decide whether your transactional email lands in the inbox or the spam folder, in plain language.
Why EU data residency matters for transactional email
GDPR, NIS2, and the questions your DPO asks before signing off on a US-hosted email provider, and what "EU-hosted" should actually mean.
Why 7-day log retention isn't enough
A customer says they never got the email. If your provider only keeps a week of logs, you've already lost the evidence to find out why.
A public deliverability report, starting next month
What we'll publish, where the numbers come from, and why we're not backdating a report with estimates.
How to get a signed DPA without a sales call
What Envello's DPA actually is, where to get it, and why it doesn't require a demo, a champion, or a procurement cycle first.
Mandrill (Mailchimp Transactional) migration guide
Field-by-field mapping from Mandrill's messages/send to Envello, and what to check before you cut over.
When to stop calling SES directly, use a control plane
Calling SES directly is sometimes the right call. Here's an honest breakdown of when it stops being the right call.
Dual-sending during an email provider migration
Running both providers at once sounds safer. Here's when that safety is real and when it's just extra complexity.
Changing SPF/DKIM records during a provider switch
The order that matters: add before you remove, verify before you cut over, and why a shared SPF record is safer than replacing one outright.
Switch email providers with zero downtime
Putting the DNS, code, and rollout pieces together into one sequence that doesn't require a maintenance window.
The real checklist for migrating email providers
One list that pulls together DNS, code, and rollout steps from the provider-specific guides, for whichever provider you're actually switching from.
Why Envello locks your price for 24 months
The exact terms of the pledge: what's locked, what notice you get when it changes, and why that's published instead of buried in a contract.
Email API costs that aren't on the pricing page
Overage rates, add-ons, and the questions worth asking before you pick a tier, using Envello's own published numbers as the example.
How much lock-in does an email API really create?
Less than your database or auth provider, but not zero. An honest look at what's actually hard to walk away from.
How pay-as-you-go overage billing works for email
What happens the moment you cross your tier's included volume, using the real published rate as the example.
Annual vs monthly email API billing: when it pays
A 15% discount sounds like an easy yes. Here's when it actually is, and when monthly is the more honest choice.
Why free-tier email APIs cap at 100/day, the wrong limit
A daily cap breaks the moment you have a real traffic spike. A monthly cap doesn't.
Running multiple client domains on one email API account
What usage-by-domain reporting actually gives you, and why it matters more for agencies than the headline pricing does.
Why your email API needs roles, not a shared login
The three real roles Envello supports, and why a shared login is a bigger risk for an email API than it looks like.
What an audit log should capture (and what it shouldn't)
A closed action vocabulary, never a raw API key, never a recipient's address. The specific PII discipline behind Envello's audit log.
Why a first-invoice refund is a trust signal
It costs the provider something real to offer this. That's exactly why it means more than a satisfaction guarantee banner.
NIS2 and what it changes for SaaS email infrastructure
NIS2 expands who counts as a regulated entity in the EU. What that means, and doesn't mean, for a SaaS company sending transactional email.
What belongs on a subprocessor list (most are stale)
A subprocessor list is only useful if it's current and specific. What Envello's actually looks like, and the notice period that keeps it honest.
Does the US CLOUD Act reach an EU-hosted email provider?
Data location and corporate jurisdiction are two different questions. Why that distinction matters when a vendor claims EU-hosted.
Standard Contractual Clauses for non-lawyers
What SCCs actually do, why they show up in a subprocessor list, and when you'd need to check for them at all.
GDPR's right to erasure and transactional email
There's no dedicated erasure button. Here's honestly how deletion actually works, and why the retention window is the mechanism, not an afterthought.
Envello in production: our first three months of sending
Real numbers from running four of our own products on Envello since July 2026: 4,729 live emails, 96.8% delivery confirmed, 0.66% bounced, zero complaints.
GDPR-compliant transactional email: a developer's guide
Eight decisions that make transactional email GDPR-compliant: lawful basis, message content, processor contract, transfers, retention, tracking, breaches.
Verifying webhook signatures, the step most guides miss
The exact scheme, the exact header format, and the one step (verifying against the raw body, not re-serialized JSON) that breaks most implementations.
Idempotency keys: why your email-sending code needs them
A retried request without an idempotency key can send the same email twice. Here's the actual mechanism that prevents it.
Dedicated IP vs shared pool: when the upgrade matters
A dedicated IP is not a magic deliverability fix, and it can hurt you at low volume. When it's actually worth the add-on cost.
Password reset emails: what actually needs to be in them
A short list of what matters (expiry, no password in the email, a real sender address) and what's just decoration.
2FA and OTP email delivery: why speed matters
A 6-digit code that arrives 90 seconds late is a support ticket. What actually determines delivery speed, and where email fits vs. SMS.
Receipt and invoice emails: fields customers need
The specific line items people scan for when they open a receipt, and why a screenshot-friendly layout matters more than branding here.
Shipping notification emails: triggers and timing
The three real trigger points, why timing relative to the carrier event matters, and the retry problem most integrations miss.
Magic link login emails: the security tradeoffs
A magic link is a bearer token sent over a channel you don't fully control. What that actually means for expiry, single-use, and email forwarding.
Failed payment emails: a dunning sequence, not nagging
How many emails, spaced how far apart, saying what. The real tradeoff between recovering revenue and burning goodwill.
Is a welcome email transactional or marketing?
The line isn't about tone, it's about whether the recipient took an action expecting this specific email. Where welcome emails actually fall.
Security alert emails: what to send, without crying wolf
Alert fatigue is a real deliverability and trust risk. Which events actually warrant an email, and which belong in an activity log instead.
Email verification at signup: block sends or test mode?
You don't have to choose between verifying your own account and building your integration. How test-mode keys handle this in practice.
Building transactional email templates with React Email
Component-based email templates, rendered to HTML at send time. Where this fits for a real transactional flow, not just the quickstart example.
Gmail and Yahoo bulk sender requirements 2026
Valid SPF and DKIM, a DMARC policy, a sub-0.3% spam complaint rate, and one-click unsubscribe. What's actually enforced and at what volume.
Moving from p=none to p=reject without breaking mail
The staged path, what the aggregate reports actually tell you, and why jumping straight to p=reject is the mistake that breaks legitimate mail.
What bounce and complaint rates trigger a suspension
The real numbers: 2% bounce, 0.1% complaint. Why these exist, and what they're actually protecting.
Why you can't send 50,000 emails on day one, new domain
The actual ladder: 100, 500, 2,000, 10,000, 50,000, with 3 consecutive good days required to climb each rung.
Suppression lists: why retrying a bounce is wrong
A hard bounce or complaint should permanently block future sends. Retrying it isn't resilience, it's the pattern that tanks your reputation.
Email blocklist monitoring: how it works, what to do
Real public DNSBLs, checked against your verified domains, with alerts only on a state change, not constant noise.
Answering a security questionnaire without three weeks
The questions every security questionnaire asks about a transactional email vendor, and where to find the answers in minutes instead of weeks.
What to actually check in a DPA before signing it
A practical DPA checklist for SaaS teams: the eight clauses that matter, what good looks like in each, and the wording that should make you push back.
How long should you keep email logs? A compliance answer
GDPR's storage limitation principle applied to email event logs: what to keep, for how long, and how to pick a retention window you can defend.
AWS SES eu-central-1 vs us-east-1 for a European sender
Region choice in SES affects data residency, latency, quotas, and warmup, but not mailbox-provider reputation. Here's what changes and what doesn't.
Open and click tracking without the privacy landmines
How email open and click tracking actually works, why it's personal data under GDPR, and the defaults that keep it useful without becoming a liability.
What is transactional email? A guide for developers
Transactional email is any message triggered by a user action: password resets, order confirmations, login alerts. What it is and how to get it right.
Email deliverability guide: reach the inbox, not spam
A practical guide to email deliverability for developers: SPF, DKIM, DMARC, sender reputation, bounce handling, and monitoring, with concrete thresholds.
How to read a DMARC aggregate report
The XML your mailbox providers send back is unreadable by design. Here's what each field actually means and how to tell a real problem from noise.
Envello as Supabase Auth's custom SMTP provider
Supabase's built-in email sender is rate-limited and unbranded. Swap in Envello as a custom SMTP provider for confirmation, magic link, and reset emails.