Skip to content

Email

Postmark
API integration

Ship Email features without building the integration. Full Postmark API access via Proxy and 80+ MCP-ready tools for AI agents — extend models and mappings to fit your product.

Talk to us
Postmark

Use Cases

Why integrate with Postmark

Common scenarios for SaaS companies building Postmark integrations for their customers.

01

Let users send transactional email from their own Postmark account

Instead of routing every customer's email through your shared infrastructure, give end users a Bring-Your-Own-Provider option. Their sender reputation, their domain, their deliverability — fully owned by them but triggered by your app.

02

Automate domain authentication during onboarding

Eliminate the dreaded 'go log into Postmark and paste these DNS records' step. Provision domains, request DKIM/SPF verification, and confirm sender signatures programmatically so users finish setup inside your UI.

03

Surface deliverability signals inside your product

Pull bounces, opens, clicks, and suppression data back into your app so users see delivery health where they already work — useful for invoicing tools, ATS platforms, and CRMs that need to flag undeliverable contacts.

04

Multi-tenant email infrastructure for your customers

For platforms hosting many merchants or workspaces, programmatically create dedicated Postmark Servers and Message Streams per tenant. Keep marketing blasts isolated from transactional receipts without manual setup.

05

Embedded template management for marketing teams

Let users design templates in your builder and push them directly into Postmark with validation before deployment. Marketers stay in your product, developers don't write glue code.

What You Can Build

Ship these features with Truto + Postmark

Concrete product features your team can ship faster by leveraging Truto’s Postmark integration instead of building from scratch.

01

BYO-Postmark sending engine

Route transactional and templated emails through each user's connected Postmark account using their templates and TemplateModel data.

02

One-click domain verification flow

Create a domain, trigger DKIM, SPF, and Return-Path verification, and display verification status — all from your onboarding wizard.

03

Deliverability dashboard

Aggregate sent counts, bounce counts, spam complaints, open and click stats, and email client breakdowns into a native analytics view inside your app.

04

Bounce and suppression management UI

Let users view bounces, fetch raw SMTP dumps for debugging, reactivate fixed addresses, and manage the suppression list without leaving your product.

05

Inbound email-to-ticket pipeline

Ingest parsed inbound messages as structured JSON to power helpdesk tickets, reply threading, and spam-bypass overrides for misclassified customer mail.

06

Per-tenant server and stream provisioning

Spin up a dedicated Postmark Server and separate transactional vs. broadcast Message Streams whenever a new customer signs up on your platform.

SuperAI

Postmark AI agent tools

Comprehensive AI agent toolset with fine-grained control. Integrates with MCP clients like Cursor and Claude, or frameworks like LangChain.

create_a_postmark_email

Send a single transactional email via Postmark. Returns the message ID, submission timestamp, and delivery status. Required: From, To, Subject, and at least one of HtmlBody or TextBody.

postmark_emails_bulk_create

Send a batch of emails in a single request via Postmark. Returns an array of per-message results, each including the message ID and status. Required: Messages array where each entry requires From, To, Subject, and at least one of HtmlBody or TextBody.

create_a_postmark_bulk_email

Send a batch of bulk emails through Postmark. Returns details about the submitted bulk send operation. Required: a valid request body containing the messages to be delivered.

get_single_postmark_bulk_email_by_id

Get the status and details of a Postmark bulk email batch by id. Returns information about the bulk send operation identified by the supplied id. Required: id.

create_a_postmark_templated_email

Send a single Postmark email rendered from a template. Returns the submitted message id and status. Required: `From`, `To`, and either `TemplateId` or `TemplateAlias`, plus `TemplateModel`.

postmark_templated_emails_bulk_create

Send a batch of Postmark templated emails in a single request. Returns an array of per-message results including message id and status. Required: `Messages` (array of template message objects, each requiring `From`, `To`, `TemplateModel`, and either `TemplateId` or `TemplateAlias`).

get_single_postmark_delivery_stat_by_id

Get delivery stats from Postmark, summarizing bounce and delivery activity for the sending account. Returns an overview of delivery outcomes including bounce counts and email counts by category.

list_all_postmark_bounces

List bounces recorded in Postmark. Returns a collection of bounce records from the Bounces response field.

get_single_postmark_bounce_by_id

Get a single Postmark bounce by id. Returns the full bounce record for the specified bounce. Required: id.

get_single_postmark_bounce_dump_by_id

Get the raw email dump for a specific Postmark bounce by id. Returns the raw SMTP message body associated with the bounce record. Required: id.

create_a_postmark_bounce_activation

Activate a previously bounced email address in Postmark, reactivating future delivery attempts for that address. Required: bounce_id.

