Marketing and
transactional email
One monthly send allowance covers both, so you pay for the emails you send, not the size of your list.
No credit card. Sends to your own team are free.
- $1/moto reach your list
- $5/mofor 10,000 emails
- Unlimitedsubscribers, every plan
- Built by Morten Pradsgaard, who also builds exit1.dev
- Hosted in the EU
- About day3
For the moment after you ship.
The product is live. Everything between you and telling users, removed.
“I need the whole thing set up before I know if I'll use it.”
Try the whole thing before you pay.
Domains, senders, audiences, forms, drafts, and 100 real sends a month to your own team. Reaching everyone else starts at $1/month.
“DNS records are not my job.”
Connect Cloudflare. We write the records.
DKIM, SPF and DMARC published for you, then rechecked until the domain verifies. No pasting TXT records into a registry at midnight.
“I don't want to sit and watch a send.”
Hit send and walk away.
Delivery goes out in batches with a hard monthly cap and no duplicates if a job retries. A rate limit pauses the send and resumes it on its own.
“Did jane@ actually get it?”
Every email, accounted for.
Delivered, opened, clicked, bounced, all searchable per person. Bad addresses suppress themselves, so one dead list doesn't cost you the inbox.
The parts you need. Not the parts you'll avoid.
Write clean updates
Changelogs and launch notes in a focused composer.
Grow your audience
Import contacts; publish forms as pages, embeds, or popups.
Transactional email
Password resets and receipts, one API call, same domain.
Send with confidence
Verified domains, automatic bounce and complaint handling.
Know what happened
Delivered, opened, clicked. Per campaign and per person.
API and MCP
Manage lists from code. Draft campaigns in your editor.
Automations are in development: triggers, waits, and branches. Everything else on this page ships today.
Email marketing and transactional email, in one tool.
Product updates, changelogs, receipts, password resets. One verified domain, one monthly allowance, unlimited subscribers on every plan.
Startups
You add subscribers quickly and send sparingly. day3 bills by send, not list size, so a fast-growing list never inflates the bill.
See the fitIndie developers
Email your users about what's new, without paying per subscriber or learning a marketing platform. Built for a team of one.
See the fitSaaS teams
Changelogs and release notes are a job of their own. day3 does that one job well, with deliverability and compliance built in and pricing that ignores list size.
See the fitFor the people who ship
Everything here has an API.
Transactional email, contacts, audiences, campaigns. One bearer key, JSON in, JSON out.
curl -X POST "https://go.day3.app/api/v1/emails" \ -H "Authorization: Bearer $DAY3_API_KEY" \ -H "Content-Type: application/json" \ -H "Idempotency-Key: $(uuidgen)" \ -d '{ "from": "Acme <notify@acme.com>", "to": ["jane@acme.com"], "subject": "Reset your password", "html": "<p>Your link is <a href=\"...\">here</a>.</p>" }'Returns an id you can poll: queued → sent → delivered.
curl -X POST \ ".../v1/audiences/aud_123/contacts?upsert=true" \ -H "Authorization: Bearer $DAY3_API_KEY" \ -H "Content-Type: application/json" \ -d '{ "email": "jane@acme.com", "first_name": "Jane", "attributes": { "plan": "pro" } }'One call creates or updates, so your webhook handler stays one line.
Retries can't double-send
An Idempotency-Key resolves to exactly one email.
No look-up round-trip
Address a contact by email or by id.
Fields declare themselves
Unknown attributes become merge tags on arrival.
One domain, both jobs
Resets and product updates, one allowance.
Moving a list in is three calls.
We ask for your opt-outs too. Re-mailing people who left elsewhere is the fastest way to wreck a new domain.
- 1
POST /v1/suppressionsOld bounces and opt-outs first, so nothing re-mails them.
- 2
POST /v1/audiences/{id}/contacts/batch1,000 a call, per-row results, safe to re-run.
- 3
…/batch { "status": "unsubscribed" }The people who left, with the date they left on.
MCP
Write the email where you already work.
day3 speaks Model Context Protocol. Point Claude Code, Cursor, or VS Code at one URL and your editor becomes a composer for it.
claude mcp add --transport http day3 \ https://go.day3.app/api/mcp \ --header "Authorization: Bearer $DAY3_API_KEY"Cursor and VS Code take the same URL as JSON.
> Draft the launch email for segments, pull the highlights from CHANGELOG.md, and send me a test.It reads your audiences and senders first, so it writes against what you have.
# Segments are here Save a filter over any field and send toit. Live, so it's never out of date. :::columns### Build it onceUp to ten conditions, matched all or any.+++### It stays currentEvaluated at send time, never frozen.::: [See it in the app](https://…){.button}Markdown plus blocks for buttons, columns and cards. Each one becomes an editable section.
One URL, no install
Same bearer key as the REST API, one place to revoke it.
It lands as blocks, not HTML
Editable sections in the composer, and it reads back out as Markdown.
It can't mail anyone by accident
Reaching a real audience needs a key you minted for it. An ordinary key drafts and tests only.
The free tier does the whole loop
“Draft it and send me a test” works end to end, no card.
Pricing that doesn't punish growth.
No contact tax. Just pick how many emails you send each month.
Sandbox / Free
Try the whole thing for real.
- Set up domains, senders, audiences, forms, and drafts
- 100 real sends a month, to your own team
- Up to 500 subscribers
How many emails do you send per month?
10,000emails / mo
10k plan
$5/mo
Every plan: unlimited subscribers, the AI assistant, the API, and a hard monthly cap. No surprise bills.
What that means next to the tools you know
Mailchimp, Kit, beehiiv
Priced by contacts
The bill climbs as you grow, and arrives in the months you send nothing.
The full comparisonResend
Priced by sends, dev-first
Closest to day3 on the meter. day3 adds the campaign side: audiences, forms, topics, compliance.
The full comparisonday3
Priced by emails sent
10,000 emails is $5, at 500 subscribers or 50,000.
10,000 users, emailed twice a month, is $8/mo. Per-contact pricing bills you for all 10,000, every month.
The things you're actually weighing.
- Can I try it properly before paying?
- Yes, all of it. A free account verifies a domain, imports a list, and sends for real: 100 emails a month to your own team, same pipeline, same tracking. What $1 buys is reaching everyone else.
- Do I have to leave my current tool to try day3?
- No. Import a copy of your list, send one update, and compare. Nothing here asks for exclusivity.
- Can I bring the people who unsubscribed?
- Yes. Import contacts already marked unsubscribed, and your suppression list outright, so nobody who opted out of your old tool hears from your new one.
- Is $1/month sustainable, or a launch price?
- Real price. Delivery costs about $0.10 per 1,000 emails, so the cheap tiers are priced against card fees, not against email. Every tier pays for itself as it stands.
- What happens if I stop paying?
- You drop to the free tier and keep everything: audiences, domains, drafts, history. It all comes back out as CSV or JSON.
- I only email a few times a year. Worth it?
- Probably, since the list costs nothing in between. Plans don't roll over, so pick the tier that covers the send you actually make and move down whenever.
- Who is day3 the wrong tool for?
- Marketing teams running funnels and agencies managing client accounts. No A/B testing, no CRM, no landing pages. If you need a marketing platform, buy a marketing platform.
Working out authentication, unsubscribe compliance, or whether to move a list? We write about all of it.
Send your first one for free.
Domain, list, first campaign, real send to your own team. All on the free tier.
No credit card. Cancel anytime.
For permission-based product updates only. Cold outreach and purchased lists get paused. It keeps deliverability good for everyone.
Can't edit DNS right now? and come back to it.