Configure transactional email, understand the Resend BYOK model, and use dev inbox interception during local development.
Kizaki's email support is intentionally narrow:
- production email is transactional send only
- provider support is BYOK Resend only
- local development does not send real email
kizaki devintercepts every send into the dev dashboard inbox
You can build confirmations, password resets, reminders, cancellations, and invite flows today. Kizaki does not yet ship managed email, provider choice, domain verification workflows, or deliverability management.
Configure The Email Block
email {
provider: resend,
apiKey: @secret("RESEND_API_KEY"),
from: "Tempo <noreply@tempo.example>",
replyTo: "support@tempo.example",
}Set the production secret with the CLI:
kizaki secrets set RESEND_API_KEY "re_..." --env productionThis same email {} configuration applies to both transactional email from sendEmail() in your server code and platform-driven auth mail such as password reset flows.
Send Email From Server Functions
import { sendEmail } from "@kizaki/sdk";
/** @expose */
export async function sendReminder(email: string) {
await sendEmail({
to: email,
subject: "Your availability poll closes tomorrow",
html: "<p>Your availability poll closes tomorrow.</p>",
text: "Your availability poll closes tomorrow.",
});
}Calendar Invites And .ics Fallback
Use createICSInvite() to generate a standards-compliant calendar attachment, then send it with sendEmail().
import { createICSInvite, sendEmail } from "@kizaki/sdk";
/** @expose */
export async function sendInvite(email: string) {
const invite = createICSInvite({
title: "Tempo kickoff",
startsAt: "2026-06-03T18:00:00Z",
endsAt: "2026-06-03T18:30:00Z",
organizer: { email: "host@example.com", name: "Tempo" },
attendees: [{ email }],
});
await sendEmail({
to: email,
subject: "Tempo kickoff",
text: "Calendar invite attached.",
attachments: [
{
filename: "tempo-kickoff.ics",
content: invite,
contentType: "text/calendar",
},
],
});
}This is the fallback path for apps that need calendar delivery before provider-side calendar write-back exists.
Local Development
In kizaki dev, email is intercepted and shown in the dev dashboard inbox. Nothing reaches real inboxes. You develop against the real sendEmail() API without configuring a live API key.
In practice:
- you call
sendEmail()normally - the runtime captures the message for inspection in the dashboard
- no email is delivered externally
What Is Not Shipped Yet
- managed Kizaki email (
provider: kizaki) - provider choice beyond Resend
- inbound email handling
- webhook-driven email event ingestion
- built-in branded templates or campaign tooling