Se ejecuta enWrit CloudDesktopAutoalojado
En esta página
Nueve canales, y una rejilla.
Dos sistemas distintos comparten la palabra «notificación», y confundirlos cuesta una tarde. Los canales son lo que dispara un monitor o una automatización. Las preferencias son lo que la plataforma te cuenta. Esta página los separa.
reparto ▸ dos sistemas
¿De cuál hablas?
Los dos viven en Ajustes, los dos dicen «notificaciones», y no comparten lista de canales. Empieza aquí:
| Canales de monitors y automatizaciones | Nueve proveedores, configurados una vez para la organización. Un monitor detecta un cambio, o una automatización llega a un paso de aviso, y el mensaje sale. Los destinatarios se escriben «channel:id». |
| Preferencias de notificación de la plataforma | Seis canales en siete categorías, por usuario. Seguridad, facturación, equipo, runs, agentes, marketplace y soporte — lo que Writ te cuenta sobre tu propia cuenta. |
canales ▸ nueve
Configura un canal.
Configura cada uno una vez para la organización y añádele destinatarios. Cada canal tiene un envío de prueba.
| Canal | Clave API | Qué aportas tú |
|---|---|---|
| Pushover | pushover | Token de aplicación y clave de usuario. Opcionalmente un título, un mensaje, una prioridad de −2 a 2, un sonido, un título de enlace y HTML activado o no. |
| Email (SMTP) | email | Host, puerto, usuario, contraseña, dirección de origen, nombre de origen y TLS activado o no. |
| Email (Google Workspace) | email | Conecta con OAuth en vez de SMTP. La configuración indica qué proveedor está activo y qué cuenta está conectada, y puedes desconectarla. |
| SMS | twilio | Account SID, auth token y un número de envío en formato E.164. El auth token no se devuelve nunca una vez guardado. |
whatsapp | Un número de envío en formato whatsapp:+1234567890. Va sobre las mismas credenciales del proveedor de SMS, así que solo sirve cuando ambos están configurados. | |
| Signal | signal | La URL de un servidor REST signal-cli que operes tú, más el número remitente en formato E.164. |
| Slack | slack | Una URL de webhook de canal por destinatario. La API solo devuelve el host, nunca la URL completa. |
| Discord | discord | Una URL de webhook de canal por destinatario. La API solo devuelve el host, nunca la URL completa. |
| Telegram | telegram | El token que te da BotFather, más un chat id por destinatario. El token se enmascara en las respuestas. |
| Webhook | webhook | Tu propia URL, con cabeceras personalizadas y verificación de firma HMAC opcionales. Las entregas se reintentan con retroceso exponencial. |
Las credenciales entran y no vuelven a salir: el auth token de SMS no se devuelve una vez guardado, las URL de Slack y Discord vuelven solo como host, y el token de Telegram se enmascara. Si hay que cambiar una, sustitúyela — no puedes releerla para comprobarla.
El canal webhook firma cada entrega. El contrato de firma exacto, los nombres de cabecera y un ejemplo de verificación viven en Webhooks.
Webhooks →destinatarios ▸ channel:id
Nombrar a quién avisar.
Cuando un canal ya tiene destinatarios, una automatización se refiere a ellos con cadenas "channel:id" — por ejemplo ["pushover:1","email:3"]. Una sola llamada lista todos los destinatarios de todos los canales, cada uno con su identificador enmascarado, que es lo que pinta un selector.
recipients
{
"channels": ["pushover", "email"],
"recipients": ["pushover:1", "email:3"]
} list-recipients.sh
curl https://api.usewrit.app/api/notifications/recipients/all \
-H "Authorization: Bearer $WRIT_API_KEY" Ojo: la clave de SMS es twilio, no sms — ese es el valor que la API espera en una lista de canales. En la rejilla de preferencias de más abajo, la misma idea se escribe sms. Son sistemas distintos.
controles ▸ toda la organización
Controles de entrega.
Se aplican a toda la organización, no por canal — para que una noche movida no acabe en cien mensajes:
| Control | Qué hace |
|---|---|
| Horas de silencio | Una hora de inicio y otra de fin durante las cuales no se entrega nada. |
| Límite de frecuencia | Un número máximo de mensajes por periodo. |
| Agrupación | Junta lo que ocurre dentro de una ventana, en minutos, y lo envía como un solo mensaje. |
| Alertas de error de agente | Avisar cuando un agente falla, con un umbral y un retardo en minutos. |
| Alertas de salud de destino | Avisar cuando un destino falla repetidamente, con un umbral y un intervalo de comprobación. |
| Alertas de salud del sistema | Avisar cuando un agente se desconecta, tras un retardo. |
placeholders ▸ alertas de cambio
Qué puedes poner en el mensaje.
Las notificaciones de cambio insertan estos placeholders en tu plantilla de mensaje. Agrupados por lo que responden:
| Qué se vigilaba | {url} {target_id} {target_name} {selector} {selector_name} {agent_id} {agent_platform} {change_count} {check_count} |
| Qué cambió | {diff} {detected_change} {previous_content} {new_content} {content_hash} {previous_hash} |
| Cuándo | {timestamp} {date} {time} |
Un placeholder desconocido se deja tal cual en vez de fallar, así que una errata te cuesta un token literal en el mensaje, no una alerta perdida. Las vistas previas se truncan: {diff} y {detected_change} a 500 caracteres, {previous_content} y {new_content} a 200.
relé ▸ desde un dispositivo
Un dispositivo vinculado pasando el testigo a la nube.
Un dispositivo ejecuta automatizaciones en local, pero algunos canales necesitan la nube para entregar. Solo email, pushover, SMS, WhatsApp y Signal pasan por el relé; webhook, Slack, Discord y Telegram los entrega el propio dispositivo, porque puede alcanzarlos directamente.
relay.sh
curl -X POST https://api.usewrit.app/api/notifications/relay \
-H "Authorization: Bearer $WRIT_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"channels": ["email", "pushover"],
"recipients": ["email:3", "pushover:1"],
"title": "Price dropped",
"message": "Now $41.00, was $49.00.",
"url": "https://example.com/product/42"
}' | Campo | Regla |
|---|---|
channels | De 1 a 8, y subconjunto de los canales relevables. Cualquier otro se rechaza con 400. |
recipients | Referencias de destinatario, las mismas cadenas «channel:id». |
title | Hasta 200 caracteres. |
message | De 1 a 4000 caracteres. |
priority | Opcional. |
url | Enlace opcional, hasta 2000 caracteres. |
email_subject | Opcional, hasta 300 caracteres. |
La entrega va a tus propios destinatarios configurados — nunca a una dirección arbitraria pasada en la llamada. Las notificaciones por relé están limitadas a 120 por hora y organización, para que una automatización local inestable no vacíe un presupuesto de SMS en minutos.
preferencias ▸ la otra rejilla
Preferencias de notificación de la plataforma.
Este es el segundo sistema: lo que Writ te cuenta, por usuario, en GET y PUT /api/notifications/preferences. Otro conjunto de canales, otro propósito.
Seis canales
No son los mismos nueve de arriba:
in_app | La campana y la bandeja dentro de Writ. |
email | El email de tu cuenta. |
sms | Un punto de contacto personal en tu fila de preferencias. |
whatsapp | El mismo punto de contacto personal. |
signal | El mismo punto de contacto personal. |
pushover | Tu propia clave de usuario de Pushover. |
Siete categorías
Los eventos se agrupan para poder razonar sin leer fila por fila:
| Seguridad | Actividad de seguridad de la cuenta. |
| Facturación y pagos | Saldo, recibos, problemas de pago. |
| Equipo | Invitaciones y pertenencia. |
| Automatizaciones y runs | Qué hicieron tus workflows. |
| Agentes y dispositivos | Qué hicieron tus máquinas. |
| Marketplace y creador | Publicaciones, instalaciones, ingresos. |
| Soporte | Actividad de tickets. |
Cuatro reglas que sorprenden
- La rejilla es dispersa. Solo se muestran los canales que un evento ofrece de verdad — una celda vacía no es un interruptor que te falte.
- Algunas celdas están bloqueadas y siempre activas: alertas de seguridad, problemas de pago e invitaciones de equipo. La API no guarda una anulación para ellas.
- Algunos eventos son solo por email, a propósito.
- Las alertas de cambio por monitor viven deliberadamente fuera de esta rejilla, con sus propios ajustes por destino.
El build autoalojado trae un catálogo recortado, sin los eventos de facturación ni de marketplace — en ese build no hay facturación ni marketplace de los que avisarte.
referencia ▸ siguiente
Sigue
Lo que detecta el cambio que dispara la alerta.
→ WebhooksEl contrato de firma, verificado.
→ Tus propias máquinasLos dispositivos que retransmiten por la nube.
→ Usuarios y equiposQuién recibe qué eventos de plataforma.
→ Writ DesktopAutomatizaciones que se ejecutan y avisan en local.
→ AutoalojamientoEl catálogo recortado del build open-core.
→faq