Compile-time email contracts
Your IDE catches missing variables before deploy.
Live in stacksender/define. Declare each email's variable shape once with defineEmail<{...}>(). Missing or typo'd fields fail at the TypeScript boundary; CI rejects the PR. The only email provider with end-to-end compile-time safety.
const welcome = defineEmail<{
first_name: string;
plan: "free" | "pro";
}>(...);
// ❌ Build fails before deploy
welcome.send({ to, vars: { first_nme: ... } })