Skip to main content

Qué son las notificaciones

El sistema de notificaciones de Laravel envía notificaciones a distintos canales (correo, SMS, Slack, base de datos, etc.) mediante una API unificada. Diferencias entre Mail y Notification Cuando quieres enviar un mismo aviso por varios canales (por ejemplo, el pago de una factura confirmado), las Notifications son la opción idónea.

Crear una clase de notificación

Genera la clase con el comando Artisan make:notification.
Se ubica en app/Notifications/. Incluye el método via() y métodos para generar el mensaje por cada canal.

Cómo enviar notificaciones

Con el trait Notifiable

App\Models\User incluye por defecto el trait Notifiable. Envía notificaciones con el método notify().
Puedes añadir Notifiable a cualquier modelo, no solo a User.

Con el facade Notification

Para enviar a varios usuarios a la vez, utiliza el facade Notification.
Para enviar inmediatamente sin pasar por la cola, usa sendNow().

Indicar los canales

En el método via() devuelves un array con los canales que se van a usar.
También puedes elegir canal según la preferencia del usuario.
Canales principales disponibles:

Notificaciones por correo

En toMail() devuelve una instancia de MailMessage.
Métodos habituales de MailMessage: Para notificar un error, añade error() y el botón cambia a rojo.

Notificaciones de correo en Markdown

También puedes usar plantillas Markdown enriquecidas. Genera la clase con la opción --markdown.
Usa toMarkdownMail() en lugar de toMail().

Notificaciones en base de datos

El canal de base de datos guarda las notificaciones en la BD para mostrarlas en la interfaz de la aplicación.

Preparar la tabla

Crea la tabla notifications.

Definir toArray

Devuelve los datos a guardar como array desde toArray().
Estos datos se guardan como JSON en la columna data de la tabla notifications.

Obtener las notificaciones

Con la relación notifications del trait Notifiable puedes obtenerlas.
Para las no leídas, utiliza unreadNotifications.

Marcar como leídas

Con markAsRead() marcas la notificación como leída.

Notificaciones encoladas

Si el envío es lento, añade la interfaz ShouldQueue y el trait Queueable. La clase generada con make:notification ya los importa.
Con ShouldQueue, al llamar a notify() la notificación se encola automáticamente.
Puedes retrasar el envío.

Envío simultáneo a varios canales

Basta con devolver varios canales en via() y definir el método correspondiente a cada uno para enviar la misma notificación a varios canales a la vez.

Notificaciones bajo demanda

Para notificar a usuarios que no tienen cuenta en la aplicación, utiliza Notification::route().

Resumen

Última modificación el 13 de julio de 2026