Skip to main content
skill CX Codex

postmark — Claude Code skill: email, templates, webhooks

A routing skill for Postmark: it tells the agent which sub-skill to use for sending mail, inbound processing, templates or webhooks.

Install into Claude Code · Skills CLI (Vercel) All methods and platforms ↓
npx skills add ActiveCampaign/postmark-skills --skill postmark -a claude-code
Open on GitHub

What postmark does

The skill sends nothing itself. It reads the task and points the agent at one of the sub-skills: postmark-send-email for single, batch and template-based mail, postmark-inbound for incoming email over webhooks, postmark-templates for server-side Handlebars templates, postmark-webhooks for delivery events, and postmark-email-best-practices for SPF, DKIM, DMARC and CAN-SPAM, GDPR and CASL compliance.

Inside there is a routing table keyed to phrases like sending an email or setting up bounce handling, a token reference, and an SDK install table matched to project files: package.json gets npm install postmark, requirements.txt gets pip install postmarker, Gemfile gets gem install postmark, composer.json gets composer require wildbit/postmark-php, *.csproj gets dotnet add package Postmark. You need a Server API Token from the Postmark dashboard, sent in the X-Postmark-Server-Token header.

The real trap is webhooks. Outbound events and inbound email run on separate infrastructure with different retry schedules: outbound retries up to 9 times over roughly 72 minutes and only on 5xx, 408, 429 and timeouts, while inbound retries up to 10 times over roughly 10.5 hours on any non-200 response. Carry one model over to the other and your handler will behave in ways you did not plan for. Also worth knowing: transactional and broadcast mail must not share a stream, because that hurts deliverability.

What it helps with

  • send a transactional email through the Postmark API
  • turn incoming email into support tickets
  • build a server-side Handlebars template and send with it
  • wire up webhooks for bounces, opens and spam complaints
  • find out why a webhook endpoint got paused

Example prompts for the agent

  • Send a signup confirmation email through Postmark
  • Set up inbound email processing in Postmark and open a ticket for each message
  • Create an email template in Postmark and send it to the list

How to install postmark

1Skills CLI (Vercel)

npx skills add ActiveCampaign/postmark-skills --skill postmark -a claude-code

2Manually: put the files in place

~/.claude/skills/postmark/SKILL.md

Copy the whole skill folder; for one project use .claude/skills/postmark/

Step by step, with commands for each platform: How to install skills in Claude Code: five ways

Questions about postmark

How do I install postmark in Claude?

Run npx skills add ActiveCampaign/postmark-skills --skill postmark -a claude-code. The skill lands at ~/.claude/skills/postmark/SKILL.md.

What does the postmark skill do?

It works out what the agent is being asked to do and hands the job to the right sub-skill: sending, inbound, templates, webhooks or deliverability best practices.

How do outbound and inbound Postmark webhooks differ?

They are separate systems with separate retry schedules. Outbound retries up to 9 times over about 72 minutes and only on 5xx, 408, 429 and timeouts; inbound retries up to 10 times over about 10.5 hours on any non-200 response.

Source text

SKILL.md · MIT
---
name: postmark
description: Use when working with Postmark email platform - routes to specific sub-skills for sending emails, processing inbound email, managing templates, or configuring webhooks.
license: MIT
metadata:
  author: postmark
  version: "1.0.0"
---

# Postmark Skills

Postmark is a transactional email platform built for developers, with 15+ years of deliverability expertise. These skills teach AI agents how to use the Postmark API effectively.

## Sub-Skills

| Feature | Skill | Use When |
|---------|-------|----------|
| **Sending emails** | `postmark-send-email` | Sending transactional or broadcast emails — single, batch, bulk, or with templates |
| **Inbound processing** | `postmark-inbound` | Processing incoming emails via webhooks, building reply-by-email, email-to-ticket, or document extraction |
| **Template management** | `postmark-templates` | Creating, editing, or sending with Postmark's server-side Handlebars templates and layouts |
| **Webhooks** | `postmark-webhooks` | Setting up outbound webhooks for delivery, bounce, open, click, spam complaint, and subscription change events — including endpoint verification, per-webhook statistics, and retry behavior |
| **Best practices** | `postmark-email-best-practices` | Deliverability setup, compliance (CAN-SPAM/GDPR/CASL), email design, list management, testing, and sending reliability |

