Building Cross-Platform Alerts with Laravel's Notification Framework
Last updated on by Harris Raftopoulos
Laravel's notification framework delivers a streamlined approach for broadcasting messages across diverse communication platforms through a single, cohesive API. This system empowers developers to maintain consistent user engagement via email, database storage, and various external services.
The foundation starts with generating a notification class using Artisan:
use Illuminate\Notifications\Notification;use Illuminate\Notifications\Messages\MailMessage; class OrderShipped extends Notification{ protected $order; public function __construct($order) { $this->order = $order; } public function via($notifiable) { return ['mail', 'database']; } public function toMail($notifiable) { return (new MailMessage) ->subject('Your Order Has Shipped') ->greeting('Hello ' . $notifiable->name) ->line('Your order #' . $this->order->number . ' has been shipped.') ->action('Track Package', url('/orders/' . $this->order->id)) ->line('Thank you for your business!'); } public function toArray($notifiable) { return [ 'order_number' => $this->order->number, 'tracking_code' => $this->order->tracking_code, 'shipped_at' => now() ]; }}
Triggering notifications becomes effortless with Laravel's intuitive syntax. Send immediately or delegate to background processing:
$customer->notify(new OrderShipped($order)); Notification::send($customers, new OrderShipped($order));
Consider a comprehensive e-commerce notification service that adapts to business requirements and user preferences:
class OrderNotificationService{ public function processShipmentUpdate($order) { $notification = new OrderShipped($order); $order->customer->notify($notification); if ($order->total_amount > 500) { $managers = User::where('role', 'manager')->get(); Notification::send($managers, new HighValueShipment($order)); } } public function sendWelcomeSequence($user) { $user->notify(new WelcomeNotification($user)); $user->notify( (new GettingStartedTips($user))->delay(now()->addHours(2)) ); } public function alertSystemMaintenance($maintenance) { $activeUsers = User::where('last_seen', '>=', now()->subDays(3))->get(); Notification::send($activeUsers, new MaintenanceNotification($maintenance)); } public function sendAnonymousAlert($email, $message) { Notification::route('mail', $email) ->notify(new AnonymousAlert($message)); }}
This service demonstrates how notifications integrate seamlessly into business workflows, providing flexible delivery mechanisms while maintaining clean, readable code.
Laravel's notification system transforms complex multi-channel communication into an elegant, scalable solution that grows with your application's messaging requirements.