Viesti Sign in

Viesti vs Postmark

Postmark and Viesti both send application email and keep it apart from marketing traffic. Postmark does more: templates, webhooks, open and link tracking, inbound processing and broadcast streams. Viesti relays transactional mail only, over SMTP and one JSON endpoint, and costs $5 a month for 50,000 emails where Postmark's Basic plan is $15 a month for 10,000.

Postmark and Viesti compared

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

Viesti Postmark
Entry paid plan $5/month for 50,000 emails per billing cycle Basic: $15/month for 10,000 emails. Pro ($16.50) and Platform ($18) also start at 10,000.
Free plan 75 emails per UTC day and 2,000 per UTC month, with no time limit Developer plan: 100 emails/month with no expiry and no overage; no plan between 100 and 10,000 emails
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 Pro, $1.20 on Platform
Sending domains Up to 20 per workspace on every plan 5 on Basic, 10 on Pro, unlimited on Platform
SMTP smtp.viesti.email, port 587 (STARTTLS) or 465 (implicit TLS); AUTH PLAIN with username apikey and your API key as the password smtp.postmarkapp.com, ports 25, 2525 or 587 with STARTTLS; the server API token as username and password, or an SMTP token
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 REST API with single and batch sends; official libraries
IP pools Separate shared pools for free and for paid workspaces; marketing mail is not accepted on any plan Transactional and broadcast message streams send from separate IP pools
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] $50 per IP per month, for senders of at least 300,000 messages a month, on Pro plans or higher
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 DKIM TXT record (1024-bit keys); custom Return-Path CNAME to pm.mtasv.net
Open and click tracking None Open and link tracking, enabled per server or per message
Webhooks None; each recipient's outcome is in the dashboard's Activity log Delivery, bounce, spam complaint, open, click, subscription change and inbound
Templates None; send rendered HTML and text Responsive templates and a template editor
Inbound email None Inbound processing on Pro and Platform
Message history Activity log; message bodies kept 30 days, delivery events 180 days 45 days by default; up to 365 days on Pro and Platform

Choose Postmark if

  • Your app reacts to deliveries, bounces, complaints, opens or clicks through webhooks.
  • You want templates stored and rendered by the provider.
  • You process inbound email in your app.
  • You also send broadcasts, such as product updates or digests, and want them on the same account on separate IPs.
  • You want official libraries, batch sending or a sandbox mode for tests.
  • You need several users with user roles on one account, or message content kept longer than Viesti's 30 days: Postmark keeps 45 days by default and up to 365 on Pro and Platform.

Choose Viesti if

  • You send only transactional mail and price matters: $5 a month for 50,000 emails, then $0.10 per 1,000, against $15 for 10,000, then $1.80 per 1,000, on Postmark Basic.
  • You send more than 100 and at most 2,000 emails a month, no more than 75 a day. That fits Viesti's free plan; Postmark has no plan between its 100-email free tier and 10,000 emails.
  • You send from many domains: up to 20 per workspace on every Viesti plan.
  • You want your provider to refuse marketing mail rather than route it to a separate stream.
  • Delivery status in a dashboard is enough, and you need no webhooks, templates, tracking or inbound email.

Migrate from Postmark 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.

Viesti's records use their own names, so Postmark's DKIM and Return-Path records stay in place and both services can send 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.

Postmark accepts CRAM-MD5, DIGEST-MD5, PLAIN and LOGIN; if you pinned one of the others, switch it to PLAIN. Remove Postmark headers such as X-PM-Message-Stream, X-PM-Tag and X-PM-Metadata-*: Viesti does not read them and delivers them to recipients unchanged.

4. Or switch your API calls

Postmark's POST /email takes From, To (comma-separated), Subject, TextBody and HtmlBody. They map to Viesti's from, to, subject, text and html.

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.
  • Inbound email and broadcasts: keep them on Postmark or move them to another service; Viesti handles neither.

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 Postmark's records

Once nothing sends through Postmark, wait a few days for late bounces, then delete Postmark's DKIM TXT record and the Return-Path CNAME that points to pm.mtasv.net (named pm-bounces by default). Keep your DMARC record; Viesti checks it.