hmones/laravel-digest
Laravel Digest batches your app's notifications into scheduled email digests—daily, weekly, or custom intervals—so users receive one tidy summary instead of constant alerts. Configure channels, frequency, and templates with simple config and a fluent API.
hmones/laravel-digest is a Laravel notification-batching package: it intercepts notifiable events and rolls them into periodic digest emails (daily/weekly/custom) rather than sending per-event mail. v2.4.0 is a minor, additive release — it adds Laravel 12 (l12) support and broadens PHP version coverage. No breaking changes, deprecations, or API surface changes are indicated.
Architecture fit. Strong for teams already on Laravel's notification and queue abstractions. The package is DB-backed and scheduler-driven, so it inherits Laravel's existing operational model (cron → schedule:run → queued jobs) rather than introducing a new delivery substrate. It is a convenience/orchestration layer over Notifiable + MailMessage, not an independent email platform. That is the right altitude for digest requirements.
Integration feasibility. Low-to-moderate. Composer install, publish config, run migrations (digest subscription/pending tables), register the scheduled command, and migrate selected notifications from toMail to the digest contract. The v2.4.0 Laravel 12 / PHP expansion removes the most common blocker (version constraints) for current stacks. Estimated effort: 1–3 dev-days for a first digest type in an existing app, plus review time.
Technical risk. Moderate, concentrated in maintenance and correctness rather than integration:
hmones) with community PRs. The Laravel 12 PR comes from laravel-shift, which is a positive ecosystem signal but does not change bus-factor risk.Key questions.
composer.json, and does it hold on Laravel 12 with our PHP version?Stack fit. Targets Laravel 10/11/12 on modern PHP; the v2.4.0 bump is precisely the release that makes it viable for teams on Laravel 12. It composes with standard queue workers and the scheduler — no new infrastructure, no external service, no vendor lock-in beyond the package itself.
Migration path. Additive and reversible: install → publish config → migrate (new tables only) → wrap target notifications → enable scheduler entry. No destructive schema changes expected at a minor version. Rollback is config-level (stop routing notifications through the digest) plus a table drop.
Compatibility. Constraint check is the gating step: confirm composer.json bounds against our locked Laravel/PHP versions before anything else. Note that the release notes are terse — there is no changelog detail on which PHP versions were added, so verify empirically rather than from the notes.
Sequencing.
Maintenance. Small but non-zero. Pin the version, watch upstream for Laravel-major compatibility releases — historically the package needs a bump per Laravel major (this release is the Laravel 12 one). Budget a periodic review, not continuous work.
Support. Internal ownership is required for digest content, templates, frequency policy, and user preference handling; the package supplies the mechanism, not the product. Single-maintainer upstream means we should be prepared to fork or patch in a worst case — the codebase is small enough that this is realistic.
Scaling. Digest generation is a scheduled batch job whose cost scales with subscriber count and pending-event volume. Expect heavier DB reads at send time; monitor query load and job duration as the user base grows. Consider chunking and off-peak scheduling windows.
Failure modes. The dominant risk is silent failure: if schedule:run is not healthy, digests simply never send and nothing alerts. Secondary modes are duplicate sends on job retry and unbounded growth of digest tables. Mitigations: scheduler heartbeat monitoring, alerting on "zero digests sent in window," an idempotency check on the digest job, and a retention/pruning job on the package tables.
Ramp-up. Low for any Laravel-fluent engineer — a half-day to read the config and contracts, a day to ship a first digest. The learning curve is in the batching semantics and window configuration, not in the framework integration.
Verdict. Approve for adoption with a short constraint-verification spike. v2.4.0 is a maintenance release that materially improves lifecycle fit (Laravel 12) without altering the integration surface; risk sits in operational diligence around scheduling and idempotency, which are addressable with monitoring rather than architectural change.
How can I help you explore Laravel packages today?