list_all_postmark_templates

List all Postmark templates available in the account. Returns a collection of template objects via the Templates array.

get_single_postmark_template_by_id

Get a single Postmark template by id. Returns the full template object. Required: id.

create_a_postmark_template

Create a new Postmark template. Returns the created template object.

update_a_postmark_template_by_id

Update an existing Postmark template by id. Returns the updated template object. Required: id.

delete_a_postmark_template_by_id

Delete a Postmark template by id. Returns an empty response on success. Required: id.

create_a_postmark_template_validation

Validate a Postmark template by submitting its content to the validation endpoint. Returns validation results indicating whether the template is well-formed and renderable.

create_a_postmark_template_push

Push templates from one Postmark server to another. Returns a summary of template changes (additions, updates, deletions) detected between the source and destination servers. Required: SourceServerID, DestinationServerID.

get_single_postmark_current_server_by_id

Get details of the current Postmark server associated with the active API token. Returns the server object including its name, ID, and configuration settings. No parameters required.

update_a_postmark_current_server_by_id

Update settings for the current Postmark server associated with the active API token. Returns the updated server object reflecting the new configuration.

list_all_postmark_servers

List all Postmark servers associated with the account. Returns an array of server objects.

get_single_postmark_server_by_id

Get a single Postmark server by id. Returns the full server object.

create_a_postmark_server

Create a new Postmark server. Returns the created server object including its id and configuration.

update_a_postmark_server_by_id

Update an existing Postmark server by id. Returns the updated server object. Required: id.

delete_a_postmark_server_by_id

Delete a Postmark server by id. Returns an empty response on success. Required: id.

list_all_postmark_message_streams

List all Postmark message streams for the current server. Returns an array of message stream objects including their id, name, message type, and description. Optionally filter by message type or include archived streams.

get_single_postmark_message_stream_by_id

Get a single Postmark message stream by id. Returns the full stream object including its id, name, message type, description, and archived status. Requires id.

create_a_postmark_message_stream

Create a new Postmark message stream on the current server. Returns the created stream object including its id, name, and message type. Requires ID, Name, and MessageType.

postmark_message_streams_partial_update

Update the name or description of an existing Postmark message stream. Returns the updated stream object. Requires id.

create_a_postmark_message_stream_archive

Archive a Postmark message stream, disabling further use of the stream. Required: stream_id.

create_a_postmark_message_stream_unarchive

Unarchive a previously archived Postmark message stream, restoring it to active use. Required: stream_id.

list_all_postmark_outbound_messages

List outbound messages in Postmark. Returns a collection of sent message records.

get_single_postmark_outbound_message_by_id

Get full details of a specific Postmark outbound message by id. Returns the complete message detail record. Required: id.

get_single_postmark_outbound_message_dump_by_id

Get the raw message dump for a specific Postmark outbound message by id. Returns the raw email source, including headers and body content. Required: id.

list_all_postmark_inbound_messages

List inbound messages in Postmark. Returns a collection of inbound message summaries from the InboundMessages array.

get_single_postmark_inbound_message_by_id

Get full details of a specific Postmark inbound message by id. Returns the complete message detail object. Required: id.

create_a_postmark_inbound_message_bypass

Bypass the inbound spam filter for a specific Postmark inbound message. Required: message_id.

create_a_postmark_inbound_message_retry

Retry a failed Postmark inbound message, re-queuing it for processing. Required: message_id.

list_all_postmark_message_opens

List open events for outbound messages in Postmark. Returns a collection of open records from the Opens response array.

list_all_postmark_message_opens_for_message

List open events for a specific outbound message in Postmark. Returns open tracking records from the Opens collection. Required: message_id.

list_all_postmark_message_clicks

List click tracking records for Postmark outbound messages. Returns an array of click events from the Clicks collection.

list_all_postmark_message_clicks_for_message

List click tracking events for a specific outbound Postmark message. Returns an array of click records from the Clicks field. Required: message_id.

list_all_postmark_domains

List all domains configured in Postmark. Returns a collection of domain objects from the Domains array.

get_single_postmark_domain_by_id

Get a single Postmark domain by id. Returns the full domain object including its configuration details. Required: id.

create_a_postmark_domain

Create a new domain in Postmark. Returns the created domain object.

update_a_postmark_domain_by_id

Update an existing Postmark domain by id. Returns the updated domain object. Required: id.

delete_a_postmark_domain_by_id

Delete a Postmark domain by id. Returns an empty response on success. Required: id.

create_a_postmark_domain_dkim_verification

Trigger DKIM verification for a Postmark domain. Initiates the DKIM key verification process against the domain's DNS records. Required: domain_id.

create_a_postmark_domain_return_path_verification

