Email channel
An email target delivers the event's payload as a plaintext email to a verified address.
Target shape
{ "channel": "email", "address": "alerts@example.com", "subject": "Your reminder" }
address— the recipient. Must be verified for your org first (see below).subject(optional) — defaults toScheduled message · <id>using the event's short id.
The email body is the event payload (payloadBase64), decoded and sent
as UTF-8 plaintext. HTML and templates aren't supported yet. The
sender address is fixed by Scheduleit — you don't set a from.
Verify an address first
You can only send to addresses your org has verified. This is a one-time step per address:
- Request verification —
POST /api/emailswith{ "email": "alerts@example.com" }(returns202), or use Request verification on the project's page in the operator console. - Click the link in the verification email we send to that address. The link is valid for 24 hours; clicking it marks the address verified. (Verification requests themselves are rate-limited, so you can't spam them.)
Once verified, the address is usable across the org. Manage verified
addresses with the emails.list and emails.revoke operations (or the
operator console).
Scheduling an email to an address that isn't verified fails at create time with
400—email "…" is not verified for this org; request verification first(or… verification is still pending). Verify before you schedule.
Example
curl -sS -X POST https://getscheduleit.app/api/events \
-H "Authorization: Bearer sk_YOUR_KEY" \
-H "Content-Type: application/json" \
-d '{
"schedule": { "kind": "oneshot", "fireAt": "2026-07-05T09:00:00Z" },
"target": { "channel": "email", "address": "alerts@example.com", "subject": "Your scheduled reminder" },
"payloadBase64": "SGVsbG8gZnJvbSBTY2hlZHVsZWl0IQ=="
}'
payloadBase64 here decodes to Hello from Scheduleit! — the email
body. Omit it for an empty body; omit subject for the default.
Delivery and retries
Emails are sent via Resend. Delivery uses the same
retry curve as webhooks — 5s → 30s → 2m → 10m → 1h → 6h, seven
attempts total, then dead_letter (see the
Webhook channel for the full retry + dead-letter
details). Unlike account/verification mail, scheduled email deliveries
aren't subject to per-address rate caps — they're the product.
See also
- Scheduling — send an email once, on an interval, or on a cron.
- Webhook channel — the other delivery target.