← Back to the case study

Appendix · Case Study 01, Lifecycle

The lifecycle email library

Every one of Knife Fight's 19 triggered emails: the real subject line, what fires it, and the actual rendered HTML (not a mockup). Grouped by the four stages of the journey, all sent through Resend from one shared, responsive template.

3 emails

Onboarding & account

Make the account real and reachable: double opt-in before anything else can fire.

Welcome
🔪 Welcome to the fight
Trigger
New account registered
To
New user
Rendered Welcome email
Confirm email
✅ Confirm your email
Trigger
Verification re-sent (e.g. from Settings)
To
User
Rendered Confirm email email
Password reset
🔑 Reset your password
Trigger
Password reset requested
To
User
Rendered Password reset email
9 emails

The draft

The highest-stakes window: an escalating ladder of nudges so no pick is missed, with a fork out to commissioners.

Draft is tomorrow
🏈 Your draft is tomorrow
Trigger
~24h before the scheduled draft
To
All members
Rendered Draft is tomorrow email
Draft order set
📋 Draft order is set
Trigger
Draft order locks in
To
All members
Rendered Draft order set email
The draft is live
🏈 The draft is live
Trigger
Draft begins
To
All members
Rendered The draft is live email
On the clock
⏱️ You're on the clock
Trigger
Your pick opens (slow draft)
To
Drafter
Rendered On the clock email
10-minute warning
⏳ 10 min left on your pick
Trigger
10 min before your pick expires
To
Drafter
Rendered 10-minute warning email
Clock ran out
⏰ We picked {player} for you
Trigger
Pick timer expires (first miss)
To
Drafter
Rendered Clock ran out email
Autodraft is on
🤖 Autodraft is on
Trigger
Second missed pick in a row
To
Drafter
Rendered Autodraft is on email
Draft recap
🏈 Your draft's in
Trigger
Draft completes (auto-drafted owners)
To
Owner
Rendered Draft recap email
Pick warning · commissioner
⏳ {team} has 10 min left
Trigger
10 min before a member's pick expires
To
Commissioners
Rendered Pick warning · commissioner email
2 emails

In-season

The weekly cut. Warn before the blade falls; confirm when it does.

On the line
⚠️ You're on the line
Trigger
Team drops into the cut zone (live scoring)
To
Owner
Rendered On the line email
Eliminated
🗡️ You've been cut — {team} is out
Trigger
Team eliminated when the week finalizes
To
Owner
Rendered Eliminated email
5 emails

Trades

A full negotiation loop: offer, counter, rejection, the commissioner's review, and the done deal. Nobody refreshes a page to find out what happened.

Trade offer
🤝 {team} wants to deal
Trigger
A trade offer is sent to you
To
Recipient
Rendered Trade offer email
Counter offer
🔁 {team} countered
Trigger
Your offer is closed and countered with an amended deal
To
Original proposer
Rendered Counter offer email
Trade rejected
🚫 Trade rejected
Trigger
Your offer is declined
To
Proposer
Rendered Trade rejected email
Trade review · commissioner
⚖️ Trade to review
Trigger
A deal is accepted into the review window
To
Commissioners (minus the acceptor)
Rendered Trade review · commissioner email
Trade completed
✅ Trade done
Trigger
The review window closes & the deal executes
To
Both owners
Rendered Trade completed email