PHPackages                             eonx-com/easy-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. [Mail &amp; Notifications](/categories/mail)
4. /
5. eonx-com/easy-notification

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

eonx-com/easy-notification
==========================

Client for dispatching notifications at EonX

6.20.1(1mo ago)01.1M↓24.6%MITPHPPHP ^8.2

Since Aug 7Pushed 1mo ago3 watchersCompare

[ Source](https://github.com/eonx-com/easy-notification)[ Packagist](https://packagist.org/packages/eonx-com/easy-notification)[ RSS](/packages/eonx-com-easy-notification/feed)WikiDiscussions master Synced 1mo ago

READMEChangelogDependencies (26)Versions (468)Used By (0)

\---eonx\_docs--- title: Introduction weight: 0 ---eonx\_docs---

This package is made to ease dispatching notifications within EonX Notification service, and works with this service ONLY.

### Require package (Composer)

[](#require-package-composer)

The recommended way to install this package is to use [Composer](https://getcomposer.org/):

```
$ composer require eonx-com/easy-notification
```

### Configuration

[](#configuration)

In order to send notifications using the EonX Notification service, you need to register a Provider within that service. Once the Provider created, set the API URL the Provider is registered against and keep the Provider API key and external ID handy as they will be required to send messages.

See the configuration section for your framework of choice. (coming soon...)

### CacheConfigFinder

[](#cacheconfigfinder)

This package will automatically send API requests to the EonX Notification service to fetch the configuration for your ApiKey and Provider. This will ensure your application has the latest configuration, however, this configuration can easily be cached as it doesn't change often.

This is why this package provides you with a `EonX\EasyNotification\Config\CacheConfigFinder` to decorate the default config finder service and cache the found config.

The `EonX\EasyNotification\Config\CacheConfigFinder` implementation relies on the [Symfony Cache Component](https://symfony.com/doc/current/components/cache.html) so you will need to make sure it is installed in your project.

See how to override the config caching within your framework of choice section.

### Usage

[](#usage)

Once configured this package will fetch the required configuration from the EonX Notification service and register a `EonX\EasyNotification\Client\NotificationClientInterface` service into your DI container. You can then inject this client into your own classes and send notifications:

```
// src/Listener/UserCreatedListener.php

namespace App\Listener;

use App\Entity\User;
use EonX\EasyNotification\Client\NotificationClientInterface;
use EonX\EasyNotification\Message\RealTimeMessage;
use EonX\EasyNotification\Provider\ConfigProviderInterface;

final class UserCreatedListener
{
    /**
     * @var \EonX\EasyNotification\Provider\ConfigProviderInterface
     */
    private $configFinder;

    /**
     * @var \EonX\EasyNotification\Client\NotificationClientInterface
     */
    private $client;

    public function __construct(ConfigProviderInterface $configFinder, NotificationClientInterface $client)
    {
        $this->configFinder = $configFinder;
        $this->client = $client;
    }

    public function created(User $user): void
    {
        /**
         * In real use case, those values should come from configuration.
         *
         * For multi-tenancies application, it is a best practice to store those values against each tenancy.
         */
        $config = $this->configFinder->provide('my-api-key', 'my-provider-external-id');

        /**
         * Topics are "channels" to send notifications to.
         * Every clients subscribing to any of the topics will then receive the notification.
         */
        $topics = [$user->getExternalId()]; // Good practice is to have 1 topic per user

        /**
         * Body is the notification contents each client will receive.
         * Its structure is completely up to the application but should negotiated with subscribers.
         */
        $body = [
            'title' => 'Welcome!',
            'body' => \sprintf('We are to have you onboard %s', $user->getUsername()),
        ];

        $this->client
             ->withConfig($config) // Set config for next send
             ->send(RealTimeMessage::create($body, $topics)); // Send real time message
    }
}
```

###  Health Score

62

—

FairBetter than 99% of packages

Maintenance89

Actively maintained with recent releases

Popularity38

Limited adoption so far

Community16

Small or concentrated contributor base

Maturity87

Battle-tested with a long release history

 Bus Factor1

Top contributor holds 71.3% 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 ~4 days

Total

455

Last Release

54d ago

Major Versions

4.5.4 → 5.6.102023-11-23

4.5.5 → 5.6.112023-11-26

5.13.1 → 6.0.02024-08-15

4.5.6 → 6.0.12024-09-24

4.x-dev → 6.8.02025-02-25

PHP version history (5 changes)v2.4.25PHP ^7.1

v2.5.0PHP ^7.2

3.4.0PHP ^7.2 || ^8.0

4.0.1PHP ^8.1

6.0.0PHP ^8.2

### Community

Maintainers

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

---

Top Contributors

[![natepage](https://avatars.githubusercontent.com/u/11576446?v=4)](https://github.com/natepage "natepage (573 commits)")[![roman-eonx](https://avatars.githubusercontent.com/u/48544017?v=4)](https://github.com/roman-eonx "roman-eonx (158 commits)")[![alexndlm](https://avatars.githubusercontent.com/u/6824784?v=4)](https://github.com/alexndlm "alexndlm (37 commits)")[![itorgov](https://avatars.githubusercontent.com/u/1703419?v=4)](https://github.com/itorgov "itorgov (25 commits)")[![TomasVotruba](https://avatars.githubusercontent.com/u/924196?v=4)](https://github.com/TomasVotruba "TomasVotruba (5 commits)")[![BOB41K1987](https://avatars.githubusercontent.com/u/20467102?v=4)](https://github.com/BOB41K1987 "BOB41K1987 (2 commits)")[![voodooism](https://avatars.githubusercontent.com/u/31572316?v=4)](https://github.com/voodooism "voodooism (1 commits)")[![DKeeper](https://avatars.githubusercontent.com/u/1589751?v=4)](https://github.com/DKeeper "DKeeper (1 commits)")[![ERuban](https://avatars.githubusercontent.com/u/13186130?v=4)](https://github.com/ERuban "ERuban (1 commits)")[![alexandrtspl](https://avatars.githubusercontent.com/u/90907144?v=4)](https://github.com/alexandrtspl "alexandrtspl (1 commits)")

###  Code Quality

TestsPHPUnit

### Embed Badge

![Health badge](/badges/eonx-com-easy-notification/health.svg)

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

###  Alternatives

[shopware/platform

The Shopware e-commerce core

3.3k1.5M3](/packages/shopware-platform)[sylius/sylius

E-Commerce platform for PHP, based on Symfony framework.

8.4k5.6M651](/packages/sylius-sylius)[sulu/sulu

Core framework that implements the functionality of the Sulu content management system

1.3k1.3M152](/packages/sulu-sulu)[contao/core-bundle

Contao Open Source CMS

1231.6M2.4k](/packages/contao-core-bundle)[shopware/core

Shopware platform is the core for all Shopware ecommerce products.

595.2M386](/packages/shopware-core)[simplesamlphp/simplesamlphp

A PHP implementation of a SAML 2.0 service provider and identity provider.

1.1k12.4M193](/packages/simplesamlphp-simplesamlphp)

PHPackages © 2026

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