citricguy/postmark-webhooks-laravel
A no-frills Laravel package that accepts Postmark webhooks and fires a single PostmarkWebhookReceived event for your listeners. No models or migrations, middleware verifies requests come from Postmark, and the webhook URL is configurable. Payload, email, record type, and message ID are available on...
PostmarkWebhookReceived event with payload, email, recordType, and messageId already extracted — roughly a day of engineering you don't have to spend, at the cost of a very small dependency.^2.0 before lock-file updates — which is worth budgeting as recurring maintenance cost.Adopt when all of the following hold:
messageId), and rate limiting yourself. The package explicitly provides none of this — it returns ["success"] and steps aside. Postmark will retry; your handlers must tolerate duplicates.POSTMARK_WEBHOOK_FIREWALL_ENABLED=false or configure the switch in the test application. Rebuild config caches after changes.Look elsewhere when: you need persistence or replay of webhook history out of the box (the package it was inspired by, mvdnbrk/laravel-postmark-webhooks, adds models and migrations); you need a provider-agnostic webhook abstraction; you want a maintained dependency with community support and a track record; or your security review requires a vendored, audited codebase rather than a Composer dependency.
For executives. We can turn Postmark's email events — bounces, complaints, opens, clicks, inbound mail — into product behavior in days rather than weeks. This package is a thin, MIT-licensed adapter that receives Postmark's callbacks, verifies they genuinely came from Postmark, and hands us a clean event to act on. It carries no database schema, no vendor lock-in on our data model, and no new infrastructure. Cost is one small dependency and roughly an afternoon of integration; the alternative is our own build of the same webhook endpoint, auth, and parsing. The main risks are maturity (it has effectively no external users yet) and a recent minor-version behavior change to firewall enforcement that we must configure deliberately per environment.
For engineering. A single route (/api/postmark/webhook, configurable), a PostmarkWebhookReceived event exposing payload, email, recordType, and messageId, and middleware doing IP allowlisting plus optional Basic Auth. No migrations, no models — you write listeners and own everything downstream: queueing, idempotency on messageId, retry semantics, error logging, and throttling.
Two things to flag before we commit:
APP_ENV no longer bypasses an enabled firewall. Anything on ^2.0 can pick this up during a routine dependency update. We should pin or review minor bumps and confirm our trusted-proxy and Basic Auth setup holds — especially behind a load balancer.Ask: approve a timeboxed spike — integrate against a Postmark test server, exercise one bounce and one delivery listener end-to-end, and confirm the environment firewall matrix in CI before we adopt.
How can I help you explore Laravel packages today?