PHPackages                             vtmdev/onesignal-laravel - 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. [Utility &amp; Helpers](/categories/utility)
4. /
5. vtmdev/onesignal-laravel

ActiveLibrary[Utility &amp; Helpers](/categories/utility)

vtmdev/onesignal-laravel
========================

OneSignal Push Wrapper Laravel

02.1kPHP

Since Feb 18Pushed 3y ago1 watchersCompare

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

READMEChangelogDependenciesVersions (1)Used By (0)

OneSignal Push Notifications for Laravel
========================================

[](#onesignal-push-notifications-for-laravel)

[![Latest Stable Version](https://camo.githubusercontent.com/9a97e2908137a33dc8ce3989ef6903f48a9d53bbf847d3eb1cb44e81c92e2255/68747470733a2f2f706f7365722e707567782e6f72672f6265726b61796b2f6f6e657369676e616c2d6c61726176656c2f762f737461626c65)](https://packagist.org/packages/vtmdev/onesignal-laravel)[![Total Downloads](https://camo.githubusercontent.com/5ec33568c8e26a3a8967c732cd55f7f433e4d19bdf3878004eacb5c8429f03ed/68747470733a2f2f706f7365722e707567782e6f72672f6265726b61796b2f6f6e657369676e616c2d6c61726176656c2f646f776e6c6f616473)](https://packagist.org/packages/vtmdev/onesignal-laravel)[![License](https://camo.githubusercontent.com/2e05dbd81b9967239fe69a557ab792cc1de09efdfe42e0aa18ebb35781561260/68747470733a2f2f706f7365722e707567782e6f72672f6265726b61796b2f6f6e657369676e616c2d6c61726176656c2f6c6963656e7365)](https://packagist.org/packages/vtmdev/onesignal-laravel)

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

[](#introduction)

This is a simple OneSignal wrapper library for Laravel. It simplifies the basic notification flow with the defined methods. You can send a message to all users or you can notify a single user. Before you start installing this service, please complete your OneSignal setup at  and finish all the steps that is necessary to obtain an application id and REST API Keys.

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

[](#installation)

First, you'll need to require the package with Composer:

```
composer require vtmdev/onesignal-laravel
```

Afterwards, run `composer update` from your command line.

**You only need to do the following if your Laravel version is below 5.5**:

Then, update `config/app.php` by adding an entry for the service provider.

```
'providers' => [
	// ...
	Berkayk\OneSignal\OneSignalServiceProvider::class
];
```

Then, register class alias by adding an entry in aliases section

```
'aliases' => [
	// ...
	'OneSignal' => Berkayk\OneSignal\OneSignalFacade::class
];
```

Finally, from the command line again, run

```
php artisan vendor:publish --provider="Berkayk\OneSignal\OneSignalServiceProvider" --tag="config"

```

to publish the default configuration file. This will publish a configuration file named `onesignal.php` which includes your OneSignal authorization keys.

> **Note:** If the previous command does not publish the config file successfully, please check the steps involving *providers* and *aliases* in the `config/app.php` file.

Configuration
-------------

[](#configuration)

You need to fill in your OneSignal *App ID* and *REST API Key* inside your .env file like this:

```
ONESIGNAL_APP_ID=xxxxxxxxxxxxxxxxxxxx
ONESIGNAL_REST_API_KEY=xxxxxxxxxxxxxxxxxx

```

You can control timeout of the Guzzle client used by OneSignalClient by adding following into your .env file

```
ONESIGNAL_GUZZLE_CLIENT_TIMEOUT=integer_value

```

This param is useful when you are planning to send push notification via [Laravel queues](https://divinglaravel.com/always-set-a-timeout-for-guzzle-requests-inside-a-queued-job)

Usage
-----

[](#usage)

### Sending a Notification To All Users

[](#sending-a-notification-to-all-users)

You can easily send a message to all registered users with the command

```
    OneSignal::sendNotificationToAll(
        "Some Message",
        $url = null,
        $data = null,
        $buttons = null,
        $schedule = null
    );
```

`$url` , `$data` , `$buttons` and `$schedule` fields are exceptional. If you provide a `$url` parameter, users will be redirecting to that url.

### Sending a Notification based on Tags/Filters

[](#sending-a-notification-based-on-tagsfilters)

You can send a message based on a set of tags with the command

##### Example 1:

[](#example-1)

```
    OneSignal::sendNotificationUsingTags(
        "Some Message",
        array(
            ["field" => "tag", "key" => "email", "relation" => "=", "value" => "email21@example.com"],
            ["field" => "tag", "key" => "email", "relation" => "=", "value" => "email1@example.com"],
            ...
        ),
        $url = null,
        $data = null,
        $buttons = null,
        $schedule = null
    );
```

##### Example 2:

[](#example-2)

```
    OneSignal::sendNotificationUsingTags(
        "Some Message",
        array(
            ["field" => "tag", "key" => "session_count", "relation" => ">", "value" => '2'],
            ["field" => "tag", "key" => "first_session", "relation" => ">", "value" => '2000'],
        ),
        $url = null,
        $data = null,
        $buttons = null,
        $schedule = null
    );
```

### Sending a Notification To A Specific User

[](#sending-a-notification-to-a-specific-user)

After storing a user's tokens in a table, you can simply send a message with

```
    OneSignal::sendNotificationToUser(
        "Some Message",
        $userId,
        $url = null,
        $data = null,
        $buttons = null,
        $schedule = null
    );
```

`$userId` is the user's unique id where he/she is registered for notifications. Read  for additional details. `$url` , `$data` , `$buttons` and `$schedule` fields are exceptional. If you provide a `$url` parameter, users will be redirecting to that url.

### Sending a Notification To A Specific external User (custom user id added by user)

[](#sending-a-notification-to-a-specific-external-user-custom-user-id-added-by-user)

After storing a user's tokens in a table, you can simply send a message with

```
    OneSignal::sendNotificationToExternalUser(
        "Some Message",
        $userId,
        $url = null,
        $data = null,
        $buttons = null,
        $schedule = null
    );
```

`$userId` is the user's unique external id (custom id) added by the user where he/she is registered for notifications. Read  for additional details. `$url` , `$data` , `$buttons` and `$schedule` fields are exceptional. If you provide a `$url` parameter, users will be redirecting to that url.

### Sending a Notification To Segment

[](#sending-a-notification-to-segment)

You can simply send a notification to a specific segment with

```
    OneSignal::sendNotificationToSegment(
        "Some Message",
        $segment,
        $url = null,
        $data = null,
        $buttons = null,
        $schedule = null
    );
```

`$url` , `$data` , `$buttons` and `$schedule` fields are exceptional. If you provide a `$url` parameter, users will be redirecting to that url.

### Sending a Custom Notification

[](#sending-a-custom-notification)

You can send a custom message with

```
    OneSignal::sendNotificationCustom($parameters);
```

### Sending a async Custom Notification

[](#sending-a-async-custom-notification)

You can send a async custom message with

```
    OneSignal::async()->sendNotificationCustom($parameters);
```

Please refer to  for all customizable parameters.

Examples
--------

[](#examples)

Some people found examples confusing, so I am going to provide some detailed examples that I use in my applications. These examples will probably guide you on customizing your notifications. For custom parameters, please refer to .

### 1) Sending a message to a segment with custom icon and custom icon color

[](#1-sending-a-message-to-a-segment-with-custom-icon-and-custom-icon-color)

You need to customize `android_accent_color` and `small_icon` values before sending your notifications. These are `parameters` that you need to specify while sending your notifications.

```
use OneSignal;

$params = [];
$params['android_accent_color'] = 'FFCCAA72'; // argb color value
$params['small_icon'] = 'ic_stat_distriqt_default'; // icon res name specified in your app

$message = "Test message to send";
$segment = "Testers";
OneSignal::addParams($params)->sendNotificationToSegment(
                $message,
                $segment
            );

// or to all users
OneSignal::addParams($params)->sendNotificationToAll($message);
```

### 2. Sending a message with high priority

[](#2-sending-a-message-with-high-priority)

This time, we will specify parameters one by one.

```
use OneSignal;

$message = "Test message to send";
$segment = "Testers";
OneSignal::setParam('priority', 10)->sendNotificationToSegment(
                $message,
                $segment
            );

// You can chain as many parameters as you wish

OneSignal::setParam('priority', 10)->setParam('small_icon', 'ic_stat_onesignal_default')->setParam('led_color', 'FFAACCAA')->sendNotificationToAll($message);
```

### 3. Sending a message with custom heading and subtitle

[](#3-sending-a-message-with-custom-heading-and-subtitle)

```
use OneSignal;

OneSignal::sendNotificationToSegment(
                "Test message with custom heading and subtitle",
                "Testers",
                null, null, null, null,
                "Custom Heading",
                "Custom subtitle"
            );
```

### 4. Sending a delayed message to a specific user with many custom parameters

[](#4-sending-a-delayed-message-to-a-specific-user-with-many-custom-parameters)

```
use OneSignal;

$userId = "3232331-1722-4fee-943d-23123asda123";
$params = [];
$params['include_player_ids'] = [$userId];
$contents = [
   "en" => "Some English Message",
   "tr" => "Some Turkish Message"
];
$params['contents'] = $contents;
$params['delayed_option'] = "timezone"; // Will deliver on user's timezone
$params['delivery_time_of_day'] = "2:30PM"; // Delivery time

OneSignal::sendNotificationCustom($params);
```

###  Health Score

17

—

LowBetter than 6% of packages

Maintenance20

Infrequent updates — may be unmaintained

Popularity15

Limited adoption so far

Community7

Small or concentrated contributor base

Maturity22

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://www.gravatar.com/avatar/a67285608df718461714cb32ea23c99007792b1da35b9de2a84684920bcab0e2?d=identicon)[MatnSoftware](/maintainers/MatnSoftware)

---

Top Contributors

[![VantomDeveloper](https://avatars.githubusercontent.com/u/46342029?v=4)](https://github.com/VantomDeveloper "VantomDeveloper (2 commits)")

### Embed Badge

![Health badge](/badges/vtmdev-onesignal-laravel/health.svg)

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

###  Alternatives

[cloudxns/cloud-xns-api-sdk-php

CloudXNS SDK FILES

2283.2k](/packages/cloudxns-cloud-xns-api-sdk-php)[omnilight/yii2-sypexgeo

Yii2 extension for Sypex Geo API (http://sypexgeo.net)

17102.0k](/packages/omnilight-yii2-sypexgeo)

PHPackages © 2026

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