templates Transactional Email Templates
Transactional copy should be calm, action-oriented, and impossible to mistake for a phishing email. The packs below cover the six transactional sends every product needs.
last updated 2026-08-13 6 templates
implementation note
Replace variables before sending, keep one primary action per email, and connect each template to a specific trigger rather than a generic drip schedule.
01 Order receipt
Sent on successful charge. subject
Receipt for your {{ProductName}} order
preview
#{{order_id}} · {{total}}
body
Hi {{first_name}},
Thanks for your order with {{ProductName}}.
Order #{{order_id}}
Total: {{total}}
Paid: {{date}}
{{itemized_list}}
View in account: {{billing_portal_url}}
Need a hand: {{support_email}}
{{Company name}} variables
{{first_name}}{{ProductName}}{{order_id}}{{total}}{{date}}{{itemized_list}}{{billing_portal_url}}{{support_email}}{{Company name}}
mistakes to avoid
- ›Burying the total in marketing copy.
- ›Skipping the itemized breakdown.
- ›No link to the billing portal.
02 Password reset
Sent on user-initiated password reset. subject
Reset your {{ProductName}} password
preview
Link expires in 60 minutes.
body
Hi {{first_name}},
You (or someone with your email) asked to reset the password on your {{ProductName}} account.
Reset link: {{reset_url}}
This link expires in 60 minutes and can only be used once. If you did not request a reset, you can safely ignore this email; your password has not changed.
{{Company name}} variables
{{first_name}}{{ProductName}}{{reset_url}}{{Company name}}
mistakes to avoid
- ›Links that do not expire.
- ›Reusable links (replay attacks).
- ›Marketing copy in a security email.
03 Magic link login
Sent on user-initiated magic link request. subject
Your sign-in link for {{ProductName}}
preview
Expires in 10 minutes.
body
Hi {{first_name}},
Click to sign in: {{magic_link_url}}
Link expires in 10 minutes. If you did not ask to sign in, ignore this email.
{{Company name}} variables
{{first_name}}{{ProductName}}{{magic_link_url}}{{Company name}}
mistakes to avoid
- ›Links that work after multiple clicks (one-time-use is the norm).
- ›Long expiration windows.
04 Email verification
Sent immediately on signup. subject
Confirm your email for {{ProductName}}
preview
One click to finish setup.
body
Hi {{first_name}},
Confirm your email to finish setting up {{ProductName}}: {{verification_url}}
Link expires in 24 hours.
{{Company name}} variables
{{first_name}}{{ProductName}}{{verification_url}}{{Company name}}
mistakes to avoid
- ›Treating verification as optional.
- ›Verification flows that drop the user on a dead-end page.
05 Payment failure
Sent on declined renewal charge. subject
Card charge failed
preview
Action required.
body
Hi {{first_name}},
A charge for your {{ProductName}} subscription was attempted on {{attempt_date}} and the card was declined.
Reason from the gateway: {{decline_reason}}
If billing is not updated by {{access_end_date}}, your account will be paused.
Update billing: {{billing_portal_url}}
{{Company name}} variables
{{first_name}}{{card_last4}}{{ProductName}}{{attempt_date}}{{decline_reason}}{{access_end_date}}{{billing_portal_url}}{{Company name}}
mistakes to avoid
- ›Marketing tone.
- ›Apologies that imply your fault.
- ›Hidden access-end date.
06 Trial expiration
Sent at T-3 days from trial end. subject
Your {{ProductName}} trial ends in 3 days
preview
Convert, extend, or cancel.
body
Hi {{first_name}},
Your {{ProductName}} trial ends on {{end_date}}.
During your trial you {{trial_summary}}. If that has been useful, you can convert any time: {{upgrade_url}}
Not the right fit yet? You can extend the trial by 7 days: {{extend_url}}, or cancel from your account: {{billing_portal_url}}.
{{Company name}} variables
{{first_name}}{{ProductName}}{{end_date}}{{trial_summary}}{{upgrade_url}}{{extend_url}}{{billing_portal_url}}{{Company name}}
mistakes to avoid
- ›Surprise expirations.
- ›Fake countdown urgency.
- ›Hiding the cancellation flow.
reading this as developers picking email infrastructure
The question here is which one a backend engineer would rather operate. That means SDK depth in the language already in use, whether a retry can safely be replayed, how much the event log tells you when a customer says the email never arrived, and whether the pricing curve stays sane as volume grows.
Applied to transactional email templates, that means weighing developer experience, SDK breadth, idempotency keys, and operating track record ahead of the rest, against password resets, receipts, and magic links shipped from application code.