Design for Email That Arrives Late or Never
Onboarding & Growth · onboarding, verification, errors
Updated 2026-08-04
- Treat email as best effort, not as a step in your flow. A message crosses several systems and is scored by a filter that can quietly divert it, so a sign-up that depends on it has a failure point outside your product.
- Never block the whole product on a verification message. Let people in and restrict the parts that genuinely need a verified address, so a delayed email is an inconvenience rather than a wall.
- Say where to look and how long to wait. "It usually arrives within a minute. Check your spam folder." prevents most of the resends.
- Show the address it was sent to, and let it be corrected. A mistyped address is the single most common cause of a message that never arrives, and it is invisible without this.
- Design the resend properly:
- Available quickly, because a minute feels long here.
- Rate limited, with the wait shown as a countdown.
- Confirming that a new one was sent.
- Invalidating the previous link, and saying so.
- Give the link a generous expiry. A code that expires in fifteen minutes fails the person who checked their mail an hour later, and they will not try a second time.
- Offer a code as well as a link. Copying six characters works across devices, and a link opened in a different browser often lands in a session that does not match.
- Explain an expired link rather than refusing it. This link has expired. Send a new one. with a button is a recovery, and an error page is an exit.
- Provide a route that does not involve email at all for the accounts that must not be locked out.
Email is the least reliable dependency in most products, and it is usually the one standing between a new user and the thing they came for.
Related guides