CONNECT APP
Build with Postmark
Marketing
- API key
MCP
Give your agent Postmark tools
Every Postmark action is exposed as an MCP tool on Pipedream's remote server. Point a client at it with your end user's ID and Connect resolves that user's Postmark account for each tool call — you store no tokens.
// accessToken: mint a short-lived token with the Connect SDK — see the MCP guide
const transport = new StreamableHTTPClientTransport(
new URL("https://remote.mcp.pipedream.net/v3"),
{
requestInit: {
headers: {
Authorization: `Bearer ${accessToken}`,
"x-pd-project-id": "{project_id}",
"x-pd-environment": "production",
"x-pd-external-user-id": "{external_user_id}", // any stable ID for this user in your system
"x-pd-app-slug": "postmark",
},
},
},
)
const mcp = new Client({ name: "my-agent", version: "1.0.0" })
await mcp.connect(transport)
const { tools } = await mcp.listTools()
// e.g. run Create Domain:
const result = await mcp.callTool({
name: "postmark-create-domain",
arguments: {
name: "Name",
returnPathDomain: "Return Path Domain",
},
})# access_token: mint a short-lived token with the Connect SDK — see the MCP guide
headers = {
"Authorization": f"Bearer {access_token}",
"x-pd-project-id": "{project_id}",
"x-pd-environment": "production",
"x-pd-external-user-id": "{external_user_id}", # any stable ID for this user in your system
"x-pd-app-slug": "postmark",
}
async with streamablehttp_client("https://remote.mcp.pipedream.net/v3", headers=headers) as (read, write, _):
async with ClientSession(read, write) as session:
await session.initialize()
tools = await session.list_tools()
# e.g. run Create Domain:
result = await session.call_tool("postmark-create-domain", {
"name": "Name",
"returnPathDomain": "Return Path Domain",
})API PROXY
Call the Postmark API directly
For an endpoint with no pre-built tool, the Connect proxy forwards your request to the Postmark API with the connected user's credentials attached. You store no tokens and write no refresh logic.
const resp = await pd.proxy.get({
externalUserId: "{external_user_id}", // any stable ID for this user in your system
accountId: "apn_xxxxxxx",
url: "https://api.postmarkapp.com/server",
})
// Any allowed Postmark endpoint works here. Pipedream attaches the
// connected account's credentials to the outgoing request.# The path segment is the target URL, URL-safe base64 encoded:
# https://api.postmarkapp.com/server
curl "https://api.pipedream.com/v1/connect/{project_id}/proxy/aHR0cHM6Ly9hcGkucG9zdG1hcmthcHAuY29tL3NlcnZlcg?external_user_id={external_user_id}&account_id=apn_xxxxxxx" \
-H "Authorization: Bearer {access_token}" \
-H "x-pd-environment: production"SDK
Run Postmark actions from your backend
Connect a user's Postmark account once, then run Create Domain on their behalf from your own code — TypeScript, Python, or plain HTTP.
import { PipedreamClient } from "@pipedream/sdk"
const pd = new PipedreamClient({
projectId: process.env.PIPEDREAM_PROJECT_ID!,
clientId: process.env.PIPEDREAM_CLIENT_ID!,
clientSecret: process.env.PIPEDREAM_CLIENT_SECRET!,
projectEnvironment: "production",
})
const result = await pd.actions.run({
id: "postmark-create-domain",
externalUserId: "{external_user_id}", // any stable ID for this user in your system
configuredProps: {
postmark: { authProvisionId: "apn_xxxxxxx" },
name: "Name",
returnPathDomain: "Return Path Domain",
},
})from pipedream import Pipedream
pd = Pipedream(
client_id="{oauth_client_id}",
client_secret="{oauth_client_secret}",
project_id="{project_id}",
project_environment="production",
)
result = pd.actions.run(
id="postmark-create-domain",
external_user_id="{external_user_id}", # any stable ID for this user in your system
configured_props={
"postmark": {"authProvisionId": "apn_xxxxxxx"},
"name": "Name",
"returnPathDomain": "Return Path Domain",
},
)curl -X POST https://api.pipedream.com/v1/connect/{project_id}/actions/run \
-H "Content-Type: application/json" \
-H "X-PD-Environment: production" \
-H "Authorization: Bearer {access_token}" \
-d '{
"external_user_id": "{external_user_id}",
"id": "postmark-create-domain",
"configured_props": {
"postmark": { "authProvisionId": "apn_xxxxxxx" },
"name": "Name",
"returnPathDomain": "Return Path Domain"
}
}'TOOLS
Postmark actions
On-demand operations your product or agent can configure and run on behalf of a connected user.
-
Create Domain
actionCreate a new domain. See the documentationWritev0.0.4 -
Create Sender Signature
actionCreate a new sender signature. See the documentationWritev0.0.4 -
Delete Domain
actionDelete a specific domain. See the documentationWritev0.0.3 -
Delete Sender Signature
actionDelete a specific sender signature. See the documentationWritev0.0.3 -
Get Bounce Counts
actionGets total counts of emails you've sent out that have been returned as bounced. See the documentationRead-onlyv0.0.3 -
Get Browser Usage
actionGets an overview of the browsers used to open links in your emails. This is only recorded when Link Tracking is enabled for that email. See the documentationRead-onlyv0.0.4 -
Get Click Counts
actionGets total counts of unique links that were clicked. See the documentationRead-onlyv0.0.3 -
Get Domain
actionGets all the details for a specific domain. See the documentationRead-onlyv0.0.3 -
Get Email Open Counts
actionGets total counts of recipients who opened your emails. This is only recorded when open tracking is enabled for that email. See the documentationRead-onlyv0.0.4 -
Get Email Platform Usage
actionGets an overview of the platforms used to open your emails. This is only recorded when open tracking is enabled for that email. See the documentationWritev0.0.4 -
Get Outbound Overview
actionGets a brief overview of statistics for all of your outbound email. See the documentationRead-onlyv0.0.3 -
Get Sent Counts
actionGets a total count of emails you've sent out. See the documentationRead-onlyv0.0.3 -
Get Spam Complaints
actionGets a total count of recipients who have marked your email as spam. See the documentationRead-onlyv0.0.3 -
Get Tracked Email Counts
actionGets a total count of emails you've sent with open tracking or link tracking enabled. See the documentationRead-onlyv0.0.3 -
List Domain Id Options
actionRetrieves available options for the Domain Id field.Read-onlyv0.0.1 -
List Domains
actionGets a list of domains containing an overview of the domain and authentication status. See the documentationRead-onlyv0.0.3 -
List Sender Signatures
actionGets a list of sender signatures containing brief details associated with your account. See the documentationRead-onlyv0.0.3 -
List Server Id Options
actionRetrieves available options for the Server Id field.Read-onlyv0.0.1 -
List Signature Id Options
actionRetrieves available options for the Signature Id field.Read-onlyv0.0.1 -
Resend Confirmation
actionResend a confirmation email for a specific sender signature. See the documentationWritev0.0.3 -
Rotate DKIM Keys
actionCreates a new DKIM key to replace your current key. Until the new DNS entries are confirmed, the pending values will be in DKIMPendingHost and DKIMPendingTextValue fields. After the new DKIM value is verified in DNS, the pending values will migrate to DKIMTextValue and DKIMPendingTextValue and Postmark will begin to sign emails with the new DKIM key. See the documentationWritev0.0.4 -
Send Batch With Templates
actionSend a batch of emails using a template See the documentationWritev0.0.4 -
Send Email With Template
actionSend a single email with Postmark using a template See the documentationWritev0.0.6 -
Send Single Email
actionSend a single email with Postmark See the documentationWritev0.2.5 -
Update Sender Signature
actionCreate a new sender signature. See the documentationWritev0.0.3 -
Verify DKIM
actionVerify DKIM keys for the specified domain. See the documentationRead-onlyv0.0.3 -
Verify Return-Path DNS
actionVerify Return-Path DNS record for the specified domain. See the documentationRead-onlyv0.0.3
EVENTS
Postmark triggers
Event sources your backend can deploy for users and receive through a webhook.
-
New Domain
triggerEmit new event when a new domain is created.v0.0.2 -
New Email Opened
triggerEmit new event when an email is opened by a recipient (See docs here)Instantv0.0.4 -
New Inbound Email Received
triggerEmit new event when an email is received by the Postmark server. This source updates the server's inbound URL. You cannot create multiple inbound sources for the same server. See the documentationInstantv1.0.0 -
New Sender Signature
triggerEmit new event when a new sender signature is created.v0.0.2
MULTI-APP
Use Postmark with other popular apps
Most products don't stop at one integration. Pair Postmark with the other apps your users rely on, and ship use cases that span both.
- App slug
- postmark
- Authentication
- API key
- Categories
- Marketing
- Actions
- 27
- Triggers
- 4
- API proxy
- Available