---
title: "Deploy Send Email at AWS SES Pricing — Self-Host useSend on Railway"
description: "Self-host email at AWS SES pricing. No SendGrid or Resend markup."
category: "Automation"
url: https://railway.com/deploy/usesend-email-platform
---

# Deploy Send Email at AWS SES Pricing — Self-Host useSend on Railway

Self-host email at AWS SES pricing. No SendGrid or Resend markup.

**[Deploy Send Email at AWS SES Pricing — Self-Host useSend on Railway on Railway](https://railway.com/template/usesend-email-platform)**

- **Creator:** SilverBanana
- **Category:** Automation

## Template content

### MinIO Bucket Creator https://res.cloudinary.com/h5kvzw/image/upload/v1706062979/MINIO_Bird_vbtpet.png

- **Image:** minio/mc:RELEASE.2025-04-16T18-13-26Z

### Redis https://cdn.sanity.io/images/sy1jschh/production/0ce0bfdcfbdbf69662b1116671f97c2dd788b655-157x157.svg

- **Image:** redis:8.2.1
- **Start command:** `/bin/sh -c "rm -rf $RAILWAY_VOLUME_MOUNT_PATH/lost+found/ && exec docker-entrypoint.sh redis-server --requirepass $REDIS_PASSWORD --save 60 1 --dir $RAILWAY_VOLUME_MOUNT_PATH"`

### Storage https://res.cloudinary.com/h5kvzw/image/upload/v1706062979/MINIO_Bird_vbtpet.png

- **Image:** minio/minio:latest

### Console https://res.cloudinary.com/h5kvzw/image/upload/v1706062979/MINIO_Bird_vbtpet.png

- **Source:** railwayapp-templates/minio-console

### Server https://usesend.com/logo-squircle.png

- **Image:** usesend/usesend

### Postgres https://devicons.railway.app/i/postgresql.svg

- **Image:** ghcr.io/railwayapp-templates/postgres-ssl:18

## Documentation

# Deploy and Host useSend on Railway

useSend is the open-source email platform that gives you the power of SendGrid, Resend, and
Postmark — self-hosted on your own infrastructure, powered by **Amazon SES at $0.10 per
1,000 emails**. Transactional REST API, SMTP relay, bulk campaign sending, contact
management, visual WYSIWYG email editor, and real-time delivery analytics (opens, clicks,
bounces, unsubscribes) — all in one platform you fully control.

At 100,000 emails/month: SendGrid costs $89.95. Resend costs $40. Postmark costs $75.
useSend on Railway costs ~$10 in SES fees plus Railway compute. No per-platform markup.

---

## What This Template Deploys

| Service | Purpose |
|---|---|
| **useSend Server** | The email platform — REST API, SMTP relay, campaign dashboard, analytics, and contact management |
| **PostgreSQL** | Primary database — API keys, domains, contacts, campaigns, email logs, and delivery events |
| **Redis** | Queue for email sending jobs, retry logic, and background processing |
| **MinIO** | S3-compatible object storage — campaign images, attachments, and email assets |
| **MinIO Bucket Creator** | One-time setup service — creates required MinIO buckets on first deploy |
| **MinIO Console** | Web UI for MinIO bucket management and storage inspection |

All services connect over Railway's private internal network. Database, Redis, and MinIO
credentials are injected automatically via Railway reference variables.

---

## About Hosting useSend

Managed email platforms like SendGrid and Resend are pay-to-play — the more email you send,
the more you pay in platform fees. useSend routes email through Amazon SES, which charges
$0.10 per 1,000 emails with no monthly minimum — the same infrastructure behind AWS's
most reliable email service, billed directly at cost with no middleman markup.

Railway provisions the full six-service stack automatically. PostgreSQL, Redis, and MinIO
are pre-wired over private networking. useSend runs as a Next.js application behind
Railway's HTTPS proxy with automatic domain management and API key generation.

Typical cost: **~$10–15/month** on Railway's Hobby plan for the full six-service stack
plus your AWS SES usage at $0.10/1,000 emails. At 500,000 emails/month, total cost is
~$65/month — versus SendGrid at ~$299/month or Resend at ~$90/month at the same volume.

---

## Deploy in Under 5 Minutes

1. Click **Deploy on Railway** — all six services build automatically (~4–5 minutes)
2. Set the four required variables: `GITHUB_ID`, `GITHUB_SECRET`, `AWS_ACCESS_KEY`,
   `AWS_SECRET_KEY` — see prerequisites below
3. Open your Railway URL — log in with your GitHub account
4. Add and verify your sending domain in the useSend dashboard
5. Generate an API key and start sending transactional emails

---

## Prerequisites

**GitHub OAuth App** — Create at `github.com/settings/applications/new`. Set callback
URL to `https://[your-railway-domain]/auth/callback/github`.

**AWS Account** — Create an IAM user with `AmazonSESFullAccess` and `AmazonSNSFullAccess`
policies, then generate programmatic access keys. See the
[useSend AWS setup guide](https://docs.usesend.com/get-started/create-aws-credentials).

---

## Common Use Cases

- **Self-hosted alternative to Resend** — replace $20–90/month platform fees with flat
  AWS SES costs at $0.10/1,000 emails; same REST API pattern, full delivery analytics,
  own your sending infrastructure completely
- **Self-hosted alternative to SendGrid** — eliminate $15–$299/month subscription tiers;
  useSend gives you transactional API, SMTP relay, bulk sending, and analytics on your
  own PostgreSQL instance
- **High-volume transactional email at AWS SES pricing** — password resets, magic links,
  order confirmations, and notifications at $0.10/1,000 with no tier limits or overage fees
- **Email marketing without Mailchimp fees** — send newsletter campaigns, product updates,
  and drip sequences via the visual WYSIWYG editor with contact list management and per-list
  subscription tracking — all on your infrastructure
- **Multi-domain email API for SaaS** — manage multiple sending domains, separate API keys
  per project, and per-domain analytics from a single useSend deployment
- **Railway Hobby plan email solution** — Railway blocks SMTP on Hobby plans; useSend's
  REST API routes through AWS SES over HTTPS, working on every Railway plan without SMTP

---

## Configuration

| Variable | Required | Description |
|---|---|---|
| `GITHUB_ID` | ✅ Required | GitHub OAuth app client ID — for user authentication |
| `GITHUB_SECRET` | ✅ Required | GitHub OAuth app client secret |
| `AWS_ACCESS_KEY` | ✅ Required | AWS access key ID with SES and SNS permissions |
| `AWS_SECRET_KEY` | ✅ Required | AWS secret access key |
| `NEXTAUTH_SECRET` | ✅ Auto-generated | NextAuth.js session secret — auto-generated at deploy |
| `DATABASE_URL` | ✅ Auto-injected | PostgreSQL connection string via Railway reference variable |
| `REDIS_URL` | ✅ Auto-injected | Redis connection URI via Railway reference variable |
| `NEXT_PUBLIC_APP_URL` | ✅ Auto-set | Your Railway public domain — required for OAuth callbacks |
| `MINIO_ENDPOINT` | ✅ Auto-injected | MinIO internal endpoint via Railway reference variable |
| `MINIO_ACCESS_KEY` | ✅ Auto-injected | MinIO access key — auto-generated at deploy |
| `MINIO_SECRET_KEY` | ✅ Auto-injected | MinIO secret key — auto-generated at deploy |

---

## useSend vs. Managed Email Platforms

| | useSend (Railway + SES) | Resend | SendGrid | Postmark |
|---|---|---|---|---|
| **Base cost** | ~$10–15/mo (Railway) | Free–$20/mo | Free–$15/mo | $15/mo |
| **Per-1,000 emails** | $0.10 (AWS SES) | Included in plan | Included in plan | Included in plan |
| **100k emails/month** | ~$20–25 total | $40/month | $89.95/month | $75/month |
| **500k emails/month** | ~$65 total | ~$90/month | ~$299/month | ~$225/month |
| **Data ownership** | ✅ Your infrastructure | ❌ Resend servers | ❌ SendGrid servers | ❌ Postmark servers |
| **Contact management** | ✅ Built-in | ✅ Audiences | ❌ Basic | ❌ No |
| **WYSIWYG email editor** | ✅ Visual, no-code | ❌ No | ⚠️ Design editor | ❌ No |
| **SMTP relay** | ✅ Yes | ❌ No | ✅ Yes | ✅ Yes |
| **Self-hostable** | ✅ Yes | ❌ No | ❌ No | ❌ No |
| **Open source** | ✅ Yes | ❌ No | ❌ No | ❌ No |

---

## Dependencies for useSend Hosting

- Railway account — Hobby plan (~$10–15/month) covers all six services
- AWS account with SES + SNS access (IAM user with programmatic keys)
- GitHub account for OAuth app creation

### Deployment Dependencies

- [useSend GitHub Repository](https://github.com/usesend/useSend) — source and releases
- [useSend Documentation](https://docs.usesend.com) — setup guides and API reference
- [AWS SES Setup Guide](https://docs.usesend.com/get-started/create-aws-credentials) —
  IAM user, SES, and SNS configuration
- [AWS SES Pricing](https://aws.amazon.com/ses/pricing/) — $0.10 per 1,000 emails

### Implementation Details

The full stack deploys over Railway's private internal network. The MinIO Bucket Creator
runs once at startup to initialise required buckets, then exits. All credentials are wired
via Railway reference variables. AWS SES handles outbound delivery; SNS webhooks send
delivery events (delivered, opened, clicked, bounced, complained) back to useSend's
PostgreSQL analytics store. Select the AWS region closest to your Railway deployment —
`us-east-1` is recommended if unsure.

---

## Frequently Asked Questions

**How much does useSend cost compared to Resend or SendGrid?**
Railway compute for the six-service stack runs at ~$10–15/month. AWS SES charges $0.10 per
1,000 emails with no monthly minimum. At 100k emails/month, total cost is ~$20–25 vs Resend at $40 and SendGrid at $89.95.
At 500k emails/month, useSend costs ~$65 total vs SendGrid at ~$299/month.

**Why does useSend require an AWS account?**
useSend uses Amazon SES as its delivery infrastructure — the same service behind AWS's own
email delivery at $0.10/1,000 emails. AWS provides the sending reputation, IP pool, and
compliance infrastructure. useSend provides the API, dashboard, analytics, and contact
management layer on top of SES. Without AWS, useSend cannot send emails.

**Why does useSend require GitHub for authentication?**
GitHub OAuth is the only supported login method in the current release. Create a GitHub app
with the callback URL pointing to your Railway domain. Other auth providers are planned.

**Do I lose email logs and contact data if Railway redeploys?**
No. All delivery logs, contacts, campaigns, and API keys are stored in the Railway-managed
PostgreSQL database. Email assets and images are stored in MinIO with its own persistent
volume. Redeploys and updates do not affect any stored data.

**Can I send bulk marketing emails as well as transactional?**
Yes. useSend handles both — transactional via REST API or SMTP relay, and marketing via
the visual WYSIWYG editor with contact lists. Both route through SES with per-domain analytics.

**Does useSend work on Railway's Hobby plan without SMTP?**
Yes. useSend routes all email through AWS SES via HTTPS REST calls — not raw SMTP. This
works on Railway's Hobby plan where outbound SMTP (ports 25, 465, 587) is blocked.

---

## Why Deploy and Host useSend on Railway?

Railway is a singular platform to deploy your infrastructure stack. Railway will host your
infrastructure so you don't have to deal with configuration, while allowing you to vertically
and horizontally scale it.

By deploying useSend on Railway, you get a complete self-hosted email platform — transactional
API, SMTP relay, bulk campaigns, contact management, and real-time delivery analytics — at
AWS SES pricing with no per-platform markup and full ownership of your email infrastructure.

## Similar templates

- [N8N Main + Worker](https://railway.com/deploy/n8n-main-worker) — Deploy and Host N8N with Inactive worker.
- [Evolution API with n8n](https://railway.com/deploy/evolution-api-with-n8n) — [Jul'26] WhatsApp automation platform using Evolution API, n8n & PostgreSQL
- [Postgres Backup](https://railway.com/deploy/postgres-s3-backups) — Cron-based PostgreSQL backup to bucket storage

Open this page in a browser: https://railway.com/deploy/usesend-email-platform
