Many lifecycle states, many templates
Created, activated, upgraded, downgraded, paused, cancelled, win-back — each needs distinct copy, tone and CTA.
Subscription created, plan upgraded, cancellation confirmed, renewal upcoming — each lifecycle state fires a domain event. else.events delivers the right email at the right moment.
Created, activated, upgraded, downgraded, paused, cancelled, win-back — each needs distinct copy, tone and CTA.
The upgrade email must reflect the new plan features. The downgrade email must explain what was lost.
A cancellation confirmation should acknowledge the decision without being aggressive. Getting the tone wrong damages brand trust.
Upcoming renewal reminders fire N days before the renewal date — your backend controls timing, else.events handles the email.
subscription.created, subscription.upgraded, subscription.cancelled — each routes to a template with appropriate copy.
Include previous_plan, new_plan and features context. The template renders the right context for upgrades and downgrades.
Update the cancellation email copy without a deploy. Iterate on tone independently of your release cycle.
Your cron job fires subscription.renewal_upcoming N days before renewal. else.events sends the reminder.
subscription.created Welcome to the plan — what is included, billing date, how to manage the subscription.
subscription.plan_upgraded Confirmation of upgrade, new features now available, next billing amount.
subscription.plan_downgraded Confirmation of downgrade, features no longer available, when the change takes effect.
subscription.cancelled Confirmation of cancellation, when access ends, win-back offer if applicable.
subscription.renewal_upcoming Reminder before the renewal date with plan details and billing amount.
Each subscription lifecycle change fires the right email automatically.