PHPackages                             michael-orenda/notification - 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. [Logging &amp; Monitoring](/categories/logging)
4. /
5. michael-orenda/notification

ActiveLibrary[Logging &amp; Monitoring](/categories/logging)

michael-orenda/notification
===========================

Enterprise-grade notification package providing email, SMS, in-app, push, and webhook channels with hybrid Blade/DB templates and Logging integration.

v1.0.0(5mo ago)00MITPHPPHP &gt;=8.2CI failing

Since Dec 13Pushed 5mo agoCompare

[ Source](https://github.com/michael-orenda/notification)[ Packagist](https://packagist.org/packages/michael-orenda/notification)[ Docs](https://github.com/michael-orenda/notification)[ RSS](/packages/michael-orenda-notification/feed)WikiDiscussions main Synced 1mo ago

READMEChangelogDependencies (5)Versions (2)Used By (0)

MichaelOrenda Notification Package
==================================

[](#michaelorenda-notification-package)

A **production-grade, auditable, queue-safe notification system** for Laravel.

This package is designed for **reliability, traceability, and clarity**, not magic. If you forget how it works in 6 months — read this file and you’ll be productive again.

---

Table of Contents
-----------------

[](#table-of-contents)

1. Overview &amp; Philosophy
2. Architecture &amp; Mental Model
3. Supported Channels
4. Template System (DB → Blade → Inline)
5. Standard Template Keys
6. Installation
7. Configuration
8. Usage Examples
9. Queueing &amp; Retry Behavior
10. Logging &amp; Auditing
11. Seeders &amp; Default Templates
12. Blade Templates (Fallbacks)
13. What This Package Does NOT Do
14. Production Checklist

---

1. Overview &amp; Philosophy
----------------------------

[](#1-overview--philosophy)

This package treats notifications as **delivery intents**, not just messages.

- Delivery is **observable**
- Failures are **audited**
- Retries are **intentional**
- Templates are **versioned**
- Channels are **isolated**

This is suitable for:

- Financial systems
- Security alerts
- Compliance-heavy domains
- Multi-channel delivery (Email, SMS, Slack, In-App)

---

2. Architecture &amp; Mental Model
----------------------------------

[](#2-architecture--mental-model)

### Core Components

[](#core-components)

- **Notifier** → Orchestrates delivery (sync vs queue)
- **SendNotificationJob** → Async execution + retries
- **Channels** → Email, SMS, Slack, In-App
- **NotificationTemplate** → Versioned content (DB)
- **Blade Templates** → File-based fallback
- **NotificationLogger** → Single source of audit truth

### Template Resolution Order

[](#template-resolution-order)

1. Database template
2. Published Blade template (host app)
3. Package Blade template
4. Inline body (last resort)

---

3. Supported Channels
---------------------

[](#3-supported-channels)

ChannelPurposeEmailRich HTML, long-formSMSShort, urgent alertsIn-AppUI notificationsSlackOps / Dev alerts---

4. Template System
------------------

[](#4-template-system)

Templates are **channel-specific** and **versioned**.

Database columns:

- `key`
- `channel`
- `subject` (nullable)
- `body`
- `version`

Never edit templates in-place. **Increment the version instead.**

---

5. Standard Template Keys
-------------------------

[](#5-standard-template-keys)

### System

[](#system)

- `system.critical`
- `system.warning`
- `system.info`

### Authentication

[](#authentication)

- `auth.otp`
- `auth.login_alert`
- `auth.password_reset`

### User Lifecycle

[](#user-lifecycle)

- `user.welcome`
- `user.profile_updated`
- `user.deactivated`

### Security

[](#security)

- `security.suspicious_login`
- `security.password_changed`

### Business (Generic)

[](#business-generic)

- `transaction.success`
- `transaction.failed`
- `document.ready`

---

6. Installation
---------------

[](#6-installation)

```
composer require michael-orenda/notification
```

Publish config (optional):

```
php artisan vendor:publish --tag=notification-config
```

---

7. Configuration
----------------

[](#7-configuration)

### Queueing

[](#queueing)

```
'queue' => env('NOTIFICATION_QUEUE', false),
'queue_name' => 'notifications',
```

### Retry &amp; Backoff

[](#retry--backoff)

```
'retry' => [
    'count' => 5,
    'backoff' => [1, 3, 5, 10, 20],
],
```

### Per-channel overrides

[](#per-channel-overrides)

```
'sms' => [
    'retries' => 6,
    'backoff' => [1, 3, 5, 10, 20],
],
```

---

8. Usage Examples
-----------------

[](#8-usage-examples)

### Basic Send

[](#basic-send)

```
use MichaelOrenda\Notification\Services\Notifier;

$notifier->send(
    $user,
    'system.critical',
    [
        'content' => 'Disk usage exceeded 95%',
        'server' => 'prod-01',
    ],
    ['email', 'sms']
);
```

### Inline Body (no template)

[](#inline-body-no-template)

```
$notifier->send($user, [
    'body' => 'Simple text message',
], [], ['sms']);
```

---

9. Queueing &amp; Retry Behavior
--------------------------------

[](#9-queueing--retry-behavior)

When `NOTIFICATION_QUEUE=true`:

- Notifications are dispatched to a queue
- Retries are attempt-based
- Exponential backoff is applied
- Highest-risk channel controls retry behavior

Run worker:

```
php artisan queue:work --queue=notifications
```

---

10. Logging &amp; Auditing
--------------------------

[](#10-logging--auditing)

All delivery attempts are stored in:

```
notification_deliveries

```

Each record includes:

- channel
- provider
- destination
- template key + version
- status (`sent`, `failed`)
- error (if any)

This table is your **audit trail**.

---

11. Seeders &amp; Default Templates
-----------------------------------

[](#11-seeders--default-templates)

A default seeder is provided:

```
MichaelOrenda\Notification\Database\Seeders\NotificationTemplateSeeder

```

Run:

```
php artisan db:seed --class="MichaelOrenda\\Notification\\Database\\Seeders\\NotificationTemplateSeeder"
```

This seeds:

- Email templates
- SMS templates
- In-App templates
- Slack templates

---

12. Blade Templates (Fallback)
------------------------------

[](#12-blade-templates-fallback)

Package fallbacks live in:

```
resources/views/emails/
resources/views/sms/
resources/views/slack/

```

Host apps may override by publishing views.

---

13. What This Package Does NOT Do
---------------------------------

[](#13-what-this-package-does-not-do)

Intentionally excluded:

- ❌ UI rendering
- ❌ User preference screens
- ❌ Cron-based scheduling
- ❌ Marketing campaigns

Those belong in higher-level packages.

---

14. Production Checklist
------------------------

[](#14-production-checklist)

Before shipping:

- Enable queue mode
- Configure retries &amp; backoff
- Seed templates
- Start queue workers
- Monitor `notification_deliveries`

---

Final Note
----------

[](#final-note)

This package favors **correctness over convenience**.

If something fails:

- You will know
- You will have logs
- You will not lose notifications

Ship with confidence.

###  Health Score

32

—

LowBetter than 72% of packages

Maintenance72

Regular maintenance activity

Popularity0

Limited adoption so far

Community2

Small or concentrated contributor base

Maturity47

Maturing project, gaining track record

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

Unknown

Total

1

Last Release

156d ago

### Community

Maintainers

![](https://www.gravatar.com/avatar/717e442360b4b2518bad07d4b6942676841ef358236c52c8d5f5929b3d908eaa?d=identicon)[rminchrist](/maintainers/rminchrist)

---

Tags

laravelloggingpackagepushemailnotificationsmstemplateswebhookalertsin app

### Embed Badge

![Health badge](/badges/michael-orenda-notification/health.svg)

```
[![Health](https://phpackages.com/badges/michael-orenda-notification/health.svg)](https://phpackages.com/packages/michael-orenda-notification)
```

###  Alternatives

[spatie/laravel-health

Monitor the health of a Laravel application

85810.0M83](/packages/spatie-laravel-health)[yadahan/laravel-authentication-log

Laravel Authentication Log provides authentication logger and notification for Laravel.

416632.8k5](/packages/yadahan-laravel-authentication-log)[saasscaleup/laravel-log-alarm

Laravel log Alarm help you to set up alarm when errors occur in your system and send you a notification via Slack and email

27025.0k](/packages/saasscaleup-laravel-log-alarm)[guanguans/laravel-exception-notify

Monitor exception and report to the notification channels(Log、Mail、AnPush、Bark、Chanify、DingTalk、Discord、Gitter、GoogleChat、IGot、Lark、Mattermost、MicrosoftTeams、NowPush、Ntfy、Push、Pushback、PushBullet、PushDeer、PushMe、Pushover、PushPlus、QQ、RocketChat、ServerChan、ShowdocPush、SimplePush、Slack、Telegram、WeWork、WPush、XiZhi、YiFengChuanHua、ZohoCliq、ZohoCliqWebHook、Zulip).

14642.7k1](/packages/guanguans-laravel-exception-notify)[masterro/laravel-mail-viewer

Easily view in browser outgoing emails.

6392.1k](/packages/masterro-laravel-mail-viewer)[osa-eg/laravel-teams-notification

A Laravel package to send notifications to Microsoft Teams

71257.5k1](/packages/osa-eg-laravel-teams-notification)

PHPackages © 2026

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