Trigger return path verification for a Postmark domain. Initiates the DNS return-path record verification process for the specified domain. Required: domain_id.

create_a_postmark_domain_spf_verification

Trigger SPF verification for a Postmark domain. Initiates a check of the domain's SPF DNS record. Required: domain_id.

create_a_postmark_domain_dkim_rotation

Rotate the DKIM keys for a Postmark domain, initiating a new DKIM key pair for the specified domain. Required: domain_id.

list_all_postmark_sender_signatures

List all Postmark sender signatures for the account. Returns a collection of sender signature objects from the SenderSignatures array.

get_single_postmark_sender_signature_by_id

Get a single Postmark sender signature by id. Returns the full sender signature object for the specified id.

create_a_postmark_sender_signature

Create a new Postmark sender signature. Returns the created sender signature object.

update_a_postmark_sender_signature_by_id

Update an existing Postmark sender signature by id. Returns the updated sender signature object. Required: id.

delete_a_postmark_sender_signature_by_id

Delete a Postmark sender signature by id. Returns an empty response on success. Required: id.

create_a_postmark_sender_signature_confirmation

Resend the confirmation email for a Postmark sender signature. Required: signature_id.

create_a_postmark_sender_signature_spf_verification

Trigger an SPF verification for a Postmark sender signature. Required: signature_id.

create_a_postmark_sender_signature_dkim_request

Request a new DKIM key for a Postmark sender signature. Triggers generation of a fresh DKIM record that can be applied to the sender's DNS configuration. Required: signature_id.

list_all_postmark_webhooks

List all Postmark webhooks configured for the account. Returns an array of webhook objects including id, url, and trigger settings. Optionally filter by message stream using MessageStream.

get_single_postmark_webhook_by_id

Get a single Postmark webhook by id. Returns the full webhook configuration including id, Url, MessageStream, HttpAuth, HttpHeaders, and Triggers. Required: id.

create_a_postmark_webhook

Create a new Postmark webhook. Returns the created webhook object including its id, Url, and Triggers. Required: Url, MessageStream.

update_a_postmark_webhook_by_id

Update an existing Postmark webhook by id. Returns the updated webhook object including id, Url, and Triggers. Required: id.

delete_a_postmark_webhook_by_id

Delete a Postmark webhook by id. Returns an empty response on success. Required: id.

list_all_postmark_inbound_rule_triggers

List all inbound rule triggers configured in Postmark. Returns the collection of inbound rules from the InboundRules response field.

create_a_postmark_inbound_rule_trigger

Create a new inbound rule trigger in Postmark. Required: Rule.

delete_a_postmark_inbound_rule_trigger_by_id

Delete a Postmark inbound rule trigger by id. Returns an empty response on success. Required: id.

list_all_postmark_suppressions

List all suppressions for a Postmark message stream. Returns a collection of suppressed email addresses and their associated suppression details. Required: stream_id.

create_a_postmark_suppression

Create one or more suppressions for a Postmark message stream, preventing future delivery to the specified email addresses. Required: stream_id.

postmark_suppressions_bulk_delete

Delete one or more suppressions from a Postmark message stream, re-enabling delivery to the specified email addresses. Required: stream_id.

create_a_postmark_data_removal

Create a data removal request in Postmark to remove personal data associated with a recipient. Returns the created request object including its id and status.

get_single_postmark_data_removal_by_id

Get a Postmark data removal request by id. Returns the request object including its current status. Required: id.

get_single_postmark_outbound_overview_stat_by_id

Get an overview of outbound email statistics from Postmark. Returns aggregated sending metrics for outbound messages. No required parameters.

get_single_postmark_sent_count_stat_by_id

Get outbound send count statistics from Postmark. Returns aggregated sent message counts for outbound email activity.

get_single_postmark_bounce_count_stat_by_id

Get outbound bounce count statistics from Postmark. Returns aggregated bounce counts for sent messages.

get_single_postmark_spam_complaint_stat_by_id

Get outbound spam complaint statistics from Postmark. Returns aggregated spam complaint data for outbound messages sent through the account.

get_single_postmark_tracked_email_stat_by_id

Get tracked outbound email statistics in Postmark. Returns aggregate tracking metrics for outbound messages sent through the account.

get_single_postmark_open_count_stat_by_id

Get outbound email open count statistics from Postmark. Returns aggregated open tracking metrics for sent messages.

get_single_postmark_email_platform_stat_by_id

Get Postmark outbound email open statistics broken down by platform type (e.g., desktop, mobile, webmail). Returns platform-level open counts for the specified date range or tag filter.

get_single_postmark_email_client_stat_by_id

