Scheduleit

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 to Scheduled 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:

  1. Request verificationPOST /api/emails with { "email": "alerts@example.com" } (returns 202), or use Request verification on the project's page in the operator console.
  2. 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 400email "…" 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