keep your Mailgun code. change one line.
tinysend speaks the Mailgun API. point your app's base URL at us — Ghost, phpList, Laravel, Django. no rewrite. and replies land in a real inbox.
- create a mailbox — use your own domain or a tinysend.com address
- open the mailbox → Settings → create a Mailgun-compatible key
- point your app's Mailgun base URL at
https://mailgun.tinysend.com/v3and paste the key
Ghost only supports Mailgun for newsletter sending — and it lets you change the base URL. Add this to config.production.json (or the matching env vars), then restart Ghost:
"bulkEmail": {
"mailgun": {
"baseUrl": "https://mailgun.tinysend.com/v3",
"apiKey": "key-...", // from your tinysend mailbox → Settings
"domain": "yourdomain.com" // your mailbox's sending domain
}
} Laravel — set the Mailgun endpoint in .env:
MAILGUN_DOMAIN=yourdomain.com
MAILGUN_SECRET=key-...
MAILGUN_ENDPOINT=mailgun.tinysend.com Django (django-anymail) — override the API URL:
ANYMAIL = {
"MAILGUN_API_KEY": "key-...",
"MAILGUN_API_URL": "https://mailgun.tinysend.com/v3",
"MAILGUN_SENDER_DOMAIN": "yourdomain.com",
} Node (mailgun.js) — pass url: 'https://mailgun.tinysend.com' to the client. Rails (mailgun-ruby) — set api_host: 'mailgun.tinysend.com'. Anything that speaks the Mailgun API and lets you set the host works.
no code rewrite — you keep your Mailgun integration. one config value changes.
replies land in a real inbox — every send is from a tinysend mailbox, so newsletter replies come back somewhere you can read, search, and automate. The SES/SMTP workarounds are send-only.
no $35/month floor — small lists start at $6/mo (or free up to 100 emails). pay for what you send.
no surprise bans — managed deliverability without the abrupt account suspensions Mailgun is known for.
keeps your stats — opens, clicks and bounces flow back to your app, unlike the SES adapters that drop analytics.
Can I send Ghost newsletters without Mailgun?
Yes. Ghost only supports Mailgun for bulk newsletter email, but it lets you change the Mailgun base URL. Point it at https://mailgun.tinysend.com/v3, paste a tinysend key, and Ghost sends through tinysend with no code change. Replies land in a real inbox.
Is tinysend really a drop-in Mailgun replacement?
Yes. tinysend implements the Mailgun HTTP API — send messages, events, suppressions — so apps hardcoded to Mailgun (Ghost, phpList, Laravel, Django, Node, Rails) switch by changing one base URL. No SDK swap, no code rewrite.
How much does tinysend cost compared to Mailgun?
Mailgun doubled its Flex pricing to $2 per 1,000 in December 2025, with a roughly $35/month floor. tinysend is free up to 100 emails, then $6/month, billed on emails sent — cheaper for small and self-hosted senders under about 10k a month.
Do newsletter replies still work after switching from Mailgun?
Yes, and that is the difference from the SES/SMTP workarounds: every send is from a tinysend mailbox, so replies come back to an inbox you can read, search, and automate. The send-only clones drop replies.
Does tinysend keep my open and click stats?
Yes. Opens, clicks, and bounces flow back to your app through the Mailgun events API, unlike the SES adapters that drop analytics.