All templates
engagement

Welcome Email Template

Greet new users and help them get started with your product

Preview

import {
  Body,
  Button,
  Container,
  Head,
  Heading,
  Html,
  Preview,
  Section,
  Text,
} from "@react-email/components";

type WelcomeEmailProps = {
  name: string;
  companyName: string;
  loginUrl: string;
};

export function WelcomeEmail({ name, companyName, loginUrl }: WelcomeEmailProps) {
  return (
    <Html>
      <Head />
      <Preview>Welcome to {companyName}!</Preview>
      <Body style={main}>
        <Container style={container}>
          <Heading style={h1}>Welcome to {companyName}!</Heading>
          <Text style={text}>Hi {name},</Text>
          <Text style={text}>
            We're thrilled to have you join us! Your account is all set up and
            ready to go.
          </Text>
          <Text style={text}>Here's what you can do next:</Text>
          <ul>
            <li style={text}>Complete your profile</li>
            <li style={text}>Explore our features</li>
            <li style={text}>Connect with other users</li>
          </ul>
          <Section style={buttonContainer}>
            <Button style={button} href={loginUrl}>
              Get Started
            </Button>
          </Section>
          <Text style={muted}>
            If you have any questions, just reply to this email.
          </Text>
        </Container>
      </Body>
    </Html>
  );
}

const main = {
  backgroundColor: "#f6f9fc",
  fontFamily: '-apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif',
};

const container = {
  backgroundColor: "#ffffff",
  margin: "0 auto",
  padding: "40px 20px",
  maxWidth: "480px",
};

const h1 = {
  color: "#1f2937",
  fontSize: "24px",
  fontWeight: "600",
  margin: "0 0 20px",
};

const text = {
  color: "#374151",
  fontSize: "16px",
  lineHeight: "24px",
  margin: "0 0 16px",
};

const muted = {
  color: "#6b7280",
  fontSize: "14px",
  lineHeight: "20px",
};

const buttonContainer = {
  textAlign: "center" as const,
  margin: "32px 0",
};

const button = {
  backgroundColor: "#4f46e5",
  borderRadius: "8px",
  color: "#fff",
  fontSize: "16px",
  fontWeight: "600",
  padding: "12px 24px",
  textDecoration: "none",
};

Install: npm install @react-email/components

Template Variables

Pass these props to your email component:

VariableDescription
nameUser's first name
companyNameYour company or product name
loginUrlURL to your login page

Best Practices

Timing

  • Send within 5 minutes of signup for highest engagement
  • Use a queue to ensure reliable delivery even during traffic spikes

Content

  • Keep it short—welcome emails have 50-60% open rates, don't waste them
  • Include one clear CTA (don't overwhelm with options)
  • Personalize with the user's name when available

Technical

  • Set up email authentication (SPF, DKIM, DMARC) before sending
  • Use a recognizable 'from' name (e.g., 'Sarah from Acme')
  • Include a plain text version for accessibility

Ready to send emails?

Get started with 1,000 free emails per month.

Start for free