resend/resend-php
The official PHP client for the Resend email API. Install via Composer on PHP 8.1+, then send email in a few lines with a simple client interface inspired by OpenAI PHP.
Unified Email Infrastructure (now bidirectional):
Replace fragmented email services (e.g., Mailgun, SendGrid, or legacy SMTP) with a single, modern API-driven solution. This package enables seamless integration of Resend’s unified email stack (transactional, marketing, templated emails, and — as of v1.17.0 — inbound email via inboxes) into PHP/Laravel applications, reducing vendor lock-in and operational overhead.
Roadmap: Customer Communication Platform (CCP) Expansion Accelerate the rollout of Resend’s full API suite (contacts, automations, events, webhooks, usage, and now inboxes) to power:
logs and events APIs).usage service — see below).inboxes endpoints — see below).New in v1.17.0 — Inbound Email (inboxes endpoints)
The SDK now covers receiving email, not just sending it. This is the most strategically significant addition since we started tracking this package, because it turns email from a one-way broadcast channel into an ingestion surface for product data and workflows:
inboxes is brand new (single PR, no prior surface area). Treat it as beta-grade in our own risk model — validate behavior, limits, and webhook payload shape in a spike before committing roadmap dates to it.New in v1.16.0 — Usage & Quota Visibility (usage service)
The SDK exposes account-level usage and quota data, which turns email from an opaque line item into a measurable, forecastable product input:
Build vs. Buy: Avoid Custom SDK Development Justify adopting this official-style SDK over building an in-house client by highlighting:
$resend->emails->send()).Use Cases:
SwiftMailer/PHPMailer).contacts/segments APIs (e.g., "VIP users only").delivered, bounced) with CRM/analytics tools using the events API.$resend->templates->create()).Adopt if:
usage service gives programmatic access to account usage and quota, which is a concrete win over raw HTTP integrations.inboxes endpoints let one SDK cover send and receive. Run a spike first; this surface is new.Look elsewhere if:
usage reports consumption — it does not raise your ceiling.symfony/mailer for SMTP).usage is account-level only; deeper attribution requires joining it with our own send records.inboxes is one minor release old — a specialist inbound vendor may still be the safer bet for a launch-critical path.*"This package lets us replace fragmented email services with Resend’s unified API—cutting costs, improving deliverability, and enabling smarter customer communication. Two recent releases materially change the business case:
inboxes) — we can now receive email through the same vendor we send with. That’s the difference between a notification service and a real conversation channel: customer replies land in our product, not in an unmonitored shared inbox, and we can retire a separate inbound-email vendor.For example:
contacts and automations APIs to trigger emails based on user behavior (e.g., ‘Welcome’ series for new signups).Implementation is lightweight—composer require resend/resend-php—and our Laravel team can integrate it in days. Recommendation: greenlight outbound integration now; scope inbound as a short technical spike before we put it on the roadmap."*
*"This is a batteries-included PHP client for Resend’s API, designed for speed and clarity:
$resend->emails->send() mirrors Laravel’s Eloquent style, reducing onboarding time.inboxes for inbound email (v1.17.0) — no need to build custom HTTP wrappers.inboxes: Newly added — one PR, no migration guide, no prior usage in the wild. Before adopting, spike: inbound webhook payload shape, attachment handling, size/rate limits, and how threads are keyed. Wrap it behind our own InboundEmail interface rather than calling the SDK directly from controllers.composer.json and re-run the test suite on upgrade. Inbound email is the one area where a minor release could plausibly shift behavior — bump deliberately, not automatically.
Proposal: Use this for all new email workflows. For legacy systems, phase in Resend via an EmailService interface (strategy pattern). Wire the usage service into a scheduled command so quota checks are part of standard observability, and put inbound behind an adapter so a vendor swap stays cheap."**"This package unlocks real-time email event tracking via Resend’s events and logs APIs, account usage and quota data via the usage service (v1.16.0), and now inbound message data via inboxes (v1.17.0):
email.delivered, inbound received) can trigger updates in tools like Mixpanel or Amplitude.templates API to dynamically render variants and measure performance.
Example: Integrate events with our pipeline to correlate email activity with retention, join usage to compute cost-per-engagement by campaign, and derive reply-rate cohorts from inbound messages."*v1.17.0 (2026-09-25) adds inboxes endpoints (inbound email) — a net-new capability, not just a version refresh. It expands the decision surface from "email delivery + cost" to "email delivery + cost + two-way conversations," and creates a plausible alternative to a separate inbound-email vendor. No deprecations or breaking changes identified; the only other change is a CI dependency digest bump. The assessment is refreshed to (a) advance the version reference v1.16.0 → v1.17.0 and (b) capture the inbound-email opportunity with an explicit "validate before committing" caveat, since the feature is a single unreleased-in-the-wild addition.
How can I help you explore Laravel packages today?