Weave Code
Weaver
Helps Laravel developers discover, compare, and choose open-source packages. See popularity, security, maintainers, and scores at a glance to make better decisions.
Feedback
Share your thoughts, report bugs, or suggest improvements.
Subject
Message

Resend Laravel Laravel Package

resend/resend-laravel

Provides Resend integration for Laravel and Symfony Mailer, including a Resend facade and a ready-to-use Laravel mail transport. Install via Composer, set RESEND_API_KEY, and send emails through Resend with minimal configuration.

View on GitHub
Deep Wiki
Context7

Technical Evaluation

Architecture fit

  • Official first-party integration from Resend, MIT-licensed, purpose-built for Laravel. Two consumption modes: a Resend facade for direct API calls and a native Laravel mail transport ('transport' => 'resend') that plugs into the existing Mail/Mailable abstraction. This is the lowest-friction shape possible for a Laravel codebase — the transport path requires only config/mail.php plus one env var, not application code changes.
  • Thin wrapper over resend/resend-php. Feature surface (attachments, inline attachments, tags, idempotency keys, custom headers, webhook events) tracks the upstream SDK, so capability gains arrive via dependency bumps rather than package-specific work. That is good for maintenance but means the Laravel package adds little beyond ergonomics and mailer wiring — assess the upstream SDK and the Resend API contract as the real dependency.
  • Webhook story is included, not bolted on: VerifyWebhookSignature middleware, a webhook controller, and typed event support (email.*, contact.*, domain.*, plus contact.topics.*/topic.* from v1.6.0). This matters — deliverability operations (bounces, complaints, suppressions) are webhook-driven, so an integration without signed webhooks would force us to build that plumbing ourselves.
  • Composer-native, PSR-friendly, no service provider hijacking concerns beyond standard Laravel package discovery. Symfony Mailer compatibility (v8 supported since 1.3.2) keeps it viable for teams on either side of the Laravel/Symfony boundary.

Integration feasibility

  • Prerequisites are modest and well understood: PHP 8.1+, a Laravel version in the supported band, a verified sending domain with DNS records, and an API key. No database migrations, no queue infrastructure requirements, no schema ownership.
  • Laravel version coverage is demonstrably maintained across 9 → 13, with Symfony Mailer v8 support. The 1.x line (upstream resend-php v1) is a meaningful stabilization signal versus the 0.x churn.
  • Effort is dominated by non-code work: domain authentication, deliverability warm-up, suppression-list policy, webhook endpoint exposure and secret management, and observability for send outcomes. Code integration is realistically hours; production readiness is days to weeks depending on volume and criticality.
  • The low dependent count (0 in this dataset) and modest star count (129) mean we cannot lean on peer precedent for edge cases. Treat adoption evidence as unproven and validate against the official example repos rather than community patterns.

Technical risk

  • Vendor concentration. Migrating to Resend means a second external dependency alongside (or replacing) our current mail provider. Deliverability, reputation, and outbound IP quality become Resend's problem — which is the point, but it is a supplier risk we must own contractually and operationally.
  • Data anomaly to verify. The stated last release (2026-10-20) is future-dated relative to normal release observation. Either a cadence/date artifact in the dataset or a genuinely aggressive release train; either way, confirm the actual current version and changelog before pinning. Do not plan against a date we cannot reconcile.
  • Version coupling. Every notable release in the history is a resend-php constraint bump or a Laravel-version compatibility fix (0.16.1 fixed Laravel 12; 1.3.1 added Laravel 13). This is a package that moves in lockstep with two upstreams. Budget for periodic, low-effort-but-nonzero upgrade work, and pin both packages.
  • Error and failure semantics. Early releases had real correctness defects (headers lost when attachments added in 0.16.0, ResendTransportFactory missing-error handling in 0.23.0, content-ID parameter rename in 0.21.0). The trajectory is healthy, but transport-layer error surfacing is exactly what determines whether failures are visible or silent. Verify current exception behavior (TransportException) under API errors, timeouts, and rate limits.
  • Webhook trust boundary. Signature verification middleware exists, but configuration errors (wrong secret, body parsing before verification, proxy rewrites) are the classic way signed webhooks become decorative. This needs explicit test coverage.
  • Blast radius. Email is often the only recovery path for account access. A mailer swap on password-reset and verification flows is a high-severity change with an easy, cheap mitigation (fallback mailer, staged rollout) that must not be skipped.

