Send SMS, WhatsApp, Viber and Facebook Messenger messages via Nexmo

0.2.1 2018-12-12 15:51 UTC

This package is auto-updated.

Last update: 2024-05-29 04:21:40 UTC


Nexmo is now known as Vonage

Although Nexmo is available in Laravel as the default SMS provider, the next generation of Nexmo APIs will offer more communication channels. This package adds the ability to send notifications to WhatsApp, Facebook Messenger and Viber via Nexmo.

Note that the Messages API that this package uses has not yet had its stable release so both the API and this library are subject to change


To use this package, run composer require nexmo/laravel-notification. Once it completes, you can implement the following methods on your notification:

  • toNexmoWhatsApp
  • toNexmoFacebook
  • toNexmoViberServiceMessage
  • toNexmoSms

See examples/Notification/MerryChristmas.php for a complete example.

To send a notification, specify the channel you'd like to use:

// To a user
$user->notify(new \App\Notifications\MerryChristmas());

// To any person
)->notify(new \App\Notifications\MerryChristmas());

The available channels are:

  • nexmo-sms
  • nexmo-whatsapp
  • nexmo-facebook
  • nexmo-viber_service_msg

As each notification receives a $notifiable (usually a user) it can decide how best to route the information. In this case, it checks the via_whatsapp property on the user and sends via WhatsApp if it's true. Otherwise it falls back to email

public function via($notifiable)
    return $notifiable->via_whatsapp ? ['nexmo-whatsapp'] : ['mail'];

Message Types

Nexmo supports multiple message types, depending on the channel that you're sending to. The Text type is the safest if you want to deliver to all channels:

public function toNexmoWhatsApp($notifiable)
    return (new \Nexmo\Notifications\Message\Text)
        ->content('This is a message being sent to WhatsApp');


For some channels you need to send a templated message before you can send a free text message due to spam control rules. Here's an example of how to use a preapproved template intended for two-factor authentication purposes:

public function toNexmoWhatsApp($notifiable)
    return (new \Nexmo\Notifications\Message\Template)
            ["default" => "Your Brand"],
            ["default" => "64873"],
            ["default" => "10"],

If the recipient replies to your message, you can send them Text type messages without any issues



This notifications package is built on top of nexmo/laravel and uses the Nexmo client from there.

For this to work, you need to set your application ID and path to your private key in the .env file:


Setting the from address

You can set a from address via the .env file. This package will look for provider specific entries before falling back to NEXMO_FROM.

NEXMO_FROM="" # This is the default if any of the above aren't set

Alternatively, you can set a from address for a single notification by calling the ->from() method on a message:

public function toNexmoViberServiceMessage($notifiable)
    return (new Text)->content('Merry Christmas Viber!')->from("YOUR_ID");