Milind Daraniya

Slack Notification Using Webhook URI in Laravel 10

Published September 27th, 2023 20 min read

Integrating Slack notifications into your Laravel application can enhance communication and keep your team informed about important events. The Slack webhook allows you to send messages to a Slack channel from your application. In this tutorial, we'll guide you through the process of setting up Slack notifications using a webhook URI in Laravel 10.

Step 1: Configure Slack Webhook

  1. Open Slack and go to your desired channel.
  2. Click on the channel name, then choose "More" > "Add apps" to integrate an app.
  3. Search for "Incoming Webhooks" and add the app to your channel.
  4. Follow the prompts to configure the webhook and select the channel where notifications will be sent. Once configured, you'll receive a webhook URI.

Step 2: Create a Notification

In your Laravel application, create a new notification using the make:notification Artisan command. For example, let's create a SlackNotification:

php artisan make:notification SlackNotification

Step 3: Customize the Notification

Open the generated notification file (SlackNotification.php) in the app/Notifications directory. Customize the notification to send the desired information to Slack.

use Illuminate\Notifications\Notification;
use NotificationChannels\Slack\SlackChannel;
use NotificationChannels\Slack\SlackMessage;

class SlackNotification extends Notification
{
    public function toSlack($notifiable)
    {
        return (new SlackMessage)
            ->content('A new task has been created!')
            ->attachment(function ($attachment) use ($notifiable) {
                $attachment->title('Task Details')
                           ->fields([
                               'Task Name' => $notifiable->name,
                               'Assigned To' => $notifiable->assigned_to,
                               // Add more fields as needed
                           ]);
            });
    }
}

Step 4: Sending the Notification

In your application code, use the notify() method to send the Slack notification.

use App\Notifications\SlackNotification;

public function createTask(Request $request)
{
    // Create the task
    $task = Task::create([
        'name' => $request->input('name'),
        'assigned_to' => $request->input('assigned_to'),
        // ...
    ]);

    // Send Slack notification
    $user = User::find($task->assigned_to);
    $user->notify(new SlackNotification($task));

    return redirect()->back();
}

Step 5: Add Slack Webhook URI

Open the .env file and add your Slack webhook URI.

SLACK_WEBHOOK_URL=YOUR_WEBHOOK_URI

Step 6: Notify Configuration

To specify the notification channel and recipient, add the routeNotificationForSlack() method to your User model (or other notifiable models).

public function routeNotificationForSlack()
{
    return config('app.slack_webhook_url');
}

Sending Slack notifications using a webhook URI in Laravel 10 is a powerful way to keep your team informed about important events in your application. By configuring the webhook, creating a custom notification, and using the notify() method, you can seamlessly integrate Slack notifications into your Laravel workflow. This enhances communication and ensures that your team members stay updated with the latest developments.