Viesti Sign in

Viesti vs Mailgun

Mailgun offers an HTTP API and SMTP relay with tracking, webhooks, templates, inbound routes and a choice of US or EU hosting. Its free plan allows 100 emails a day, and paid plans start at $15 a month for 10,000 emails. Viesti relays transactional mail only, over SMTP and one JSON endpoint, for $5 a month for 50,000 emails, without tracking, webhooks, templates or inbound email.

Mailgun and Viesti compared

Mailgun details come from its pricing page and documentation, linked in each row. Checked 26 September 2026. Prices in US dollars.

Viesti Mailgun
Entry paid plan $5/month for 50,000 emails per billing cycle Basic: $15/month for 10,000 emails. Foundation: $35/month for 50,000.
Free plan 75 emails per UTC day and 2,000 per UTC month, with no time limit 100 emails/day, 1 custom sending domain, 1 inbound route
Extra emails $0.10 per 1,000 ($0.0001 per email); paid sending has no volume cap $1.80 per 1,000 on Basic, $1.30 on Foundation 50k
Sending domains Up to 20 per workspace on every plan 1 on Free and Basic, 1,000 on Foundation and Scale
SMTP smtp.viesti.email, port 587 (STARTTLS) or 465 (implicit TLS); AUTH PLAIN with username apikey and your API key as the password smtp.mailgun.org, ports 25, 587 or 2525 (STARTTLS) or 465 (TLS); SMTP credentials per domain
HTTP API POST /v1/send with JSON from, to, subject, text and html, or a whole MIME message in raw; no SDKs, no batch endpoint Form fields posted to /v3/<domain>/messages, or a pre-built MIME message
IP pools Separate shared pools for free and for paid workspaces; marketing mail is not accepted on any plan Shared IPs by default; dedicated IP pools on Scale
Dedicated IPs Dedicated plan: an IP pool of your own with hands-on warmup, custom pricing, up to 120,000 emails an hour and 2,000,000 a day; ask [email protected] 1 included with Foundation 100k and Scale; more at $59 per IP per month
Domain authentication Ownership TXT, DKIM key delegated by CNAME (replaced without DNS changes), include:spf.viesti.email in SPF and a DMARC policy; optional Return-Path CNAME for SPF alignment SPF TXT (include:mailgun.org), DKIM TXT, a tracking CNAME and two MX records (mxa.mailgun.org, mxb.mailgun.org)
Open and click tracking None Opens and clicks, set per domain or per message
Webhooks None; each recipient's outcome is in the dashboard's Activity log On every plan
Templates None; send rendered HTML and text Template builder and API from Foundation
Inbound email None Routes: 1 on Free, 5 on Basic, full inbound routing from Foundation
Message history Activity log; message bodies kept 30 days, delivery events 180 days Logs kept 1 day on Free and Basic, 5 days on Foundation, 30 days on Scale

Choose Mailgun if

  • You receive email and route it to your app or other addresses.
  • You need open and click tracking, webhooks, stored templates or scheduled delivery.
  • You want to choose US or EU hosting from one account.
  • You need email address validation, send-time optimization, or several users with roles, all listed on Mailgun's pricing page.
  • You need more than 75 free emails a day: Mailgun's free plan allows 100.

Choose Viesti if

  • You send up to 50,000 emails a month: $5 on Viesti, against $35 on Mailgun Foundation, or $15 on Basic for 10,000.
  • You send from several domains on a small plan: up to 20 on every Viesti plan, against 1 on Mailgun's Free and Basic plans.
  • You want delivery history longer than a day without upgrading: Viesti keeps delivery events for 180 days and message bodies for 30 on every plan.
  • You want your provider to refuse marketing mail, so its shared pools carry transactional mail only.
  • You need no inbound routes, tracking or templates.

Migrate from Mailgun to Viesti

1. Create a workspace and an API key

Sign in with GitHub or Google; the first sign-in creates your workspace. Create an API key on the Credentials page and keep it in your secret store, for example as VIESTI_API_KEY. The quickstart walks through the whole setup.

