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 usUse Cases
Why integrate with Postmark
Common scenarios for SaaS companies building Postmark integrations for their customers.
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.
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.
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.
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.
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.
BYO-Postmark sending engine
Route transactional and templated emails through each user's connected Postmark account using their templates and TemplateModel data.
One-click domain verification flow
Create a domain, trigger DKIM, SPF, and Return-Path verification, and display verification status — all from your onboarding wizard.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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