Key questions

  1. What is Resend's contractual SLA, status-page history, and incident notification process — and what is the documented retry/idempotency behavior during an API degradation?
  2. Which flows are in scope: transactional only, or also marketing/bulk? Does anything require inbound email, dedicated IPs, or subaccount isolation?
  3. Can we run a fallback mailer and a per-flow routing switch, and is that acceptable to the business as a permanent posture or a temporary migration aid?
  4. What are the data residency and DPA requirements for recipient PII and email content, and does Resend meet them for our jurisdictions?
  5. Who owns DNS (SPF/DKIM/DMARC), domain verification, and the suppression-list reconciliation loop between Resend and our own database?
  6. What is the volume/price curve at our projected send rate, and how do we monitor spend anomalies (e.g., a retry loop sending duplicates)?
  7. Do we need tag- and idempotency-key-based observability for reconciliation, and does our current logging capture the X-Resend-Email-ID returned on SentMessage?
  8. What is our supported Laravel/PHP upgrade cadence, and can we guarantee the package's compatibility band never blocks a framework upgrade?

Integration Approach

Stack fit

  • Strong fit for any Laravel 9–13 application on PHP 8.1+ using the standard Mail facade and Mailables. Near-zero fit risk for teams already on the Mail abstraction; higher touch for code that bypasses Mailables and talks to a provider SDK or raw SMTP directly (custom headers, per-message provider options, bounce parsing).
  • Existing provider-specific behavior must be explicitly mapped, not assumed: bounce/complaint handling (Resend webhooks vs. current mechanism), template ownership (Resend templates vs. Blade-rendered Mailables), list/contact management, and any analytics tied to provider message IDs.
  • If the application is multi-tenant with per-tenant sender identities, confirm domain/subdomain strategy before integration — domain verification work scales linearly and should not surface after code is merged.

Migration path

  1. Install and configure in a non-production environment; verify the transport with a subdomain or Resend test sender.
  2. Publish and review the package config; enable only the mailer definition and the RESEND_API_KEY — keep the existing mailer configuration intact and switchable.
  3. Stand up the webhook endpoint with VerifyWebhookSignature in a staging route, and prove signature rejection works with a deliberately bad secret.
  4. Instrument sends: capture X-Resend-Email-ID, log transport exceptions, and add a dashboard or alert keyed on send-failure rate.
  5. Pilot on low-risk, non-blocking notifications; compare deliverability and failure rates against the incumbent over a defined window.
  6. Promote to critical transactional flows only after the pilot window closes clean, with a tested fallback mailer and a documented revert (single env-var flip, existing config preserved).
  7. Decommission the incumbent only after a full billing/retention cycle confirms no residual dependency.

Compatibility

  • Pin resend/resend-laravel and resend/resend-php together; treat them as a single versioned unit. A composer.lock change here should always be a deliberate, reviewed change, not an incidental composer update side effect.
  • Validate against the exact Laravel and Symfony Mailer versions in our target environments before promotion, not just the documented minimums. Both have been sources of point-release fixes in this package's past.
  • Confirm PHP 8.1 floor against our runtime roadmap; if we are moving to 8.3/8.4, the release history indicates active testing there, but verify in CI rather than trusting the badge.

Sequencing

  • Run webhook infrastructure and observability work in parallel with the code integration — they are the long poles, and they gate the critical-flow cutover.
  • Do not sequence marketing/bulk volume behind the transactional cutover; keep them separate so deliverability issues in one do not contaminate the other's reputation or debugging.
  • Reserve a deliberate soak period before touching password reset and account verification — these are the flows with the worst failure mode and the least tolerance for a learning curve.

Operational Impact

Maintenance

  • Low absolute maintenance: MIT license, official ownership, active release cadence, and a codebase whose diffs are largely dependency constraints and compatibility fixes. Realistic ongoing cost is periodic upgrade-and-retest work bundled with Laravel/PHP upgrades plus occasional SDK constraint bumps.
  • The maintenance burden we do own is configuration and DNS: domain verification, DKIM/SPF/DMARC records, webhook secrets, and API key rotation. None of it is hard; all of it is easy to leave undocumented and then fear.
  • Assign explicit ownership for the Resend relationship — account, billing, DNS, webhooks — because it is now a production dependency with no internal team behind it.