### Outbound and inbound webhooks are different systems

`postmark-webhooks` covers **outbound** event webhooks; `postmark-inbound` covers **inbound** email webhooks. They run on separate infrastructure and have **different retry schedules** — do not apply one to the other:

| | Outbound webhooks (`postmark-webhooks`) | Inbound webhooks (`postmark-inbound`) |
|---|---|---|
| Retries | Up to **9** retries over ~**72 minutes** (3 standard + 6 backoff) | Up to **10** retries over ~**10.5 hours** |
| Retried on | 5xx, 408, 429, network timeouts only — every other 4xx is permanent | Any non-200 response |

Endpoint verification and per-webhook statistics are outbound features — see `postmark-webhooks`.

## Quick Routing

- **"Send an email"** → `postmark-send-email`
- **"Send a batch of emails"** → `postmark-send-email`
- **"Send using a template"** → `postmark-send-email` (template section) or `postmark-templates` (to create/manage templates)
- **"Handle incoming email"** → `postmark-inbound`
- **"Process inbound webhooks"** → `postmark-inbound`
- **"Create an email template"** → `postmark-templates`
- **"Track deliveries/bounces/opens"** → `postmark-webhooks`
- **"Set up bounce handling"** → `postmark-webhooks`
- **"Verify a webhook endpoint" / "my webhook is unverified"** → `postmark-webhooks`
- **"Webhook statistics / failure rate / why is my webhook paused"** → `postmark-webhooks`
- **"Webhook retries"** → `postmark-webhooks` (outbound events) or `postmark-inbound` (inbound email)
- **"Set up SPF/DKIM/DMARC"** → `postmark-email-best-practices`
- **"Email compliance / GDPR / CAN-SPAM"** → `postmark-email-best-practices`
- **"Domain warm-up"** → `postmark-email-best-practices`
- **"List hygiene / suppression management"** → `postmark-email-best-practices`
- **"Design a transactional email"** → `postmark-email-best-practices`
- **"Test email safely"** → `postmark-email-best-practices`

## Common Setup

### Authentication

Postmark uses two types of API tokens:

| Token | Header | Scope |
|-------|--------|-------|
| **Server Token** | `X-Postmark-Server-Token` | Sending emails, templates, bounces, webhooks, message streams |
| **Account Token** | `X-Postmark-Account-Token` | Managing servers, domains, sender signatures |

Get your Server API Token from [Postmark Servers](https://account.postmarkapp.com/servers).

### SDK Installation

Detect the project language and install the appropriate SDK:

| File | Language | Install Command |
|------|----------|----------------|
| `package.json` | Node.js / TypeScript | `npm install postmark` |
| `requirements.txt` / `pyproject.toml` | Python | `pip install postmarker` |
| `Gemfile` | Ruby | `gem install postmark` |
| `composer.json` | PHP | `composer require wildbit/postmark-php` |
| `*.csproj` / `*.sln` | .NET | `dotnet add package Postmark` |

### Message Streams

Postmark separates email by intent into **Message Streams**:

| Stream | Value | Purpose |
|--------|-------|---------|
| **Transactional** | `outbound` | 1:1 triggered emails (welcome, password reset, receipts) — **default** |
| **Broadcast** | `broadcast` | Marketing, newsletters, announcements |

Never mix transactional and broadcast email in the same stream — it damages deliverability.

## Resources

- [Postmark Developer Docs](https://postmarkapp.com/developer)
- [API Reference](https://postmarkapp.com/developer/api/overview)
- [Postmark API for LLMs](https://postmarkapp.com/llms.txt)
- [Postmark Dashboard](https://account.postmarkapp.com)

© postmark · MIT · ActiveCampaign/postmark-skills

Similar skills

All skills for Backend and APIs →

Project sponsors

Companies that keep this analytics open
Gold sponsor

Impressions, clicks and code copies — open statistics. We keep the numbers public for the same reason NeBlask itself is public. Become a sponsor