docs Notificaciones

Notificaciones

Envía eventos de despliegue, backup y tareas a Discord, Slack, Telegram, email o cualquier webhook.

Canales compatibles

Discord

URL del webhook. Los mensajes se envían como embeds de color con los detalles del evento.

Slack

URL del incoming webhook. Los mensajes usan bloques de Slack con los detalles del evento.

Telegram

Bot Token y Chat ID del chat o canal donde publica el bot.

Email (Resend)

Destinatario(s) (separados por comas), tu API Key de Resend y una dirección From opcional.

Webhook

Cualquier URL http(s) pública, con un HMAC Secret opcional para firmar el payload.

Las URLs de Webhook, Discord y Slack deben apuntar a una dirección pública: los destinos privados, de loopback y link-local se rechazan.

Añadir un canal

Abre la sección Notifications de un proyecto y añade un canal: ponle un nombre, elige el tipo, rellena sus campos y marca los eventos que debe recibir (un canal nuevo recibe por defecto los éxitos y fallos de despliegue). Usa Send Test para comprobar la configuración antes de depender de ella. Los canales se pueden editar, desactivar y reactivar sin eliminarlos.

Eventos

Estos eventos se entregan actualmente a los canales:

deploy.success

Una aplicación o stack de Compose se desplegó correctamente

deploy.failed

Falló el despliegue de una aplicación o stack de Compose

backup.completed

Terminó un backup de una base de datos o servidor de juegos

backup.failed

Falló un backup de una base de datos o servidor de juegos

task.failed

Una tarea programada o comando puntual terminó con código distinto de cero o superó el tiempo límite

La lista de eventos también muestra app.stopped, app.error, health_check.failed y alert.fired, pero por ahora nada los emite hacia los canales. Las alertas de métricas se entregan a través del destino configurado en cada regla de alerta; consulta Monitoring.

Payload del webhook

Los canales de tipo Webhook reciben un POST JSON. Cuando hay un secreto configurado, el cuerpo sin procesar se firma con HMAC-SHA256 en la cabecera X-DeployKit-Signature:

json
// X-DeployKit-Signature: sha256=<hex digest>
{
  "source": "deploykit",
  "event": "deploy.failed",
  "timestamp": "2026-10-14T09:30:00.000Z",
  "data": {
    "title": "...",
    "message": "...",
    "projectId": "...",
    "applicationName": "...",
    "error": "..."
  }
}

Los campos dentro de data además de title, message y projectId dependen del evento.

Canales de proyecto y de toda la instancia

Un canal pertenece a un proyecto y solo recibe los eventos de ese proyecto, de modo que producción y staging pueden avisar a lugares distintos. Un canal creado mediante la API sin proyecto es de toda la instancia y recibe eventos de todos los proyectos. Gestionar canales de proyecto requiere el rol global Operator o Admin más el rol Operator o Admin en el proyecto; los canales de toda la instancia requieren el rol global Operator o Admin. La configuración de un canal puede contener tokens y API keys, por lo que los Viewers no pueden leerla.

Nota: Una notificación que falla al enviarse se registra y se omite: nunca hace fallar el despliegue, backup o tarea que la originó. Si un canal deja de recibir mensajes, compruébalo con Send Test.