Plugins
Alerts Sender
Send notifications to users using notification templates and multi-notification channels
Developer Tool
Dark theme support
Yes
Multi language support
Yes
Compatible with the latest version
Supported versions: 3.x
Documentation

Screenshot

Latest Stable Version License Downloads

Send notification to users using notification templates and multi notification channels, it's support Filament Native Notification Service with macro, and a full integration to FCM service worker notifications

#Features

  • Send Notification to users
  • Use Filament Native Notification
  • Use Notification Templates
  • Full FCM Service Worker Integration
  • Use Multiple Notification Channels
  • API to get notifications
  • Hide Notifications Resources
  • Use Slack Driver
  • Use Discord Driver
  • Use Reverb Driver
  • Use SMS Misr Driver
  • Use Email Driver
  • Use Database Driver
  • Use MessageBird Driver

#Screenshots

Screenshot Screenshot Screenshot Screenshot

#Installation

before use this package make sure you have installed

composer require tomatophp/filament-alerts

now you need to publish and migrate settings table

php artisan vendor:publish --provider="Spatie\LaravelSettings\LaravelSettingsServiceProvider" --tag="migrations"

after install your package please run this command

php artisan filament-alerts:install

if you are not using this package as a plugin please register the plugin on /app/Providers/Filament/AdminPanelProvider.php

->plugin(\TomatoPHP\FilamentAlerts\FilamentAlertsPlugin::make()
)

#Usage

to set up any model to get notifications you

<?php
 
namespace App\Models;
 
use Illuminate\Contracts\Auth\MustVerifyEmail;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Foundation\Auth\User as Authenticatable;
use Illuminate\Notifications\Notifiable;
use Laravel\Fortify\TwoFactorAuthenticatable;
use Laravel\Jetstream\HasProfilePhoto;
use Laravel\Sanctum\HasApiTokens;
use Spatie\Permission\Traits\HasRoles;
use TomatoPHP\FilamentAlerts\Traits\InteractsWithNotifications;
 
class User extends Authenticatable
{
use HasApiTokens;
use HasFactory;
use HasProfilePhoto;
use Notifiable;
use TwoFactorAuthenticatable;
use HasRoles;
use InteractsWithNotifications;
...

and you must set the settings for FCM to get real-time notification

#Queue

the notification is run on queue, so you must run the queue worker to send the notifications

php artisan queue:work

#Use Filament Native Notification

you can use the filament native notification and we add some macro for you

use Filament\Notifications\Notification;
 
Notification::make('send')
->title('Test Notifications')
->body('This is a test notification')
->icon('heroicon-o-bell')
->color('success')
->actions([
\Filament\Notifications\Actions\Action::make('view')
->label('View')
->url('https://google.com')
->markAsRead()
])
->sendToDiscord(auth()->user())
->sendToEmail(auth()->user())
->broadcast(auth()->user())
->sendToDatabase(auth()->user())
->sendToSlack(auth()->user())
->sendToFCM(auth()->user())

#Notification Service

to create a new template you can use template CRUD and make sure that the template key is unique because you will use it on every single notification.

#Send Notification

to send a notification you must use our helper SendNotification::class like

SendNotification::make($template->providers)
->template($template->key)
->findTitle($matchesTitle)
->replaceTitle($titleFill)
->findBody($matchesBody)
->replaceBody($titleBody)
->model(User::class)
->id(User::first()->id)
->privacy('private')
->fire();

where $template is selected of the template by key and $matchesTitle and $matchesBody is an array of matches to replace the template and $titleFill and $titleBody are an array of values to replace the matches

#Notification Channels

you can use multiple notification channels like

  • Email
  • SMS
  • FCM
  • Reverb
  • Database
  • Slack
  • Discord

it can be working with direct user methods like

$user->notifySMSMisr(string $message);
$user->notifyEmail(string $message, ?string $subject = null, ?string $url = null);
$user->notifyFCMSDK(string $message, string $type='web', ?string $title=null, ?string $url=null, ?string $image=null, ?string $icon=null, ?array $data=[]);
$user->notifyDB(string $message, ?string $title=null, ?string $url =null);
$user->notifySlack(string $title,string $message=null,?string $url=null, ?string $image=null, ?string $webhook=null);
$user->notifyDiscord(string $title,string $message=null,?string $url=null, ?string $image=null, ?string $webhook=null);

#Use FCM Notifications Provider

to make FCM Notification Work you need to install Filament Settings Hub and allow use Setting Hub on the Plugin

->plugin(\TomatoPHP\FilamentAlerts\FilamentAlertsPlugin::make()
->useSettingsHub()
->useFCM()
)

than you need to install filament-fcm package by use this command

composer require tomatophp/filament-fcm

and add the service provider plugin

->plugin(\TomatoPHP\FilamentFcm\FilamentFcmPlugin::make())

now you need to update config

# Firebase Project
FIREBASE_API_KEY=
FIREBASE_AUTH_DOMAIN=
FIREBASE_DATABASE_URL=
FIREBASE_PROJECT_ID=
FIREBASE_STORAGE_BUCKET=
FIREBASE_MESSAGING_SENDER_ID=
FIREBASE_APP_ID=
FIREBASE_MEASUREMENT_ID=
 
# Firebase Cloud Messaging
FIREBASE_VAPID=
 
# Firebase Alert Sound
FCM_ALERT_SOUND=

than run this command

php artisan filament-fcm:install

it will generate FCM worker for you to make notifications working on the background.

#Hide Notifications Resources

to hide the notification resources from the sidebar you can use the plugin method hideNotificationsResources like

->plugin(\TomatoPHP\FilamentAlerts\FilamentAlertsPlugin::make()
->hideNotificationsResources()
)

#Use Slack Driver

to use slack driver you must set the slack webhook on the settings hub and use the plugin method useSlack like

->plugin(\TomatoPHP\FilamentAlerts\FilamentAlertsPlugin::make()
->useSlack()
)

now on your .env file add a SLACK_WEBHOOK key with the webhook URL

#Use Discord Driver

to use discord driver you must set the discord webhook on the settings hub and use the plugin method useDiscord like

->plugin(\TomatoPHP\FilamentAlerts\FilamentAlertsPlugin::make()
->useDiscord()
)

now on your .env file add a DISCORD_WEBHOOK key with the webhook URL

#API

we are support some API to get the notification and make some actions you can find it under api/notifications route

you can change the user model by use the plugin method apiModel like

->plugin(\TomatoPHP\FilamentAlerts\FilamentAlertsPlugin::make()
->apiModel(User::class)
)

#Publish Assets

you can publish config file by use this command

php artisan vendor:publish --tag="filament-alerts-config"

you can publish views file by use this command

php artisan vendor:publish --tag="filament-alerts-views"

you can publish languages file by use this command

php artisan vendor:publish --tag="filament-alerts-lang"

you can publish migrations file by use this command

php artisan vendor:publish --tag="filament-alerts-migrations"

#Other Filament Packages

Checkout our Awesome TomatoPHP

Featured Plugins