One command
Add Resend to any Ashlr Stack project with a single command. Stack runs the auth flow, verifies the credential, and writes every secret slot into Phantom.
stack add resend
Or describe what you're building and let Claude pick it up via stack recommend:
stack recommend "transactional email for my app" Auth flow
Paste a long-lived API key once. Stack verifies it against the provider's API before writing to Phantom.
How-to: Paste an API key from https://resend.com/api-keys.
Secret slots
stack add resend writes these 1 secret
slot into your Phantom vault:
RESEND_API_KEY
The values never leave Phantom in plaintext. Your .env file references slot
names, and stack exec -- <cmd> swaps them in at process-spawn time via
Phantom's local proxy.
Starter templates that include Resend
Apply a pre-wired stack with one command:
-
stack init --template supabase-posthog-sentry-resend
Related providers in Email
- SendGrid — High-volume transactional mail. API key verified against /v3/scopes on paste.
- Mailgun — API-first email + routing. Key verified against /v3/domains on paste (HTTP Basic).
- Postmark — Deliverability-focused transactional. Account token verified against /servers on paste.
FAQ
Do I need a Resend account to use it with Stack?
Yes — Stack provisions Resend on your behalf, but it authenticates as you. Paste a long-lived API key once. Stack verifies it against the provider's API before writing to Phantom. If you don't have a credential yet, create one at https://resend.com and paste it once.
Where does Stack store my Resend credentials?
In Phantom Secrets, an E2E-encrypted local vault. Stack writes the secret slot names (RESEND_API_KEY) into .stack.toml — the actual values live only in Phantom and never touch disk in plaintext.
Can I rotate or revoke this integration later?
Yes. Run `stack remove resend` to pull the Resend service back out (Phantom secrets deleted, MCP entry removed, .stack.toml cleaned up). Rotate the underlying Resend credentials in their dashboard — https://resend.com — and Stack's next `doctor --fix` will pick up the new values.