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

Laravel Newsletter Laravel Package

spatie/laravel-newsletter

spatie/laravel-newsletter makes it easy to manage email list subscriptions in Laravel. Integrate Mailcoach, MailChimp or MailerLite with a simple API to subscribe, unsubscribe and update contacts.

View on GitHub
Deep Wiki
Context7

Product Decisions This Supports

  • Feature: email capture / list growth. Answers "how do we ship newsletter signup, waitlists, blog subscribers, or lead-magnet opt-ins this sprint?" with a ~1–2 day integration rather than a custom ESP integration. Signup, unsubscribe, subscribe-or-update, delete, and member lookups are all covered.
  • Build vs. buy. The abstraction layer is already built and MIT-licensed. Building an in-house ESP wrapper is pure cost with no differentiation; the only credible build argument is if you need behavior this facade can't express (see below).
  • Roadmap: ESP portability as a risk hedge. The real product value is not the API sugar—it's that newsletter subscription logic lives behind one facade instead of scattered curl calls or vendor SDK calls in controllers. That makes "switch ESP" a scoped migration project instead of a refactor of every signup touchpoint.
  • Double opt-in and consent decisions. subscribePending and marketing-permissions support let you implement GDPR/CAN-SPAM-compliant flows without bespoke vendor code—directly relevant when Legal asks how consent is captured.
  • Pricing/contract negotiation with vendors. Demonstrable portability is leverage. Being able to say "we can move lists in a sprint" changes the renewal conversation with Mailchimp or MailerLite.
  • Environments and QA. The log and null drivers mean staging and CI can exercise signup flows without polluting the production list or burning API quota—a small but real reduction in release risk.
  • Segmentation and tagging roadmap. Tag management and Mailchimp groups/interests are supported, so "segment our subscribers by product interest" is a config-and-call task, not a new integration.
  • Vendor evaluation. Because the same facade fronts Mailcoach, Mailchimp, and MailerLite, you can A/B a second ESP on a subset of traffic without a parallel codebase.

When to Consider This Package

Adopt when:

  • You're on Laravel and the newsletter requirement is list membership—subscribe, unsubscribe, update, check membership—not campaign authoring.
  • You want to defer or hedge the ESP decision, or you're actively migrating between providers.
  • You have multiple lists (e.g., product updates vs. blog digest) and want named lists in config rather than hard-coded IDs.
  • You need a fast, low-risk path: composer require, publish config, set an API key and list ID.

Look elsewhere when:

  • You need campaign creation, sending, scheduling, or template management. This package manages subscribers, not sends. Transactional email is a different concern entirely (Laravel notifications / a transactional provider).
  • You need bulk import or contact sync at scale. There's no batch upsert story here; a nightly sync of 100k contacts is out of scope.
  • You need webhook ingestion (bounces, complaints, new subscribers flowing back into your app). Not provided; you'd build it against the vendor directly.
  • Abstraction fidelity matters more than speed. The driver interface leaks: Mailchimp merge fields (FNAME, interests), MailerLite field names, and Mailcoach attributes are different shapes. Code that passes merge variables is vendor-coupled, so a provider swap is a config change plus an audit of every call site. Budget for that honestly.
  • Feature parity is a hard requirement across providers. Tags, groups/interests, and unsubscribe semantics (MailerLite treats "no list name" as account-wide unsubscribe) differ per driver. Verify your specific provider's documented behavior before committing.
  • Maintenance risk tolerance is low. This is a Spatie-maintained package, and Spatie sells Mailcoach—the default driver. That's not misconduct, but note the commercial incentive and read the driver docs critically. Also verify current driver coverage: the package description claims Brevo support while the README documents only Mailcoach, Mailchimp, and MailerLite. Don't put Brevo on the roadmap until you've confirmed it in the code.
  • You need guaranteed SLAs or vendor support. MIT and community-supported; no escalation path.

How to Pitch It (Stakeholders)

To executives: This is a free, MIT-licensed Laravel package that handles newsletter signups and list management across Mailchimp, MailerLite, and Mailcoach behind a single interface. It costs nothing to adopt, takes roughly a day or two to integrate, and its strategic value is vendor independence—our signup logic isn't welded to one email provider, which gives us leverage at renewal and makes switching providers a contained project rather than a rebuild. Adopt it to ship list-growth features now and to keep the ESP decision reversible.

To engineering: A thin, driver-based facade over the provider SDKs. Install with Composer, publish config/newsletter.php, set the driver class plus API key and list ID, then call the Newsletter facade. Ships log and null drivers for local/CI, supports multiple named lists, tags, Mailchimp groups, and double opt-in (subscribePending). Actively maintained (recent releases, Pest test suite, PHPStan in CI) and battle-tested at 1.6k stars.

Two caveats to state up front:

  1. It manages subscribers, not campaigns. Sending, templates, and automation stay in the ESP's UI or a separate integration. Don't let this get scoped as "our email platform."
  2. The abstraction is configuration-portable, not code-portable. Merge fields and interest-group payloads are provider-shaped. If true provider-swap capability is a goal, standardize on a minimal payload (email + a small set of agreed attributes) and forbid vendor-specific merge keys at the call site. That discipline is what actually delivers the portability we're pitching—the package only makes it possible.
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.
adachsoft/command-executor-lib
tagixo/document-builder
tagixo/page-builder
tagixo/mail-builder
tagixo/form-builder
primix/primix
tagixo/core
alesima/laravel-azure-service-bus
tomshaw/shopcart
likyly/laravel
darthsoup/shoppingcart
tdt/core
labyrinthe/connect-php
encore2/laravel-admin2
cboxdk/laravel-console-kit
shapecode/doctrine-dbal-datetimeutc
gilads-otiannoh254/inertia-protocol
dakiquang/laravel-oauth-refresh-lock
woda/laravel-worktrees
dalefranks/ramasite