PHPackages                             ibrahem-kamal/omni-messaging - 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. ibrahem-kamal/omni-messaging

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

ibrahem-kamal/omni-messaging
============================

An easy to use, consistent sms library for Laravel

2.2.0(2y ago)0897[1 PRs](https://github.com/ibrahem-kamal/omni-messaging/pulls)1MITPHPPHP ^8.2|^8.3

Since Jan 29Pushed 1y ago1 watchersCompare

[ Source](https://github.com/ibrahem-kamal/omni-messaging)[ Packagist](https://packagist.org/packages/ibrahem-kamal/omni-messaging)[ Docs](https://github.com/ibrahem-kamal/omni-messaging)[ GitHub Sponsors](https://github.com/ibrahemkamal)[ RSS](/packages/ibrahem-kamal-omni-messaging/feed)WikiDiscussions main Synced 2d ago

READMEChangelog (6)Dependencies (13)Versions (9)Used By (1)

Omni Messaging
==============

[](#omni-messaging)

---

**An easy to use, consistent sms library for Laravel**

[![Latest Version on Packagist](https://camo.githubusercontent.com/4d7679d4e436485b335d90c1b8fbb8cce62388896076e40014612a54229d90aa/68747470733a2f2f696d672e736869656c64732e696f2f7061636b61676973742f762f6962726168656d2d6b616d616c2f6f6d6e692d6d6573736167696e672e7376673f7374796c653d666c61742d737175617265)](https://packagist.org/packages/ibrahem-kamal/omni-messaging)[![GitHub Tests Action Status](https://camo.githubusercontent.com/92888d5a08c309950850227b4f775d20bf5bd06bc2204d7c70975f5e3e0bd49f/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f616374696f6e732f776f726b666c6f772f7374617475732f6962726168656d2d6b616d616c2f6f6d6e692d6d6573736167696e672f72756e2d74657374732e796d6c3f6272616e63683d6d61696e266c6162656c3d7465737473267374796c653d666c61742d737175617265)](https://github.com/ibrahem-kamal/omni-messaging/actions?query=workflow%3Arun-tests+branch%3Amain)[![GitHub Code Style Action Status](https://camo.githubusercontent.com/613e24c3827a53ec174ce35ba96663a3434403244662446270da9da205d0d2b4/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f616374696f6e732f776f726b666c6f772f7374617475732f6962726168656d2d6b616d616c2f6f6d6e692d6d6573736167696e672f6669782d7068702d636f64652d7374796c652d6973737565732e796d6c3f6272616e63683d6d61696e266c6162656c3d636f64652532307374796c65267374796c653d666c61742d737175617265)](https://github.com/ibrahem-kamal/omni-messaging/actions?query=workflow%3A%22Fix+PHP+code+style+issues%22+branch%3Amain)[![Total Downloads](https://camo.githubusercontent.com/930c6be53e67bbe285ba677d92739df252f1af31ed5631338f1130bdebd3c2e2/68747470733a2f2f696d672e736869656c64732e696f2f7061636b61676973742f64742f6962726168656d2d6b616d616c2f6f6d6e692d6d6573736167696e672e7376673f7374796c653d666c61742d737175617265)](https://packagist.org/packages/ibrahem-kamal/omni-messaging)

Omni messaging is heavily inspired by the PHP OmniPay Library and is designed to be a simple and consistent interface for sending SMS messages in Laravel.

there are many SMS gateways out there, and they all have their own API's, and they all have their own way of doing things. Omni Messaging is designed to provide a consistent interface for sending SMS messages, regardless of the gateway you are using.

Currently supported gateways are (Many more will be added in the future either by me or the community):

Sms Gateway1.xComposer PackageMaintainer[Jawaly Sms](https://www.4jawaly.com/)✓ibrahem-kamal/omni-messaging-jawaly-sms-driver[Ibrahem Kamal](https://github.com/ibrahem-kamal)Installation
------------

[](#installation)

You can install the package via composer:

```
composer require ibrahem-kamal/omni-messaging
```

You can publish and run the migrations with:

```
php artisan vendor:publish --tag="omni-messaging-migrations"
```

You can publish the config file with:

```
php artisan vendor:publish --tag="omni-messaging-config"
```

This is the contents of the published config file:

```
return [
    /**
     * Channels should be added in the following format:
     * 'channels' => [
     *     'channel_name' => [
     *        'driver' => 'driver_name',
     *       'options' => []
     *    ]
     * ]
     */
    'channels' => [],
    'webhook' => [
        'queue' => 'default',
    ],
];
```

Usage
-----

[](#usage)

- Sending Sms

```
$sms = OmniMessaging::driver('jawaly')->send($message,$mobileNumber,$sender,$options = []);
    $sms->isSuccess(); //bool
    $sms->getErrorsString(); // errors as string
    $sms->getErrors(); // errors as array
    $sms->getData(); // array of data returned from the gateway
    $sms->toArray(); // array of all the above
```

- Retrieving Balance

```
$balance = OmniMessaging::driver('jawaly')->getBalance();
    $balance->isSuccess(); //bool
    $balance->getErrorsString(); // errors as string
    $balance->getErrors(); // errors as array
    $balance->getData(); // array of data returned from the gateway
    $balance->toArray(); // array of all the above
```

- Handling Sms Webhooks

> by default this package will handle the incoming sms webhooks using the gateway logic and dispatch an event `OmniMessagingWebhookUpdateEvent` with the `parsedWebhookData` as payload. so for example to listen to incoming sms you can do the following:

```
// in your event service provider
     OmniMessagingWebhookUpdateEvent::class => [
            YourListener::class,
        ]
```

> and within your listener you can access the parsed data as follows:

```
    public function handle(OmniMessagingWebhookUpdateEvent $event)
    {
          foreach ($event->parsedWebhookData as $parsedNumber) {
            $parsedNumber->getNumber(); // phone number string
            $parsedNumber->getFrom(); // sender string
            $parsedNumber->getReference(); // reference string such as message id
            $parsedNumber->isSuccess(); // bool
            $parsedNumber->getError(); // string
            $parsedNumber->toArray(); // array of all the above
        }
    }
```

Testing
-------

[](#testing)

```
composer test
```

Changelog
---------

[](#changelog)

Please see [CHANGELOG](CHANGELOG.md) for more information on what has changed recently.

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

[](#contributing)

Please see [CONTRIBUTING](CONTRIBUTING.md) for details.

Security Vulnerabilities
------------------------

[](#security-vulnerabilities)

Please review [our security policy](../../security/policy) on how to report security vulnerabilities.

Credits
-------

[](#credits)

- [ibrahemkamal](https://github.com/ibrahem-kamal)
- [All Contributors](../../contributors)

License
-------

[](#license)

The MIT License (MIT). Please see [License File](LICENSE.md) for more information.

Roadmap
-------

[](#roadmap)

\[❌\] Create Log Driver for local development

\[❌\] Create Twilio Driver

###  Health Score

31

—

LowBetter than 66% of packages

Maintenance26

Infrequent updates — may be unmaintained

Popularity14

Limited adoption so far

Community13

Small or concentrated contributor base

Maturity62

Established project with proven stability

 Bus Factor1

Top contributor holds 93.5% 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 ~14 days

Total

6

Last Release

812d ago

Major Versions

1.0.1 → 2.02024-02-05

PHP version history (3 changes)1.0.0PHP ^8.1

2.0.1PHP ^8.2

2.2.0PHP ^8.2|^8.3

### Community

Maintainers

![](https://avatars.githubusercontent.com/u/38753243?v=4)[Ibrahem Kamal](/maintainers/ibrahem-kamal)[@ibrahem-kamal](https://github.com/ibrahem-kamal)

---

Top Contributors

[![ibrahem-kamal](https://avatars.githubusercontent.com/u/38753243?v=4)](https://github.com/ibrahem-kamal "ibrahem-kamal (43 commits)")[![dependabot[bot]](https://avatars.githubusercontent.com/in/29110?v=4)](https://github.com/dependabot[bot] "dependabot[bot] (2 commits)")[![github-actions[bot]](https://avatars.githubusercontent.com/in/15368?v=4)](https://github.com/github-actions[bot] "github-actions[bot] (1 commits)")

---

Tags

laravelibrahemkamalomni-messaging

###  Code Quality

TestsPest

Static AnalysisPHPStan

Code StyleLaravel Pint

### Embed Badge

![Health badge](/badges/ibrahem-kamal-omni-messaging/health.svg)

```
[![Health](https://phpackages.com/badges/ibrahem-kamal-omni-messaging/health.svg)](https://phpackages.com/packages/ibrahem-kamal-omni-messaging)
```

###  Alternatives

[spatie/laravel-permission

Permission handling for Laravel 12 and up

12.9k102.4M1.4k](/packages/spatie-laravel-permission)[spatie/laravel-pdf

Create PDFs in Laravel apps

1.0k4.8M47](/packages/spatie-laravel-pdf)[dedoc/scramble

Automatic generation of API documentation for Laravel applications.

2.1k11.2M101](/packages/dedoc-scramble)[vormkracht10/laravel-mails

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

24857.5k](/packages/vormkracht10-laravel-mails)[spatie/laravel-passkeys

Use passkeys in your Laravel app

471890.7k39](/packages/spatie-laravel-passkeys)[rawilk/profile-filament-plugin

Profile &amp; MFA starter kit for filament.

3914.6k](/packages/rawilk-profile-filament-plugin)

PHPackages © 2026

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