Onboarding email best practices (with examples and templates)
A practical guide to onboarding email sequences: what an onboarding email is, how to time and structure the welcome-to-activation flow, the best practices that matter (subject lines, personalization, a single CTA, the metrics to track), teardown examples, copy-paste templates, and how to send the sequence programmatically.

An onboarding email is a message sent to a new user or customer to help them start using a product and reach its value quickly. It rarely works as a single email, but as a short sequence (a welcome, a setup nudge, an activation prompt, and a check-in) timed across the first days of an account. Each message has one job, to move the user a step closer to the product's value, and the sequence works best when every email earns the next one rather than arriving on a fixed schedule.
What is an onboarding email
An onboarding email is an automated message triggered by a user action, usually a signup, that guides the recipient toward getting value from a product. It is a transactional message, not a marketing one: it goes to one person in response to something they just did, rather than to a list on a publishing schedule. A welcome email confirming an account, a prompt to finish setup, and a nudge to try a key feature are all onboarding emails.
The distinction matters for deliverability and tone. Onboarding mail is expected and personal, which is exactly the profile mailbox providers treat most favorably, so it tends to reach the inbox and earn high open rates. That also raises the stakes on getting it right, because a welcome email is often the first thing a new user reads from a product and sets the tone for everything after. For the line between this and bulk sending, see why you should separate transactional and marketing email.
Onboarding sequence timing and structure
A good onboarding sequence mirrors the path a new user actually takes, from "I just signed up" to "I understand why I'm here." Four stages cover almost every product, each with a different job and its own rough timing. The exact gaps depend on how long the product takes to show value, but the order holds.
- Welcome (immediately). Sent the moment someone signs up, while intent is at its peak. It confirms the account, sets expectations, and points at the single first action that leads to value. This is the highest-engagement email in the whole sequence, so it carries the most important call to action.
- Setup (day 1 to 3). A nudge for anyone who signed up but has not finished the steps that make the product useful: connecting a data source, inviting a teammate, importing a list. Trigger it on the missing step rather than on a timer, so users who already finished never receive it.
- Activation (day 3 to 7). A prompt toward the product's core action, the thing a user does when they have genuinely adopted it. The message names one feature and one reason to try it now, rather than touring everything the product can do.
- Check-in (day 7 to 14). A lighter, often plain-text message asking how it is going and offering help. It re-engages users who stalled and opens a reply channel for the ones who have questions but have not asked.
The principle underneath the timing is trigger on behavior, not just on the clock. A purely time-based drip sends the "finish setup" email to people who already finished, which reads as if the product is not paying attention. Keying each message to what the user has and has not done keeps the sequence relevant and stops it the moment it is no longer needed.
Onboarding email best practices
Most of what separates an onboarding email that works from one that gets ignored comes down to a handful of choices, and nearly all of them push in the same direction: less. A new user has limited attention and one question, which is what to do next. The practices below all serve answering it.
- Write subject lines that name the action. "Finish setting up your account" beats "Welcome aboard!" because it tells the reader what is inside and what to do. Keep it under roughly 50 characters so it survives truncation on mobile, and skip the exclamation marks and emoji that read as marketing.
- Personalize with data, not just a first name. A merge tag for the name is the floor. The personalization that changes behavior references what the user actually did: the plan they chose, the integration they connected, the step they still have open.
- Give each email a single call to action. One button, one job. Multiple competing links split attention and lower the odds of any of them being clicked. If a message seems to need two CTAs, it is usually two emails.
- Keep the body short and mostly text. Onboarding mail is read fast and often on a phone. A few sentences leading to one button outperforms a designed, image-heavy layout, and a high text-to-image ratio also keeps the message clear of spam filters.
One practice sits above the rest: send from a real, monitored address and invite
replies. A welcome email from noreply@ signals that the door only opens
outward. Sending onboarding mail from an address a person reads turns the first email into the
start of a conversation, which is the entire point of onboarding.
Metrics to track
The numbers worth watching form a funnel, and the one at the bottom is the only one that pays the bills. Open and click rates are leading indicators that tell you whether the subject line and CTA are working, but they are means, not the end.
- Open rate shows whether the subject line earns attention. For triggered onboarding mail it runs high, often well above marketing benchmarks, because the message is expected.
- Click-through rate shows whether the body and CTA move people to act. A healthy open rate with a weak click rate points at the message, not the subject line.
- Activation rate is the share of new users who reach the product's core action. This is the metric the whole sequence exists to move, and it is the one to optimize when the others look fine but growth does not follow.
Onboarding email examples
The patterns above are easier to read off a real message than off a rule. Each mockup below is one stage of the sequence shown the way it would land in an inbox, with a short teardown of the choices that make it work underneath.
Welcome email
The first message, sent within seconds of signup. It moves a new user from "I made an account" to "I did the first thing."
Subject
Welcome to Acme, Sam
Welcome to Acme
Hi Sam,
Thanks for signing up. Your account is ready. The fastest way to see what Acme does is to import your first contact list. It takes about two minutes.
Reply-to
sam@acme.com reaches a real person
- One action, no tour. The whole message points at a single first step instead of listing every feature.
- The subject names the person and product. "Welcome to Acme, Sam" reads as expected mail, not a broadcast.
- It invites a reply. Sending from a monitored address turns the first email into the start of a conversation.
Activation nudge
A follow-up to users who signed up but stalled before the core action, pointing them at the one step they left open.
Subject
Your contact list is still empty
Finish setting up Acme
Hi Sam,
You created your account but haven't imported any contacts yet. That's the one step that makes everything else work. It takes two minutes and you can paste from a spreadsheet.
Trigger
Skipped automatically once contacts exist
- Triggered by behavior, not a timer. It only reaches users who left the step open, so it never tells an active user to do something they already did.
- It references the specific open step. Naming the empty contact list reads as attention, not a generic nudge.
- It links straight to the action. The button goes to the import screen, not the dashboard.
Appointment reminder
The onboarding email's close cousin in any booking or scheduling product, following the same rules in a tighter form.
Subject
Your appointment with Acme is tomorrow
Your appointment is tomorrow
Hi Sam,
This is a reminder that your appointment is tomorrow, Thursday 26 June, at 2:00 PM. Need to change it? Use the button below.
When
Thu 26 June · 2:00 PM
- One fact, stated plainly. The date and time lead the message; everything else is secondary.
- A single relevant action. Reschedule or confirm, behind one button, with nothing competing for the click.
- Scheduled against the appointment. The send time is keyed to the booking, not to signup, which is the one structural difference from the rest of the sequence.
Copy-paste onboarding email templates
Here is each mockup above as copy-paste source, in the same order. Each uses {{merge_tag}} placeholders for the values a sending system fills in per
recipient, in the same syntax Lettr templates use. Adapt the voice to the product and keep the
structure: one clear action, short body, reply-friendly close.
Welcome email
The first message, sent the moment someone signs up:
Subject: Welcome to {{product}}, {{first_name}}
Hi {{first_name}},
Thanks for signing up. Your account is ready. The fastest way to
see what {{product}} does is to {{first_action}}. It takes about
two minutes.
{{cta_button: Get started}}
If anything is unclear, reply straight to this email. A real
person reads it.
{{sender_name}}Activation nudge
The follow-up to a user who stalled before the core action:
Subject: {{open_step_subject}}
Hi {{first_name}},
You created your account but haven't {{open_step}} yet. That's
the one step that makes everything else work. It takes two
minutes and you can paste from a spreadsheet.
{{cta_button: {{cta_label}}}}
{{sender_name}}Appointment reminder
The reminder for a booking or scheduling product, sent the day before:
Subject: Your appointment with {{business}} is tomorrow
Hi {{first_name}},
This is a reminder that your appointment is tomorrow,
{{date}} at {{time}}.
Need to change it? {{cta_button: Reschedule}}
See you then,
{{business}}How to send them programmatically
Onboarding mail is triggered by events in a product (a signup, a finished setup step, an upcoming appointment), so it is sent from code rather than a campaign tool. The core operation is a single API call that combines a stored template with per-recipient data. With the Lettr SDK, sending the welcome template from the signup handler looks like this:
import { Lettr } from 'lettr';
const lettr = new Lettr(process.env.LETTR_API_KEY);
const result = await lettr.emails.send({
from: 'onboarding@yourapp.com',
to: [user.email],
template_slug: 'welcome',
substitution_data: {
first_name: user.firstName,
product: 'Acme',
first_action: 'import your first contact list'
}
});The template lives in Lettr and the call passes only the data, so the copy can change
without a deploy. The merge tags in the template resolve against the substitution_data object, which is where personalizing on real user data, the plan or
the open setup step, happens.
The later stages of the sequence are scheduled rather than sent at once. Scheduling an email for a future moment is one parameter, an ISO timestamp, which turns the immediate send into a drip. Queue the day-three setup nudge from the same signup handler:
// Step 2 of the sequence: a setup nudge, three days later.
const sendAt = new Date(Date.now() + 3 * 24 * 60 * 60 * 1000);
await lettr.emails.schedule({
from: 'onboarding@yourapp.com',
to: [user.email],
template_slug: 'finish-setup',
substitution_data: { first_name: user.firstName },
scheduled_at: sendAt.toISOString()
});Behavioral triggering layers on top. Cancel a scheduled nudge when the user completes the step it was meant to prompt, so the sequence stops the moment it is no longer needed, and delivery, bounce, and open events arrive over webhooks to feed the activation metrics above. Because onboarding mail and any marketing sends can share the same account and domains, the sequence and the broader lifecycle stay in one place.
FAQ
What is an onboarding email?
How many emails should an onboarding sequence have?
What should the first onboarding email say?
Are onboarding emails transactional or marketing?
What is a good open rate for onboarding emails?
Bottom line
An onboarding sequence is a few focused emails, each triggered by where the user is and each pointing at one next action. Welcome immediately, nudge setup and activation on behavior, check in once, and stop when the user is active.
Because every message is event-triggered, the sequence belongs in application code, and Lettr sends all of it through one transactional API with templates, scheduling, and webhooks included. Create a free account and send your first welcome email from a verified domain.