Support

  • First-party vendor support is the primary escalation path, which is materially better than community-package dependency but should be confirmed contractually at our volume tier. Note that the package itself is a thin adapter: most escalations will be API- or deliverability-side, so our support runbook should route accordingly.
  • Internal ramp-up cost is low: the README's two-path pattern (facade vs. mailer) is enough for most engineers, and standard Laravel Mail knowledge transfers directly. The exceptions — webhook verification, idempotency keys, suppression semantics — deserve a short internal note so knowledge is not single-threaded on whoever integrated it.

Scaling

  • Sending volume scales with the Resend plan, not with our infrastructure; there is no queue or worker to size. Our scaling work is rate-limit awareness, backpressure on retries, and ensuring queued Mailables do not storm the API after an outage.
  • Idempotency key support (since 1.3.0) is the lever for duplicate-send prevention on retried jobs — adopt it deliberately for critical flows rather than retrofitting after an incident.
  • Attachment and inline-attachment handling is supported but bounded by API payload limits; bulk or attachment-heavy workloads need explicit sizing tests before they reach production.
  • Webhook throughput grows linearly with send volume. Ensure the endpoint is queue-backed and idempotent, or it becomes the bottleneck precisely when traffic spikes.

Failure modes

  • API outage or degradation. Sends fail at the transport layer. Mitigation: fallback mailer, exponential backoff on queued jobs, and alerting on transport exception rate rather than on individual failures.
  • Silent send failure. Historically the sharpest risk (error-handling gaps in early transport code, header loss). Mitigation: verify current exception propagation explicitly and assert on it with an integration test; do not rely on "Queued: true" as a success signal.
  • Badly configured webhooks. Wrong secret, verification bypassed, or body already consumed by middleware — resulting in unverified event acceptance or total event loss. Mitigation: negative test on signature rejection, plus an alert on 4xx rates at the webhook route.
  • Suppression and reputation drift. Hard bounces and complaints accumulate; without processing email.suppressed and related events, we keep sending to dead or hostile addresses and degrade shared reputation. Mitigation: reconcile suppression state into our own store, not just Resend's.
  • Credential or DNS failure. Expired API key or a broken DKIM record produces a sudden, total, and noisy failure. Mitigation: key-rotation runbook, DNS record inventory, and a canary send from a scheduled job.
  • Dependency drift. An unrelated composer update pulls a new resend-php constraint and changes behavior. Mitigation: paired pinning and a CI job that exercises a test send on dependency changes.

Ramp-up

  • Engineering: hours to first send, roughly one to two days to a properly instrumented, webhook-verified integration in staging.
  • Operations: the real cost. Domain authentication, deliverability warm-up (days to weeks at meaningful volume), suppression policy, and incident runbooks. Budget this explicitly — it is the difference between "integrated" and "safe to rely on."
  • Organization: document the decision, the fallback posture, the revert procedure, and the ownership. Keep the incumbent's configuration in the repo until a full cycle has passed; the revert path should be one env-var change and a redeploy, tested and not hypothetical.
Weaver

How can I help you explore Laravel packages today?

Conversation history is not saved when not logged in.
Prompt
Add packages to context
No packages found.
mehedimi/laravel-amp-mail
happones/laravel-vue-i18n-generator
jwerd/inertia-table
siberfx/flysystem-wasabi
hollyit/token-replace
ippanelcom/laravel-sdk
adachsoft/changelog-linter
adachsoft/collection
payerurl/telegrambot-crypto-payment-instant-payout
dskripchenko/laravel-hybrid-search
riorizkyrainey/lara-ced
mehedimi/static-vel
zharp/zharp
nonsapiens/bigquery-model-sync
lgu-bayambang-ict-office/lgu-laravel-development-standards
andydefer/laravel-support
se7enxweb/flysystem
lampwick/laravel
jeslage/statamic-emojis
micahdshackelford/rmap-laravel