Get a breakdown of email clients used to open outbound messages in Postmark. Returns statistics grouped by email client name and usage counts.

get_single_postmark_click_count_stat_by_id

Get outbound click count statistics from Postmark. Returns aggregated click counts for tracked links in sent messages.

get_single_postmark_browser_family_stat_by_id

Get outbound click statistics grouped by browser family in Postmark. Returns a breakdown of click counts per browser family for tracked outbound messages.

get_single_postmark_browser_platform_stat_by_id

Get Postmark outbound click statistics broken down by browser platform. Returns a summary of click counts grouped by platform type (e.g., desktop, mobile, unknown).

get_single_postmark_click_location_stat_by_id

Get outbound click location statistics from Postmark, showing where tracked link clicks originated geographically. Returns aggregated click counts broken down by location.

Why Truto

Why use Truto’s MCP server for Postmark

Other MCP servers give you a static tool list for one app. Truto gives you a managed, multi-tenant MCP infrastructure across 500+ integrations.

01

Auto-generated, always up to date

Tools are dynamically generated from curated documentation — not hand-coded. As integrations evolve, tools stay current without manual maintenance.

02

Fine-grained access control

Scope each MCP server to read-only, write-only, specific methods, or tagged tool groups. Expose only what your AI agent needs — nothing more.

03

Multi-tenant by design

Each MCP server is scoped to a single connected account with its own credentials. The URL itself is the auth token — no shared secrets, no credential leaking across tenants.

04

Works with every MCP client

Standard JSON-RPC 2.0 protocol. Paste the URL into Claude, ChatGPT, Cursor, or any MCP-compatible agent framework — tools are discovered automatically.

05

Built-in auth, rate limits, and error handling

Tool calls execute through Truto’s proxy layer with automatic OAuth refresh, rate-limit handling, and normalized error responses. No raw API plumbing in your agent.

06

Expiring and auditable servers

Create time-limited MCP servers for contractors or automated workflows. Optional dual-auth requires both the URL and a Truto API token for high-security environments.

How It Works

From zero to integrated

Go live with Postmark in under an hour. No boilerplate, no maintenance burden.

01

Link your customer’s Postmark account

Use Truto’s frontend SDK to connect your customer’s Postmark account. We handle all OAuth and API key flows — you don’t need to create the OAuth app.

02

We handle authentication

Don’t spend time refreshing access tokens or figuring out secure storage. We handle it and inject credentials into every API request.

03

Call our API, we call Postmark

Truto’s Proxy API is a 1-to-1 mapping of the Postmark API. You call us, we call Postmark, and pass the response back in the same cycle.

04

Unified response format

Every response follows a single format across all integrations. We translate Postmark’s pagination into unified cursor-based pagination. Data is always in the result attribute.

FAQs

Common questions about Postmark on Truto

Authentication, rate limits, data freshness, and everything else you need to know before you integrate.

How do end users authenticate their Postmark account?

Postmark uses API tokens — specifically Server API tokens for message-level operations and an Account API token for managing servers, domains, and sender signatures. Truto handles token storage, validation, and injection into every API call, so you don't build a credentials vault.

Can I send both transactional and bulk emails through the integration?

Yes. The integration supports single sends (create_a_postmark_email), bulk sends (postmark_emails_bulk_create, create_a_postmark_bulk_email), and templated variants for both. Postmark's Message Streams architecture is respected, so you can route through transactional or broadcast streams explicitly.

How fresh is the delivery and engagement data?

Postmark exposes opens, clicks, bounces, and outbound message data through polling endpoints, which you can call on whatever cadence fits your product. For near-real-time updates, Postmark also supports webhooks (create_a_postmark_webhook) for bounces, opens, clicks, deliveries, and inbound mail.

Can I automate DNS/domain setup for my users?

Yes. You can create domains, trigger DKIM verification, SPF verification, Return-Path verification, and DKIM rotation through the API. Sender signatures can also be created and confirmed programmatically, so users never need to touch the Postmark dashboard for setup.

Does the integration support multi-tenant or multi-environment setups?

Yes. You can list, create, update, and delete Postmark Servers and Message Streams, which lets you isolate environments per tenant (e.g., one Server per customer) or split transactional and broadcast traffic per Server.

What can I do when an email bounces or gets suppressed?

You can list all bounces, fetch a specific bounce by ID, retrieve the raw SMTP dump for debugging, and reactivate a bounced address via create_a_postmark_bounce_activation. Suppressions can be created, listed, and bulk-deleted to manage the suppression list directly from your UI.

Postmark

Get Postmark integrated into your app

Our team understands what it takes to make a Postmark integration successful. A short, crisp 30 minute call with folks who understand the problem.

Talk to us