2. Verify your sending domain

Add the domain on the Sending domains page and publish the records it lists (details in DNS records):

  • TXT _viesti.yourdomain.com, which proves ownership.
  • CNAME v1._domainkey.yourdomain.com, which delegates DKIM signing to dkim.viesti.email.
  • include:spf.viesti.email in the domain's SPF record. The page shows a merged value that keeps the includes you already publish; a domain must have only one SPF record.
  • A DMARC record at _dmarc.yourdomain.com, only if no DMARC policy covers the domain yet.
  • Optional: CNAME viesti.yourdomain.com to bounce.viesti.email, so bounces return to your own domain and SPF aligns with DMARC.

Mailgun's include:mailgun.org sits in the same SPF record Viesti needs: publish the merged value the Sending domains page shows, which contains both includes. Viesti's other records use their own names, so Mailgun's DKIM, tracking and MX records stay in place while you switch.

3. Switch your SMTP settings

Host:     smtp.viesti.email
Port:     587 (STARTTLS) or 465 (implicit TLS)
Username: apikey
Password: your Viesti API key

Viesti accepts AUTH PLAIN only, and only after TLS; mail libraries pick it automatically. To try the settings before you deploy, send a test message with curl:

printf 'From: [email protected]\r\nTo: [email protected]\r\nSubject: Viesti test\r\n\r\nSent through Viesti.\r\n' |
  curl -sS --ssl-reqd smtp://smtp.viesti.email:587 \
    --user "apikey:$VIESTI_API_KEY" \
    --mail-from [email protected] --mail-rcpt [email protected] \
    --upload-file -

The command prints nothing when Viesti accepts the message, which then shows in the Activity log; a rejected login or recipient prints curl's error. SMTP covers ports, limits and error replies.

Mailgun's SMTP credentials belong to one domain; one Viesti API key sends for every verified domain in the workspace. Remove X-Mailgun-* headers (tags, tracking, variables, templates, scheduling): Viesti does not read them and delivers them to recipients unchanged.

4. Or switch your API calls

Mailgun's /messages endpoint takes form fields from, to, subject, text and html; Viesti takes the same names as JSON, with to as an array. A pre-built MIME message you post to Mailgun goes into Viesti's raw field.

Viesti's endpoint is POST https://viesti.email/v1/send with Authorization: Bearer $VIESTI_API_KEY and a JSON body of from, to (an array of up to 50 addresses), subject, text and html. It rejects any other field with 400 invalid JSON. For Cc, Bcc, Reply-To, custom headers or attachments, build the MIME message yourself, send it in raw, and list every recipient, Cc and Bcc included, in to. See the HTTP API reference.

5. Replace what Viesti does not do

  • Templates: render the message in your app and send the finished HTML and text.
  • Webhooks: there are none. The Activity log shows each recipient's outcome, and hard bounces and complaints add the recipient to your suppression list automatically; see bounces and suppressions.
  • Open and click tracking: Viesti does not rewrite links or add pixels, so there is nothing to configure or remove.
  • Scheduled delivery: hold the message in your own job queue and submit it when it is due.
  • Inbound routes: keep them, and Mailgun's MX records, on Mailgun; Viesti does not receive mail for your domains.

6. Carry over suppressions

Export the addresses your current provider suppresses (hard bounces, complaints, unsubscribes) and add each one on Viesti's Suppressions page with a reason. The page adds one address at a time. Viesti then refuses mail to those addresses when you submit it.

7. Remove Mailgun's records

Once nothing sends through Mailgun, wait a few days for late bounces, then remove include:mailgun.org from the SPF record and delete Mailgun's DKIM TXT record and tracking CNAME. Delete Mailgun's MX records only if nothing still arrives through Mailgun for that domain. Replies to your mail need an MX (or A) record that leads to a mailbox you read; Viesti's Sending domains page lists it as an optional row.