Skip to content

All the email your product sends. One POST away.

Verify a sender, reference a template, pass your data. PufferPost renders and delivers the email, and hands you a timeline you can actually read.

Send your first email

POST /v1/messages
curl https://pufferpost.com/v1/messages \
-H "Authorization: Bearer $PUFFERPOST_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"from": "hello@acme.com",
"to": "ada@example.com",
"templateId": "tpl_…",
"data": { "name": "Ada" }
}'

The API returns a message id immediately and sends asynchronously. Track delivery, opens and clicks from your dashboard or via webhooks.

On the Free plan this call works end to end in test mode: the message is accepted, rendered and tracked, but nothing is delivered to a real inbox until you are on a paid plan. See Getting started for the details.

Why PufferPost

Send in minutes

A verified sender, a template, and data: one POST /v1/messages does the rest. No raw HTML wrangling in your codebase.

Built for retries

Idempotency keys make retries safe, every error shares one stable envelope, and every call returns a request_id you can quote.

Drop-in PHP SDK

composer require pufferpost/sdk, plus Symfony and Laravel Mailer transports that slot into the $mailer you already have.

Webhooks & events

Signed delivery events pushed to your endpoint, verified with an HMAC, retried on failure, and replayable after an outage on your side.