thomasjohnkane/laravel-scheduled-notifications
thomasjohnkane/laravel-scheduled-notifications lets you schedule Laravel notifications for later delivery with a simple, database-backed API. Delay sends, set recurring schedules, cancel or reschedule pending alerts, and manage queued user notifications from one place.
scheduled_notifications table, a polymorphic relation, cancellation logic, and queue dispatch — roughly 1–3 weeks of engineering plus ongoing edge-case maintenance. Snooze collapses that to a composer require and a trait.composer.json before committing the upgrade plan.Adopt when:
Look elsewhere when:
To executives: This is a small, mature Laravel package that lets us ship scheduled and cancellable customer reminders — trial-expiry nudges, payment follow-ups, onboarding steps — in days instead of building and maintaining that machinery ourselves. It runs on infrastructure we already pay for (our database and queue workers), so there is no new vendor contract, no new data processor to review, and no additional per-message cost. The latest release (2.9.1) is a maintenance update that adds Laravel 13 compatibility with no breaking changes, which means adopting it does not create a future framework-upgrade blocker — a common hidden cost with smaller packages. Principal risk is that it is maintained by a single author; we mitigate that because all scheduled state lives in our own database, so we can fork or replace it without data loss. Recommendation: adopt for lifecycle reminders, keep campaign-level marketing in a dedicated platform.
To engineering: Dependency thomasjohnkane/snooze 2.9.1. Adds a snoozes polymorphic table plus a ShouldSnooze trait on models; scheduling is queue-driven, so behavior inherits our existing queue guarantees (at-least-once — notification classes should be idempotent). Cancellation and rescheduling are first-class, which is the part we would otherwise write and get wrong. 2.9.1 widens support to Laravel 13; verify the constraint and run the upgrade path in CI. Surface area is small enough to read in an afternoon and to fork if needed.
How can I help you explore Laravel packages today?