SaaS email template

Welcome email template for SaaS — triggered by signup, not by schedule

The welcome email is the first impression. Fire it from a user.signed_up event. Personalise it with plan, name and a clear first step — no marketing list required.

Common mistakes with welcome emails

Sending too late because of contact sync delay

Syncing to a marketing platform before sending a welcome email adds latency. Users notice when the welcome email arrives 10 minutes after signup.

Generic copy that ignores the plan

A welcome email for a Free-plan user should differ from one for a Pro-plan user — different features, different CTA, different urgency.

No clear next step

Welcome emails with no CTA or five CTAs both fail. One clear action — "Create your first project" or "Connect your provider" — performs better.

Hardcoded in the auth service

Welcome email logic buried in the signup handler means every copy change requires a developer, a PR and a deployment.

Fire user.signed_up — else.events handles the rest

Instant delivery from the signup event

No contact sync. The welcome email fires the moment your backend emits user.signed_up.

Plan-aware from the payload

Include the plan in the event payload. Rules route Free-plan users to a simpler welcome; Pro-plan users get a richer activation email.

Edit copy without a deployment

Welcome email copy lives in the else.events template editor. Marketing or product teams edit it directly — no PR, no deploy.

Versioned and localised

Template history is saved automatically. Locale-specific welcome emails route based on the user's locale in the event payload.

// user.signed_up event payload

Example event payload for the welcome email

{
  "type": "user.signed_up",
  "user": { "email": "new@example.com", "name": "Alex" },
  "data": {
    "plan": "Pro",
    "app_url": "https://app.example.com/dashboard",
    "docs_url": "https://docs.example.com/getting-started",
    "trial_ends_at": "2026-06-25"
  }
}

else.events matches the rule for event type user.signed_up, selects the welcome template for the Pro plan, renders it with the payload data and delivers it through your configured provider.

Template variables for the welcome email

Include these in your user.signed_up event payload:

  • {{ user.name }} Recipient first name for the greeting line
  • {{ user.email }} Confirmation of the registered email address
  • {{ data.plan }} Plan name — used to tailor the CTA and feature highlights
  • {{ data.app_url }} Link to the app dashboard for the primary CTA
  • {{ data.docs_url }} Link to getting-started documentation (optional)
  • {{ data.trial_ends_at }} Trial expiry date — shown for trial-plan users

Frequently asked questions

What subject lines work best for SaaS welcome emails?
Keep it direct: "Welcome to [App] — here's how to get started", "You're in — let's set up your [App] workspace", "Your [Plan] plan is ready". Avoid generic "Welcome!" with no context.
Should the welcome email have one CTA or multiple?
One primary CTA performs best. Choose the single most important next step for a new user — typically "Open your dashboard" or "Complete your setup". Secondary links (docs, support) can appear as text links lower in the email.
How do I send different welcome emails for different plans?
Include the plan in the event payload. Set up two rules in else.events — one matching plan = Free, one matching plan = Pro. Each rule routes to a different welcome template.
When should the welcome email fire?
Immediately on signup confirmation — before the user lands on the dashboard for the first time. Fire the event from your backend when the user account is fully created.

Welcome emails that arrive instantly and convert

Fire user.signed_up. else.events handles the plan-aware welcome email. No marketing list required.

  • Instant delivery from the signup event
  • Plan-aware routing via rules
  • Edit copy without a deployment