Resend — Operations Workbook

Transactional email sending for the Ecotrans ecosystem via resend.com. Managed under account radieu@gmail.com.


Architecture

info@radekkonarski.com (sender address)

├── Inbound  → Cloudflare Email Routing → forwarded to radieu@gmail.com
└── Outbound → Resend SMTP relay (smtp.resend.com:465)
                  └── authenticated via API key (RESEND_API_KEY)
                  └── signed with DKIM resend._domainkey.radekkonarski.com
                  └── SPF: amazonses.com included in radekkonarski.com SPF

Gmail radieu@gmail.com is configured with Send mail as info@radekkonarski.com pointing at the Resend SMTP relay — allowing manual email sending from the Gmail UI without a separate mailbox.


Service Details

FieldValue
Providerresend.com
Accountradieu@gmail.com (UI login)
PlanFree — 3 000 emails/month, 100/day
Domainradekkonarski.com (verified 2026-06-18)
Domain ID3f4c9157-6c49-4ec0-89c6-2549dedb3793
Regioneu-west-1 (AWS SES EU)
Sender addressinfo@radekkonarski.com

SMTP Credentials

FieldValue
Hostsmtp.resend.com
Port465 (SSL)
Usernameresend (literal — same for all accounts)
PasswordRESEND_API_KEY (API key value)
Frominfo@radekkonarski.com
From nameRadek Konarski

SMTP password == API key. No separate SMTP password exists.


API Key Management

Variable nameStored inManaged via
RESEND_API_KEYradekkonarski-personal-brand/.env.localResend dashboard → API Keys
RADEK_BRAND_RESEND_API_KEYp24-infra/.env.localResend dashboard → API Keys
BothSOPS secrets/radekkonarski-brand.env.sopssops -d secrets/radekkonarski-brand.env.sops

API key rotation: generate new key in Resend dashboard → update secrets/radekkonarski-brand.env.sops → update both .env.local files → revoke old key.


DNS Records (radekkonarski.com, Cloudflare zone 7d2cd27bc46075f693771646cc54b0f8)

All added 2026-06-18 via Cloudflare API:

TypeNameValuePurpose
TXTresend._domainkeyp=MIGfMA0GCS…DKIM signing key
MXsendfeedback-smtp.eu-west-1.amazonses.com (priority 10)Bounce/feedback handling
TXTsendv=spf1 include:amazonses.com ~allSPF for send subdomain
TXT@ (root)v=spf1 include:_spf.mx.cloudflare.net include:_spf.google.com include:amazonses.com ~allRoot domain SPF (updated)

Gmail “Send mail as” Setup

radieu@gmail.com is configured to send as info@radekkonarski.com via Resend SMTP:

  • Gmail Settings → Accounts and Import → Send mail as
  • SMTP server: smtp.resend.com, port 465
  • Username: resend
  • Password: Resend API key
  • TLS/SSL: SSL

Verification email is delivered to info@radekkonarski.com → forwarded by Cloudflare Email Routing → arrives in Gmail inbox.


Health Check

# Verify domain status via Resend API
$headers = @{ Authorization = "Bearer $env:RESEND_API_KEY" }
Invoke-RestMethod -Uri "https://api.resend.com/domains/3f4c9157-6c49-4ec0-89c6-2549dedb3793" -Headers $headers |
  Select-Object -ExpandProperty status
# expected: "verified"
# Re-trigger DNS verification if needed
Invoke-RestMethod -Uri "https://api.resend.com/domains/3f4c9157-6c49-4ec0-89c6-2549dedb3793/verify" `
  -Headers $headers -Method Post

Sending a Test Email

$headers = @{ Authorization = "Bearer $env:RESEND_API_KEY"; "Content-Type" = "application/json" }
$body = @{
    from    = "Radek Konarski <info@radekkonarski.com>"
    to      = @("radieu@gmail.com")
    subject = "Resend test"
    html    = "<p>Test from Resend SMTP — radekkonarski.com</p>"
} | ConvertTo-Json
Invoke-RestMethod -Uri "https://api.resend.com/emails" -Headers $headers -Method Post -Body $body

Free Tier Limits & Upgrade Path

MetricFree limitAction at limit
Monthly sends3 000Upgrade to Pro ($20/mo) or reduce send volume
Daily sends100Batch or spread sends across days
Custom domains1Sufficient for current usage
API keysUnlimited

Monitor monthly usage at resend.com/overview.


Cross-references

  • README — service inventory
  • README — credential storage (secrets/radekkonarski-brand.env.sops)
  • README — Cloudflare DNS records
  • radekkonarski-personal-brand/CLAUDE.md — personal brand project context