Send Email

postmark.send_email
ActionEmailconnection required

Calls the Postmark API with the connection's credentials.

Send one transactional message through Postmark, with an HTML body, a text body or both.

Connection

Required
Yes — the node will not save without one
Auth type
API key
Providers
Postmark
Secret shape
the server API token, or {"server_token": "…"}
Config it needs
message_stream, from_address, base_url
Resolved by
config.connection_id, else node.connection_id

Configuration

15 fields, 1 required. A dotted path is a nested object and name[] an array of objects — the editor renders the same tree.

FieldTypeRequiredDefaultConstraintsExample
to
Recipient address, or up to 50 addresses separated by commas.
stringYes———
from_address
Sender address. It must be a confirmed sender signature or a verified domain in this Postmark account. Leave blank to use the connection's default sender.
stringNo———
subject
Subject line of the message; Postmark accepts a message without one.
stringNo———
cc
Carbon-copy addresses, separated by commas.
stringNo———
bcc
Blind-copy addresses, separated by commas.
stringNo———
reply_to
Address replies should go to, when it differs from the sender.
stringNo———
tag
A Postmark tag to file this message under, for later filtering and stats.
stringNo———
message_stream
The message stream to send on. Leave blank to use the stream on the connection, which defaults to Postmark's 'outbound' stream.
stringNo———
headers
Extra SMTP headers, as Postmark's list of {"Name", "Value"} objects.
arrayNo—array of object—
metadata
Custom key/value data to attach to the message. Postmark echoes it back on every webhook delivery about this message.
objectNo———
attachments
Postmark attachment objects: Name, Content (base64) and ContentType, plus ContentID for an inline image.
arrayNo—array of object—
track_opens
Ask Postmark to embed its open-tracking pixel in the HTML body. Leave unset to use the server's own setting.
booleanNo———
track_links
Which parts of the message get link tracking rewritten into them.
stringNo—one of "None", "HtmlAndText", "HtmlOnly", "TextOnly"—
html_body
HTML body of the message. Required unless a text body is given.
stringNo———
text_body
Plain-text body of the message. Required unless an HTML body is given, and worth sending alongside the HTML one for clients that refuse it.
stringNo———
  • At least one of html_body, text_body must be set.

Output

One shape.

result

FieldTypeExample
accepted
True when Postmark accepted the message for delivery (ErrorCode 0).
boolean—
error_code
Postmark's per-message error code; 0 means accepted. 406 is an inactive recipient.
number—
message
Postmark's own wording for the outcome, e.g. 'OK'.
string—
message_id
The Postmark MessageID, for looking the message up later.
string—
to
The recipient Postmark recorded for this message.
string—
submitted_at
When Postmark accepted the message, as an ISO 8601 stamp.
string—
{
  "accepted": false,
  "error_code": 0,
  "message": "",
  "message_id": "",
  "submitted_at": "",
  "to": ""
}

Notes

  • The sender must be a confirmed sender signature or a verified domain in this Postmark account; anything else is refused with ErrorCode 400.
  • Sending to an address Postmark has deactivated fails the step with ErrorCode 406 — use postmark.activate_bounce to reinstate it first.

See Send Email run in a workflow.

In a technical demo we add the Postmark connection, drop the node on the canvas and let Workflow Health pre-flight it before the first real run.