PHPackages                             jorgenwdm/laravel-beak - 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. jorgenwdm/laravel-beak

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

jorgenwdm/laravel-beak
======================

A Laravel package that implements bulk messaging using your favorite bulk messaging provider

00PHP

Since Nov 24Pushed 4y ago1 watchersCompare

[ Source](https://github.com/jorgenwdm/laravel-beak)[ Packagist](https://packagist.org/packages/jorgenwdm/laravel-beak)[ RSS](/packages/jorgenwdm-laravel-beak/feed)WikiDiscussions main Synced 1mo ago

READMEChangelogDependenciesVersions (1)Used By (0)

[![Laravel Beak Logo](art/github-banner.jpg)](art/github-banner.jpg)

 [Requirements](#requirements) | [Installation](#installation) | [How to send a message](#how-to-send-a-message) | [How to get a delivery report](#how-to-get-a-delivery-report)

---

Laravel Beak bulk sms messaging system
======================================

[](#laravel-beak-bulk-sms-messaging-system)

Introduction
------------

[](#introduction)

This project implements all the necessary functionality for sending single or multiple messages, as well as retrieving the reports eg. message status, account balance etc. a developer will need.

This project was built exclusively for the [Laravel](https://laravel.com) platform.

At the moment, this project operates using smscanal.com bulk sms provider but there is an interface built that can help you develop additional modules for other providers as well.

Requirements
------------

[](#requirements)

- PHP &gt;= 8.0
- Laravel &gt;= 8.6.6

Installation
------------

[](#installation)

Installation is pretty easy.

First you install the package

```
composer require jorgenwdm/laravel-beak
```

Then you can publish the configuration file of this package.

```
php artisan vendor:publish --provider="Jorgenwdm\Beak\BeakServiceProvider"
```

Note: Our configuration file is `laravel-beak.php` and you will find it in your Laravel `config` folder.

Inside the configuration file `laravel-beak.php`, you can fill the appropriate lines with the the credentials given to you by your provider. For example:

```
    /*
    |--------------------------------------------------------------------------
    | Settings for provider Canal (smscanal.com)
    |--------------------------------------------------------------------------
    |
    | Here we define the credentials given to us by the provider
    | Note: Keep in mind that you can use the respective env keys in capitals in your .env file
    |
    */

    'canal_api_url' => env('BEAK_CANAL_API_URL', 'http://messaging.smscanal.com/sms'),
    'canal_api_user' => env('BEAK_CANAL_API_USER', ''),
    'canal_api_password' => env('BEAK_CANAL_API_PASSWORD', ''),
    'canal_api_sender' => env('BEAK_CANAL_API_SENDER', ''),
```

And we are ready to go!

How to send a message
---------------------

[](#how-to-send-a-message)

The way to send an sms is quite simple. You initialize the service you want eg. CanalSmsMessage, fill it with the parameters from, to, text and trigger the sending process.

We can use three formatting methods: `from()`, `to()`, `text()` in order to compose our message.

And then we can use `send()` to trigger the sending proccess.

```
    use Jorgenwdm\Beak\Messengers\CanalSmsMessage;

    $message = new CanalSmsMessage();
    $message->from('DEMOSENDER')->to('306942931111')->text("HELLO WORLD")->send();
```

Important note: Some sms providers don't want the + sign before the international phone number.

The sending process returns an object that we call response object.

Some important methods and properties that the response object has are: `hasException`, `getJson()`, `getException()`, `getRaw()`

```
    use Jorgenwdm\Beak\Messengers\CanalSmsMessage;

    $message = new CanalSmsMessage();
    $result = $message->from('DEMOSENDER')->to('306942931111')->text("HELLO WORLD")->send();

    if( !$result->hasException )
    {

        // we read the data of the result as a json object
        $json = $result->getJson();

        // now based on the documentation of the provider, we present our results
        if( !isset($json->error) )
            echo 'Your message was sent to ' . $json->sms->{'mobile-no'};
        else
            echo 'Your message was not sent. API returned error: ' . $json->error->{'error-description'};

    }
    else
    {

        // inform the user about the exception
        echo 'An exception happened: ' . $result->getException()->getMessage();

    }
```

How to get a delivery report
----------------------------

[](#how-to-get-a-delivery-report)

The way to retrieve a delivery report is quite simple and resembles a lot to the message sending process.

You initialize the service you want eg. CanalSmsReport, fill it with the parameters `for` and then trigger the delivery report request process.

```
    use \Jorgenwdm\Beak\Reporters\CanalSmsReport;

    $report = new CanalSmsReport();
    $result = $report->for(["825252128"])->request();

    if(!$result->hasException)
    {

        // we read the data of the result as a json object
        $json = $result->getJson();

        // now based on the documentation of the provider, we present our results
        echo "Report Code: " . $json->responsecode . "";
        echo "Report Description: " . $json->resposedescription . "";

    }
    else
    {

         // inform the user about the exception
        echo 'An exception happened: ' . $result->getException()->getMessage();

    }
```

License
-------

[](#license)

This project is open-sourced software licensed under the [MIT license](https://opensource.org/licenses/MIT).

###  Health Score

14

—

LowBetter than 2% of packages

Maintenance20

Infrequent updates — may be unmaintained

Popularity0

Limited adoption so far

Community7

Small or concentrated contributor base

Maturity28

Early-stage or recently created project

 Bus Factor1

Top contributor holds 100% 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.

### Community

Maintainers

![](https://avatars.githubusercontent.com/u/12896726?v=4)[jorgenwdm](/maintainers/jorgenwdm)[@jorgenwdm](https://github.com/jorgenwdm)

---

Top Contributors

[![jorgenwdm](https://avatars.githubusercontent.com/u/12896726?v=4)](https://github.com/jorgenwdm "jorgenwdm (3 commits)")

### Embed Badge

![Health badge](/badges/jorgenwdm-laravel-beak/health.svg)

```
[![Health](https://phpackages.com/badges/jorgenwdm-laravel-beak/health.svg)](https://phpackages.com/packages/jorgenwdm-laravel-beak)
```

###  Alternatives

[tijsverkoyen/css-to-inline-styles

CssToInlineStyles is a class that enables you to convert HTML-pages/files into HTML-pages/files with inline styles. This is very useful when you're sending emails.

5.8k505.3M227](/packages/tijsverkoyen-css-to-inline-styles)[minishlink/web-push

Web Push library for PHP

1.9k12.0M53](/packages/minishlink-web-push)[laravel-notification-channels/twilio

Provides Twilio notification channel for Laravel

2587.7M12](/packages/laravel-notification-channels-twilio)[spatie/url-signer

Generate a url with an expiration date and signature to prevent unauthorized access

4422.3M16](/packages/spatie-url-signer)[mattketmo/email-checker

Throwaway email detection library

2742.0M5](/packages/mattketmo-email-checker)[laravel-notification-channels/discord

Laravel notification driver for Discord.

2371.3M11](/packages/laravel-notification-channels-discord)

PHPackages © 2026

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