Send in minutes
A verified sender, a template, and data: one POST /v1/messages does the rest. No raw HTML
wrangling in your codebase.
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.
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.