
Built with FastAPI, Redis, Celery and AWS SES to deliver millions of emails reliably. Schedule campaigns, manage subscribers and automate newsletters from one platform.
From draft to inbox — this is the real pipeline behind every campaign, not a marketing diagram.
Write a subject line and pick one of your HTML templates. The campaign starts as a draft.
Set the template's variables and confirm the subscriber list it goes out to.
Pick a send time and timezone. The campaign's status flips from draft to scheduled.
A scheduler task checks every minute for campaigns that are due, and queues them for sending.
Emails go out in batches through Amazon SES, with automatic retries if a batch fails.
Every recipient's send attempt is recorded — sent, failed, or bounced — for that campaign.
Every panel below is a real part of the product — scheduling, delivery tracking, subscriber management, templates, and the API behind all of it.
Schedule a campaign for a future time and timezone. A Celery Beat job checks every minute for what's due and queues it — database state drives the send, not a timer in your browser.
Every send is logged per recipient via its AWS SES message ID — sent, failed, or bounced.
Example campaign, not aggregate data
Every dashboard action is a FastAPI endpoint underneath — create, schedule, and cancel campaigns from your own backend.
Drop a subscribe form on your own site. Origin is validated against your company's registered website before anyone joins.
HTML templates with named variables and file uploads for assets, with every edit kept as a version.
No proprietary black box — a straightforward REST API sits on top of FastAPI, Postgres, Redis, Celery and AWS SES.
$ curl -X POST /api/campaigns \ -H "Authorization: Bearer $TOKEN" \ -d '{ "name": "March Product Update", "template_id": "b7e4-...", "constants_values": { "first_name": "Alex" }, "scheduled_for": "2026-03-01T09:00:00Z" }' 201 Created { "id": "c9f1-...", "status": "draft" }
Start free, scale as you grow
Straight answers, including where SkyMail falls short today.
Amazon SES. Every campaign is sent in batches through SES, with automatic retries if a batch fails to send.
You schedule a campaign for a specific UTC time. A Celery Beat job checks every minute for campaigns that are due and queues them for sending — it's database state driving execution, not a timer sitting in your browser tab.
Yes. Every recipient's send attempt is logged as sent, failed, or bounced, tied to its AWS SES message ID, and a campaign's status shows the totals. There's no open or click tracking today — just delivery status.
Not yet. SkyMail currently supports one-time scheduled campaigns. Welcome emails, delay-based triggers, and multi-step automation aren't built — we'd rather say that plainly than pretend otherwise.
Yes — up to 1,000 subscribers on the free tier, no credit card required to start.
Yes. Templates support named variables filled in per campaign, file uploads for assets, and every edit is kept as a version.
Create a free account, schedule a send, and watch it go out through AWS SES.