PHPackages                             lchris44/laravel-email-preference-center - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [Mail &amp; Notifications](/categories/mail)
4. /
5. lchris44/laravel-email-preference-center

ActiveLibrary[Mail &amp; Notifications](/categories/mail)

lchris44/laravel-email-preference-center
========================================

Per-category email preferences, frequency controls, one-click unsubscribe, and GDPR consent logging for Laravel.

v1.3.0(3mo ago)2648MITPHPPHP ^8.2CI passing

Since Mar 13Pushed 3mo agoCompare

[ Source](https://github.com/lchris44/laravel-email-preference-center)[ Packagist](https://packagist.org/packages/lchris44/laravel-email-preference-center)[ Docs](https://github.com/lchris44/laravel-email-preference-center)[ RSS](/packages/lchris44-laravel-email-preference-center/feed)WikiDiscussions main Synced 3w ago

READMEChangelogDependencies (3)Versions (6)Used By (0)

 [![Laravel Email Preference Center](docs/logo.png)](docs/logo.png)

 **A complete, drop-in email preference management system for Laravel applications**

Stop losing subscribers to a binary unsubscribe. Let users choose exactly what lands in their inbox.

 [![Latest Version](https://camo.githubusercontent.com/c920ddec822c705eb465d1411aa0d75baefada866ce6df718a74fbf4cb398d28/68747470733a2f2f696d672e736869656c64732e696f2f7061636b61676973742f762f6c636872697334342f6c61726176656c2d656d61696c2d707265666572656e63652d63656e7465722e737667)](https://packagist.org/packages/lchris44/laravel-email-preference-center) [![Tests](https://github.com/lchris44/laravel-email-preference-center/actions/workflows/run-tests.yml/badge.svg)](https://github.com/lchris44/laravel-email-preference-center/actions/workflows/run-tests.yml) [![License](https://camo.githubusercontent.com/7426e1c3bb8a9c1ede836437f5d56f01e94ff37fe8041ed3a9b08cefb2a5d00a/68747470733a2f2f696d672e736869656c64732e696f2f7061636b61676973742f6c2f6c636872697334342f6c61726176656c2d656d61696c2d707265666572656e63652d63656e7465722e737667)](https://packagist.org/packages/lchris44/laravel-email-preference-center)

---

Documentation
-------------

[](#documentation)

📚 **[Read the full documentation](https://darkorchid-spoonbill-752711.hostingersite.com/)**

The documentation includes:

- Installation &amp; Quick Start
- Configuration reference
- Notification Channel
- Category Declaration (attribute, interface, config map)
- Preference Management
- Preference Center UI
- One-Click Unsubscribe (RFC 8058)
- Digest Batching
- GDPR Consent Log
- Events
- Artisan Commands
- API Reference
- Database Schema
- Routes

---

Why Use This Package?
---------------------

[](#why-use-this-package)

Most applications offer users a single "unsubscribe from everything" link. That's a bad experience — and you lose subscribers who only wanted fewer emails, not none at all.

This package gives your users a real preference center: they choose which email categories they receive, how often they get them, and can unsubscribe from individual categories without opting out of everything. You get better deliverability, fewer spam complaints, and users who actually stay engaged.

**Features at a glance:**

- 📬 **Smart notification channel** — drop-in replacement for `'mail'`, routes automatically based on preferences
- 🎛️ **Self-service preference center** — a ready-to-use Blade UI where users manage all their email categories and frequencies in one place, accessible via a signed URL with no login required
- 🔗 **One-click unsubscribe** — RFC 8058 compliant, works natively in Gmail and Apple Mail (required for bulk senders since 2024)
- 📋 **Digest batching** — automatic daily and weekly digest scheduling, zero extra code
- 🔒 **GDPR consent log** — every preference change recorded with IP, user agent, and timestamp
- 🧩 **Polymorphic** — works with any notifiable model, not just `User`
- ⚡ **Three ways to declare categories** — PHP attribute, interface, or config map for third-party notifications

---

Installation
------------

[](#installation)

Install via Composer:

```
composer require lchris44/laravel-email-preference-center
```

Publish the configuration and run migrations:

```
php artisan vendor:publish --tag=email-preferences-config
php artisan migrate
```

---

Quick Example
-------------

[](#quick-example)

Replace `'mail'` with `'email-preferences'` in your notification and declare a category:

```
use Lchris44\EmailPreferenceCenter\Attributes\EmailCategory;

#[EmailCategory('marketing')]
class NewsletterNotification extends Notification
{
    public function via(object $notifiable): array
    {
        return ['email-preferences'];
    }
}
```

The package automatically checks the user's preferences — sending immediately, queuing to a digest, or dropping silently depending on their settings.

---

Contributing
------------

[](#contributing)

Contributions are welcome!

- Fork the repository
- Create a feature branch
- Submit a pull request

---

License
-------

[](#license)

MIT — [Lenos Christodoulou](https://github.com/lchris44)

---

Support
-------

[](#support)

If you encounter issues, please open an issue on GitHub:

###  Health Score

41

—

FairBetter than 87% of packages

Maintenance81

Actively maintained with recent releases

Popularity17

Limited adoption so far

Community6

Small or concentrated contributor base

Maturity50

Maturing project, gaining track record

 Bus Factor1

Top contributor holds 100% of commits — single point of failure

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

###  Release Activity

Cadence

Every ~1 days

Total

5

Last Release

101d ago

### Community

Maintainers

![](https://www.gravatar.com/avatar/d722af8b81da6f334502624890a5ba3978d9ed36aff7e370384ba91c06817a37?d=identicon)[lchris44](/maintainers/lchris44)

---

Top Contributors

[![lchris44](https://avatars.githubusercontent.com/u/85734871?v=4)](https://github.com/lchris44 "lchris44 (23 commits)")

---

Tags

emailemail-digestemail-preferencesgdprlaravel-packagenotification-preferencesopen-sourcephpsaasunsubscribeuser-preferenceslaravelemailnotificationspreferencesgdprconsentunsubscribe

###  Code Quality

TestsPHPUnit

### Embed Badge

![Health badge](/badges/lchris44-laravel-email-preference-center/health.svg)

```
[![Health](https://phpackages.com/badges/lchris44-laravel-email-preference-center/health.svg)](https://phpackages.com/packages/lchris44-laravel-email-preference-center)
```

###  Alternatives

[propaganistas/laravel-disposable-email

Disposable email validator

6012.9M7](/packages/propaganistas-laravel-disposable-email)[vormkracht10/laravel-mails

Laravel Mails can collect everything you might want to track about the mails that has been sent by your Laravel app.

24855.3k](/packages/vormkracht10-laravel-mails)[finity-labs/fin-mail

A powerful email template manager and composer for Filament with dynamic token replacement, template versioning, and inline email sending.

272.7k1](/packages/finity-labs-fin-mail)[juhasev/laravel-ses

Allows you to track opens, deliveries, bounces, complaints and clicked links when sending emails through Laravel and Amazon SES

1710.2k](/packages/juhasev-laravel-ses)[notebrainslab/filament-email-templates

A powerful and flexible Email Template Management plugin for Filament v4 and v5.

121.1k](/packages/notebrainslab-filament-email-templates)

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
