1.1.0 2018-01-08 08:24 UTC


Latest Version on Packagist Software License Build Status StyleCI SensioLabsInsight Quality Score Code Coverage Total Downloads

This package makes it easy to send OneSignal notifications with Laravel 5.3+.



You can install the package via composer:

$ composer require laravel-notification-channels/onesignal

If you're installing the package in Laravel 5.4 or lower, you must import the service provider:

// config/app.php
'providers' => [

Setting up your OneSignal account

Add your OneSignal App ID and REST API Key to your config/services.php:

// config/services.php
'onesignal' => [
    'app_id' => env('ONESIGNAL_APP_ID'),
    'rest_api_key' => env('ONESIGNAL_REST_API_KEY')


Now you can use the channel in your via() method inside the notification:

use NotificationChannels\OneSignal\OneSignalChannel;
use NotificationChannels\OneSignal\OneSignalMessage;
use NotificationChannels\OneSignal\OneSignalWebButton;
use Illuminate\Notifications\Notification;

class AccountApproved extends Notification
    public function via($notifiable)
        return [OneSignalChannel::class];

    public function toOneSignal($notifiable)
        return OneSignalMessage::create()
            ->subject("Your {$notifiable->service} account was approved!")
            ->body("Click here to see details.")
                    ->text('Click here')

In order to let your Notification know which OneSignal user(s) you are targeting, add the routeNotificationForOneSignal method to your Notifiable model.

You can either return a single player-id, or if you want to notify multiple player IDs just return an array containing all IDs.

public function routeNotificationForOneSignal()
    return 'ONE_SIGNAL_PLAYER_ID';

If you want to send the notification based on the OneSignal "syncHashedEmail" feature just return an array with the index "email". It isn't possible to use multiple E-Mails on one filter because of a limitation of the OneSignal API.

public function routeNotificationForOneSignal()
    return ['email' => 'example@example.com'];

All available methods

  • subject(''): Accepts a string value for the title.
  • body(''): Accepts a string value for the notification body.
  • icon(''): Accepts an url for the icon.
  • url(''): Accepts an url for the notification click event.
  • webButton(OneSignalWebButton $button): Allows you to add action buttons to the notification (Chrome 48+ (web push) only).
  • button(OneSignalButton $button): Allows you to add buttons to the notification (Supported by iOS 8.0 and Android 4.1+ devices. Icon only works for Android).
  • setData($key, $value): Allows you to set additional data for the message payload. For more information check the OneSignal documentation.
  • setParameter($key, $value): Allows you to set additional parameters for the message payload that are available for the REST API. For more information check the OneSignal documentation.
  • setImageAttachments($imageUrl): Allows you to set one Image to all possible Attachments OneSignal Attachment documentation.

Button usage

            ->text('button text')
            ->icon('button icon')

WebButton usage

            ->text('button text')
            ->icon('button icon')
            ->url('button url')


Please see CHANGELOG for more information what has changed recently.


$ composer test


If you discover any security related issues, please email m.pociot@gmail.com instead of using the issue tracker.


Please see CONTRIBUTING for details.



The MIT License (MIT). Please see License File for more information.