Email editor

Compose lifecycle emails. Personalize from the same profile that triggers them.

A block-based editor wired directly to your event stream. Drop in personalization tokens, branch on plan or behavior, preview against real profiles, and send a test before you commit.

Block editor with no HTML required Variables from any trait or event Conditional blocks per segment Coming soon Test send to a live profile

Block-based, not blank-canvas

Heading, text, button, image, columns, divider, condition, raw HTML. Drag in, drop out. No template chaos.

Variables from real profiles

Any trait, any event property, any computed value on the profile. Type two braces to insert.

Conditional blocksComing soon

Show a block only if the user is on a specific plan, in a segment, or matches a property. One template, many audiences.

Test against a real profile

Render the email exactly as it'll send for any profile in your workspace. Catch broken variables before they go out.

Built for lifecycle, not for newsletters

Behavior in. Personalized email out.

The editor isn't a separate tool — it lives next to the same automations and segments that decide who gets the email. Edit the template and the next run picks it up.

Variables

Any trait. Any event property. Any computed field.

Use anything that's on the profile — no separate "merge fields" to maintain. When a trait updates, the next send picks it up.

  • {{user.first_name}} with smart fallbacks
  • Liquid-style filters: | capitalize, | date, | pluralize
  • Trigger event properties available alongside profile traits
Variable picker847 profiles match
user.first_name"Neo"
user.plan"free"
user.signup_age_days3
user.last_seen"3m ago"
event.source"nav"
workspace.name"Zion"
Conditional blocksComing soon

One template, many audiences.

Show or hide a block based on plan, segment, or any trait. The same trial-activation email can read differently for free, team, and self-serve users.

  • if / elseif / else on any block
  • Reference segments by name, not raw filters
  • Preview the email as any specific profile
Condition · Plan-aware CTAComing soon
if user.plan == "team"
"Invite your team — your first 5 seats are free"
elseif user.plan == "free"
"Try a paid plan free for 14 days"
else
"Pick up where you left off"
Test mode

Preview the email as any real profile.

Pick a specific profile, render the template the way it'll actually send for that user, and ship a test send to your inbox before going live.

  • Render with real trait values, not "John Doe" placeholders
  • Side-by-side desktop / mobile preview
  • Variable lint warns on missing or undefined fields
Render as profile Live
render as neo@zion.io
Hey Neo, your first project is waiting.
You signed up 3 days ago…
Specs

The boring details (that aren't, actually).

Rendering

Rendered server-side, sent through your provider

Templates render to HTML on send, with your variables resolved against the customer profile at that exact moment. Not at template-edit time, not at queue time.

Compatibility

Email client compatibility you can audit

HTML output uses table-based layouts under the hood. Renders cleanly in Gmail, Apple Mail, Outlook 2016+, and the major mobile clients. Dark-mode friendly.

Versioning

Every save is a version

Every save creates a version you can roll back to. See who changed what, when, and which automation runs used which version of the template.

Localization

Locale-aware (coming soon)

Per-locale variants of the same template, picked by user.locale. Shipping during beta.

Try it during the private beta

Compose your first lifecycle email in under 10 minutes.

During beta, the email editor is included with full access — no separate plan, no add-on. Pair it with a single tracked event and a one-step automation, and you've got behavior-driven email running.

What you can do on day one

  • Build a template with blocks, variables, and conditions.
  • Trigger it from any tracked event or trait change.
  • Send through your existing ESP (SES, Mailgun, Resend, SMTP).
  • See per-template send, open, and click metrics.