# Postmark

Email delivery service with REST API, SMTP, webhooks and inbound parsing for transactional and broadcast email.

- Provider: ActiveCampaign (https://postmarkapp.com)
- Category: Send email
- Type: Hosted API
- Pricing model: Monthly plans by email volume, with a per-1,000 rate above the tier [1]
- Free tier: 100 emails a month, no overages, no card [1]
- Authentication: Server or account API token in a request header; no OAuth [4]
- Connect via: REST API, SMTP, SDKs, local MCP server [3]
- Read from the provider's pages on 2026-11-04
- Page: https://supermarket.dev/tools/send-email/postmark

## Pricing

### Billing
- Pricing model: Monthly plan priced by email volume tier (emails sent and received), plus a per-1,000 rate for emails over the tier [1]
- Free tier: 100 emails a month, no overages allowed, does not expire [1]
- Card required for free tier: No [2]
- Minimum spend: $15.00 a month on the lowest paid tier (Basic, 10,000 emails); no tier between 100 and 10,000 emails [1]
- Billing period: Monthly; overages are added to the next month's bill; unused emails do not roll over [1]
- Billing period (other page): Unused emails expire at the end of the month [20]

### Prices
Effective $ per 1,000 = Basic monthly price divided by monthly volume times 1,000, for example $15.00 / 10,000 x 1,000 = $1.50. Free plan is $0 at 100 emails a month.
| Monthly volume (emails) | Basic, $ per month | Pro, $ per month | Platform, $ per month | Basic, effective $ per 1,000 |
|---|---|---|---|---|
| 10,000 | $15.00 | $16.50 | $18.00 | $1.50 |
| 50,000 | $55.00 | $60.50 | $66.00 | $1.10 |
| 125,000 | $115.00 | $126.50 | $138.00 | $0.92 |
| 300,000 | $245.00 | $269.50 | $294.00 | $0.82 |
| 700,000 | $455.00 | $500.50 | $546.00 | $0.65 |
| 1,500,000 | $775.00 | $852.50 | $930.00 | $0.52 |
Source [1]

### Overage rates
| Monthly volume tier | Basic, $ per 1,000 | Pro, $ per 1,000 | Platform, $ per 1,000 |
|---|---|---|---|
| 10,000 to 125,000 | 1.80 | 1.30 | 1.20 |
| 300,000 to 700,000 | 1.70 | 1.25 | 1.15 |
| 1,500,000 | 1.70 | 1.20 | 1.15 |
Source [1]

### Plans
| Plan | Included for | Sending domains | Default retention |
|---|---|---|---|
| Free | 100 emails a month | Not stated | Not stated |
| Basic | Solo developers and smaller teams | 5 | 45 days |
| Pro | Start-ups and small businesses | 10 | 45 days, up to 365 days |
| Platform | Agencies and larger teams | Unlimited | 45 days, up to 365 days |
Source [1]

### Other charges
- Dedicated IP: $50 a month per IP, Pro plans or higher, senders of 300,000+ emails a month [1]
- Custom activity retention: $5 a month, Pro plans or higher [1]
- DMARC monitoring: $14 a month per domain [1]
- Volume above 3 million emails a month: Custom pricing through sales [1]
- Payment methods: Visa, MasterCard, American Express, Diners, JCB; no PayPal or purchase orders [1]

## Tools

### MCP server
- Official MCP server: Yes, local [4]
- Address or package: `npx -y @activecampaign/postmark-mcp` (runs over stdio; source `https://github.com/ActiveCampaign/postmark-mcp`) [11]
- Number of tools: 24 [11]

### MCP tools
Read-only column from the server source: tools using the READ_ONLY preset have readOnlyHint true; the others have it false.
| Tool | What it does | Read-only |
|---|---|---|
| sendEmail | Send one transactional email to up to 50 recipients | No |
| sendEmailWithTemplate | Send one email from a saved template and a template model | No |
| sendBatch | Send up to 500 independent emails in one call | No |
| sendBatchWithTemplate | Send one template to up to 500 recipients with per-recipient models | No |
| listTemplates | List saved templates on the server | Yes |
| getTemplate | Get one template's content by ID or alias | Yes |
| createTemplate | Create a template | No |
| editTemplate | Edit a template in place (marked destructive) | No |
| deleteTemplate | Permanently delete a template (marked destructive) | No |
| validateTemplate | Check template syntax and render against test data without saving | Yes |
| searchOutboundMessages | Search sent-message history by recipient, sender, subject, tag, status or date | Yes |
| getMessageDetails | Get the event timeline for one sent message | Yes |
| diagnoseDelivery | Check message, suppression and bounce records to explain a missing email | Yes |
| searchBounces | Search the bounce log | Yes |
| getBounceDump | Get the raw SMTP transcript of a bounce | Yes |
| activateBounce | Reactivate a deactivated address | No |
| listSuppressions | List suppressed addresses on a message stream | Yes |
| createSuppressions | Add up to 50 addresses to a stream's suppression list | No |
| deleteSuppressions | Remove up to 50 addresses from a suppression list (marked destructive) | No |
| getDeliveryStats | Get open, click, bounce and spam rates | Yes |
| getServerInfo | Get the server's configuration | Yes |
| listWebhooks | List webhooks on the server | Yes |
| createWebhook | Register a webhook for events | No |
| deleteWebhook | Permanently delete a webhook (marked destructive) | No |
Source [11]

### API
| Endpoint | What it does |
|---|---|
| `POST /email` | Send a single email |
| `POST /email/batch` | Send up to 500 emails in one call |
| `POST /email/withTemplate` | Send with a stored template |
| `POST /email/bulk` | Send bulk email on broadcast streams |
| `GET /messages/outbound` | Search sent messages |
| `GET /bounces` | List bounces |
| `GET /templates` | List templates |
| `GET /webhooks` | List webhooks |
Source [3]

### Features
- Sending domains: Basic 5, Pro 10, Platform unlimited [1]
- Receiving email: Yes; inbound mail to an address is parsed and delivered to your webhook as JSON [9]
- Webhooks: Yes: delivery, bounce, spam complaint, open, click and subscription change events; no HMAC signature [8]
- Webhooks (signing): Not signed; protect with HTTP Basic Authentication and IP allowlisting [8]
- Batch sending: Yes, 500 messages per call on `/email/batch` [3]
- Scheduled sending: Not published
- Attachment size limit: 10 MB total per message, counted after Base64 encoding [3]
- Dedicated IP: Yes, on request for senders of 300,000+ messages a month [17]

## Authentication

### Methods
| Method | Used for | How |
|---|---|---|
| Server API token | Sending, templates, message search, bounces, suppressions, stats, webhooks on one server | Header `X-Postmark-Server-Token` |
| Account API token | Creating and configuring servers, domains and sender signatures | Header `X-Postmark-Account-Token` |
| Test token | Validating sending requests without delivering mail | Send `POSTMARK_API_TEST` as the server token |
| Environment variable | Official MCP server | `POSTMARK_SERVER_TOKEN` |
Source [4]

### Getting access
- Who creates the account: A person; there is no endpoint that issues tokens, and token creation is a manual step in the web interface [4]
- Where to get a key: `https://account.postmarkapp.com/servers`, then the API Tokens tab of a server [4]
- Other requirements: A verified sender signature or sending domain before real mail sends [4]
- OAuth: None [4]

## Setup

### Addresses
- REST API: `https://api.postmarkapp.com` [4]
- MCP server: No remote address; local stdio server via `npx -y @activecampaign/postmark-mcp` [11]
- OpenAPI spec: `https://postmarkapp.com/swagger/server.yml` (account API: `https://postmarkapp.com/swagger/account.yml`) [15]
- Docs for agents: `https://postmarkapp.com/llms.txt`; agent auth notes at `https://postmarkapp.com/auth.md` [3]
- Status page: `https://status.postmarkapp.com/` [15]

### Install
Rows come from the official libraries page (SDKs), the MCP server README and the postmark-cli README; the quote is the Python row.
| What | Command |
|---|---|
| Official MCP server (Claude Desktop, Cursor and other clients, via JSON config) | `npx -y @activecampaign/postmark-mcp` with `POSTMARK_SERVER_TOKEN`, `DEFAULT_SENDER_EMAIL`, `DEFAULT_MESSAGE_STREAM` set |
| Node.js SDK | `npm install postmark` |
| Python SDK | `pip install postmark-python` |
| PHP SDK | `composer require wildbit/postmark-php` |
| CLI | `npm i postmark-cli -g` |
Source [10]

### Install sources
- Node.js SDK: `npm install postmark` [13]
- CLI: `npm i postmark-cli -g` [14]
- MCP required variables: `POSTMARK_SERVER_TOKEN`, `DEFAULT_SENDER_EMAIL`, `DEFAULT_MESSAGE_STREAM` [11]

## Limits

### Rate limits
- Numeric request limit: Not published
- Over-limit response: HTTP 429 when requests exceed acceptable use of the API [5]
- Daily sending limit: Unlimited emails a day on paid plans [1]

### Other limits
- Message size: 10 MB including attachments [3]
- Body size: 5 MB each for text and HTML bodies [3]
- Recipients per message: 50 across To, Cc and Bcc [6]
- Batch size: 500 messages and 50 MB per `/email/batch` call [6]
- Bulk API payload: 50 MB including attachments [7]
- Spam complaint rate: Must stay under 0.1% of emails [20]
- Bounce rate: Must stay under 10% of emails [20]
- Webhook retries: Up to 6 retries, 1 to 15 minutes apart, for 5xx, 408, 429 and network failures [8]

## Privacy

### Your data
- Data location: United States: a data center outside Chicago and AWS; no EU servers planned [18]
- Retention: Email content and metadata kept 45 days; bounces, spam complaints and unsubscribes kept indefinitely [18]
- Used for training: Not published
- Zero data retention: Not published

### Compliance
- Certifications: Postmark has not had a SOC audit itself; its data center is SOC 2 Type 2 accredited; a data processing agreement is offered for GDPR [18]
- HIPAA: Not published

## Sources

1. Pricing (text version): https://postmarkapp.com/pricing.txt
2. Pricing page: https://postmarkapp.com/pricing
3. llms.txt: https://postmarkapp.com/llms.txt
4. auth.md for agents: https://postmarkapp.com/auth.md
5. API overview: https://postmarkapp.com/developer/api/overview
6. Email API reference: https://postmarkapp.com/developer/api/email-api
7. Bulk email API reference: https://postmarkapp.com/developer/api/bulk-email
8. Webhooks overview: https://postmarkapp.com/developer/webhooks/webhooks-overview
9. Inbound email guide: https://postmarkapp.com/developer/user-guide/inbound
10. Official libraries: https://postmarkapp.com/developer/integration/official-libraries
11. postmark-mcp README: https://raw.githubusercontent.com/ActiveCampaign/postmark-mcp/main/README.md
12. postmark-mcp index.js: https://raw.githubusercontent.com/ActiveCampaign/postmark-mcp/main/index.js
13. postmark.js README: https://raw.githubusercontent.com/ActiveCampaign/postmark.js/main/README.md
14. postmark-cli README: https://raw.githubusercontent.com/ActiveCampaign/postmark-cli/main/README.md
15. API catalog: https://postmarkapp.com/.well-known/api-catalog
16. Server API OpenAPI file: https://postmarkapp.com/swagger/server.yml
17. Dedicated IPs: https://postmarkapp.com/dedicated-ips
18. EU data protection: https://postmarkapp.com/eu-privacy
19. Security: https://postmarkapp.com/security
20. Terms of service: https://postmarkapp.com/terms-of-service
21. ActiveCampaign privacy policy: https://www.activecampaign.com/legal/privacy-policy
22. Checked by supermarket.dev
