TXpostmarkmustachiodeliverabilitytransactional

How to use Draftship with Postmark

Postmark templates use Mustachio (their Mustache fork) and ship via the v1 email API. Save a Draftship export as a Postmark template, parameterize it, and let Postmark's deliverability-first reputation do the heavy lifting.

HTML import path
code editor
Merge syntax
{{first_name}} (Mustachio)
Image hosting
external
Best for
Engineering teams that prioritize deliverability over volume pricing.
Watch out for
Postmark separates Transactional and Broadcast streams. Don't send marketing on a Transactional stream.

Postmark made deliverability its product wedge. Their separate IP pools, strict policy on bulk-vs-transactional, and obsession with inbox placement mean their senders consistently outperform peers on the deliverability metrics that matter. The template system uses Mustachio, a slightly extended Mustache that handles loops and conditionals.

Where Postmark accepts pasted HTML

From the dashboard: pick a server, go to Templates → Create Template → Use Code Editor. Postmark splits each template into Subject, HtmlBody, and TextBody. Paste your Draftship export into HtmlBody. Postmark can auto-generate the text version, or you can paste a hand-crafted plain text.

STEP 1Design inDraftshipBlock editorSTEP 2ExportOutlook-safe HTMLCmd+ESTEP 3Postmark TemplateTemplates > NewSTEP 4Wire Mustachiovariables{{first_name}}STEP 5Send via API onstreamTemplateAlias +TemplateModelPostmark handoff
Draftship to Postmark template handoff

Postmark templates support layouts: a parent shell containing {{{ @content }}} that wraps individual templates. Useful for keeping a consistent header/footer across many templates. If you prefer to keep your full HTML in one Draftship export per template, skip layouts.

Mustachio personalization

DraftshipPostmark
{{ first_name }}{{first_name}}
{{ last_name }}{{last_name}}
{{ email }}{{email}}
Default fallback{{#first_name}}{{first_name}}{{/first_name}}{{^first_name}}there{{/first_name}}
Loops{{#items}}<p>{{name}}</p>{{/items}}
Negation block{{^items}}<p>No items.</p>{{/items}}
HTML-unescaped{{{html_field}}} (triple braces)

Note the triple-brace pattern: {{{value}}} doesn't HTML-escape the substituted value. Use this only when you trust the source, since it lets HTML through into the rendered output.

Sending via the API

The send is one POST per recipient (or batch up to 500):

json
{ "From": "noreply@yourdomain.com", "To": "user@example.com", "TemplateAlias": "welcome-email", "TemplateModel": { "first_name": "Alex", "company": "Acme" }, "MessageStream": "outbound" }

The MessageStream matters: Postmark separates streams for transactional and broadcast/marketing. Send a marketing email on the transactional stream and Postmark will throttle or block your account.

Streams: Transactional vs Broadcasts

  • Transactional Stream: receipts, password resets, account notifications. Reputation is precious; volume is rate-limited per account.
  • Broadcast Streams: opt-in marketing. Separate IP pool, separate reputation, separate quota.

When you build a Draftship export, decide which stream it belongs to before configuring the template. Postmark assumes transactional by default.

Test send checklist

  • Use the Postmark template editor's Test feature with a real model JSON.
  • Send a real test through the API to your inbox.
  • Run the output through the size checker.
  • Verify the Sender Signature for the from-address is fully verified.

When to switch from SendGrid or Mailgun

Postmark's pricing skews higher than SendGrid for high volume but their inbox placement is consistently better. If your business depends on transactional email arriving in the primary inbox (password reset, magic link, receipt), the cost per inbox-landed email at Postmark often beats cheaper alternatives.

For deliverability fundamentals, see Gmail and Yahoo bulk sender requirements.

FAQ

Frequently asked questions

Why does Postmark separate streams?
Reputation. Marketing email and transactional email have different complaint and engagement profiles. Mixing them on the same IP pool drags transactional inbox placement down. The separation forces you to maintain two reputations.
Can I send marketing email on Postmark?
Yes, on a Broadcast Stream. The opt-in confirmation flow is required. Don't try to bulk-send on a transactional stream; Postmark monitors and will suspend.
Does Postmark support attachments?
Yes. The API accepts base64-encoded attachments per send. For receipts and PDFs, this is the standard pattern. Total size limit is 10 MB per email.
How does Postmark handle bounces?
Hard bounces immediately suppress the recipient. Soft bounces are retried per Postmark's schedule. The Bounces tab in the dashboard shows per-recipient status; you can also subscribe to webhooks.
Does Postmark support DKIM and SPF?
Yes, both required for the Sender Signature to verify. DMARC is up to your domain owner. Postmark's docs walk through the DNS records.
Try it yourself

Design in Draftship. Paste into Postmark.