Recibe actualizaciones automáticas y en tiempo real de Airfocus conectando tus aplicaciones favoritas usando nuestros Webhooks.
Beneficios de usar webhooks
Los webhooks permiten que Airfocus y otras aplicaciones trabajen juntas fácilmente y en tiempo real. Esto significa que las actualizaciones y notificaciones ocurren rápidamente sin necesidad de aplicaciones adicionales ni codificación complicada.
Configuración inicial de un nuevo webhook
Crea un nuevo espacio de trabajo en Airfocus, o selecciona el que te gustaría para crear un nuevo webhook.
Requisitos:
- Licencias "completas" al espacio de trabajo donde quieres configurar el webhook.
- Subscripción pagada a un plan profesional o corporativo.
- Conocimientos técnicos para una correcta configuración.
Puedes agregar varios webhooks a un espacio de trabajo dado (por ejemplo, a diferentes canales de Slack para distintas audiencias de stakeholders).
Para ello, simplemente ve a la sección de Extensiones dentro de tu espacio de trabajo, haz clic en "Agregar integración" y "Conectar" bajo Webhook.
A continuación, ponle un nombre a tu webhook (opcional) y selecciona para qué eventos deben activar las solicitudes.
En las opciones de solicitud, elige el formato marcador y el método y pega la URL de tu webhook en el campo de la URL. También puedes agregar cabeceras a tus peticiones si es necesario.
Opcionalmente, también puedes configurar el cuerpo de tu solicitud en el formato marcador elegido arriba.
{
"bloqueos": [
{
"type": "divider"
},
{
"tipo": "sección",
"texto": {
"tipo": "mrkdwn",
"texto": "{{title|esc}}"
},
"accesorio": {
"tipo": "botón",
"texto": {
"type": "plain_text",
"text": "Open in airfocus",
"emoji": true
},
"valor": "click_me_123",
"URL": "{{url}}",
"action_id": "acción de botón"
}
},
{
"tipo": "sección",
"texto": {
"tipo": "mrkdwn",
"texto": "{{details|esc}}"
}
}
]
}Para una documentación detallada de las opciones de personalización de tus webhooks, por favor lee la siguiente sección.
Caso de uso: recibir notificaciones de Slack para actualizaciones de Airfocus
Para este caso de uso, nuestro objetivo es configurar un webhook que envíe un mensaje de Slack a un canal de nuestra elección cada vez que un elemento del espacio de trabajo para el que configuramos el webhook se actualice en estado.
Para ello, necesitamos configurar una app de Slack para generar una URL de webhook y luego configurar el resto de la integración en Airfocus.
Cómo crear una URL de webhook para tu canal de Slack:
-
Crea una nueva aplicación de Slack en el espacio de trabajo de Slack donde quieras recibir las notificaciones de AirFocus.
- Desde la página Características, active la opción Activar webhooks entrantes .
- Haga clic en Agregar nuevo webhook al espacio de trabajo.
- Elige un canal al que la app publique y luego haz clic en Permitir.
-
Copia la URL del webhook y abre el espacio de trabajo de Airfocus para el que quieres configurar las actualizaciones.
Cómo configurar su webhook en Airfocus para enviar notificaciones de actualización de eventos a Slack:
- En el popover de extensiones, haz clic en "Agregar integración".
- En la visión general de integración, haz clic en "Conectar" debajo de la integración "Webhooks".
- Ponle un nombre a tu webhook (opcional) y selecciona para qué eventos deben activar las solicitudes. → "Estado actualizado" para este caso de uso.
- En las opciones de solicitud, selecciona "Slack markdown" como formato marcador y "POST" como método. Ahora pega la URL del webhook que copiaste de Slack en el campo URL.
- Para recibir mensajes de Slack correctamente formateados, pega la siguiente Plantilla en el campo del cuerpo y pulsa actualizar.
-
{
"bloqueos": [
{
"type": "divider"
},
{
"tipo": "sección",
"texto": {
"tipo": "mrkdwn",
"texto": "{{title|esc}}"
},
"accesorio": {
"tipo": "botón",
"texto": {
"type": "plain_text",
"text": "Open in airfocus",
"emoji": true
},
"valor": "click_me_123",
"URL": "{{url}}",
"action_id": "acción de botón"
}
},
{
"tipo": "sección",
"texto": {
"tipo": "mrkdwn",
"texto": "{{details|esc}}"
}
}
]
}
-
- Ahora recibirás un mensaje de Slack en el canal que elegiste cuando cualquier elemento en el espacio de trabajo tenga su estado cambiado.
Recibe airfocus actualizaciones en Microsoft Teams
Nota: La función de conector webhook de Microsoft Teams será descontinuada a finales de abril de 2026. La siguiente guía incluye pasos para usar la función de Flujos de Trabajo como alternativa.
La función Microsoft Teams Flujos de Trabajo te permite configurar un gancho sitio web que envía un mensaje de Teams a un canal designado cuando se actualizan elementos dentro de un espacio de trabajo airfocus concreto. Para ello, necesitarás generar una URL de webhook en Microsoft Teams y luego configurar el resto de la integración en airfocus.
Crea una URL de webhook en Microsoft Teams
Para generar una URL de webhook en Microsoft Teams, sigue estos pasos:
- Inicia sesión en Microsoft Teams.
- Haz clic en el menú de tres puntos en el menú de navegación en el extremo izquierdo.
- Selecciona flujos de trabajo.
- En la barra de búsqueda, busca "webhook".
- Selecciona Publicar en un canal cuando se reciba una solicitud de webhook.
- Escribe un nombre para tu flujo de trabajo (por ejemplo, "airfocus actualizaciones").
- Haz clic en Siguiente.
- En "Detalles", selecciona el equipo y canal específicos donde quieres que aparezcan las actualizaciones.
- Haz clic en Agregar flujo de trabajo.
- En la pantalla de confirmación, copia la URL de POST.
- Esta es la URL del webhook que tendrás que pegar en airfocus.
- Haz clic en Listo para finalizar la configuración.
Configura tu webhook en airfocus
Para configurar tu webhook en airfocus, sigue estos pasos:
- Abre el espacio de trabajo airfocus para el que quieres enviar actualizaciones a Microsoft Teams.
- Haz clic en Extensiones desde la esquina superior derecha del espacio de trabajo.
- Selecciona Agregar integración.
- En "Webhooks", haz clic en Conectar.
- Escribe un nombre para el webhook.
- En "Eventos", selecciona qué tipo de actualizaciones quieres que se envíen a Microsoft Teams.
- En "Formato marcador", selecciona Markdown.
- En "Método", selecciona POST y luego pega la URL que generaste en Microsoft Teams bajo "URL".
- Seleccionar + Agregar encabezado.
- En "Nombre del encabezado", escribe "Content-Type".
- En "Valor de cabecera", escribe "aplicación/json".
- Para recibir mensajes de Microsoft Teams correctamente formateados, pega la siguiente Plantilla en el campo del cuerpo.
{ "tipo": "AdaptiveCard", "$schema": "http://adaptivecards.io/schemas/adaptive-card.json", "versión": "1.4", "cuerpo": [ { "type": "TextBlock", "texto": "{{title}}", "tamaño": "Mediano", "peso": "Más audaz", "wrap": Cierto }, { "type": "TextBlock", "texto": "{{details}}", "wrap": Cierto } ], "acciones": [ { "type": "Action.OpenUrl", "título": "Abierto en airfocus", "URL": "{{url}}" } ] }
- Haz clic en Actualizar desde la parte inferior derecha de la página.
Ahora recibirás actualizaciones en el canal de Microsoft Teams que configuraste en la primera sección.
Configuración de la solicitud HTTP - documentación técnica
Método
Por defecto está configurado como POST, pero también se puede cambiar a GET o PUT. No se admiten otros métodos.
URL
- no debe estar vacío
- solo puede empezar con https:// (no se admiten otros esquemas o esquemas vacíos)
- debe tener un nombre de dominio público con un dominio de nivel superior bien conocido (no se admiten IPs)
Encabezados
- Se admite la autorización
- Se admite el tipo de contenido
- se admiten cabeceras personalizadas que Empezar con x-
- No se admiten otros encabezados
Texto
Define el cuerpo de la solicitud del webhook.
Puede contener cualquier texto de hasta 2000 caracteres.
Para completar el cuerpo de la solicitud con datos significativos de eventos, proporcionamos un conjunto de marcadores de posición que nuestro servidor reemplaza por datos de eventos antes de enviar la solicitud.
Formato provisional
Especifica cómo los marcadores de posición con tipo RichText deben ser prerenderizados por nuestro servidor. Por ejemplo {{title}} , el marcador de posición puede contener una cadena como "John updated field Labels on item Fix the botón" que contiene cierto formato de texto enriquecido como negrilla, cursiva, etc., y por lo tanto el formato de marcador especifica en qué sintaxis específica debe transformar este formato. Formatos disponibles:
| Nombre | Descripción | Ejemplo |
| reducción | Reducción por defecto | John actualizó el campo Etiquetas en el artículo Arreglar el botón |
| HTML | <b>John</b> campo actualizado <i>Etiquetas</i> en el elemento <b>Arreglar el botón</b> |
|
| texto | Formateo eliminado | John actualizó el campo Etiquetas en el artículo Arreglar el botón |
| Slack | Slack especial mrkdwn | *John* campo actualizado *Etiquetas* en el elemento *Arreglar el botón* |
Placeholders
| Marcador de posición | Tipo | Descripción | Ejemplo |
{{type}} |
String | Tipo de evento | ÍtemActualizado |
{{title}} |
Cadena (RichText) | describe la acción del evento | John actualizó el campo Etiquetas en el artículo Arreglar el botón |
{{details}} |
Cadena (RichText) | Detalles adicionales del evento (por ejemplo, lo que cambió) | Valor antiguo ⇒ Valor nuevo |
{{url}} |
String | URL de llamada a la acción para cada evento específico (por ejemplo, un enlace a un espacio de trabajo o un elemento) |
https://myteam.airfocus.com/w/workspaceid?item=itemid *sustituye airfocus.com por airfocus.app si estás en la región de EE. UU. o APAC y tu cuenta se creó luego de septiembre de 2025 |
{{event}} |
JSON | datos completos en JSON sobre el evento actual | Consulta el modelo de Carga Útil de Eventos a continuación |
{{title|esc}} |
Cadena (RichText) | Igual que {{title}} en las comillas dobles se evaden |
transforma una cadena con comillas "dobles" en una cadena con comillas \"dobles" |
{{details|esc}} |
Cadena (RichText) | Igual que {{details}} en las comillas dobles se evaden |
transforma una cadena con comillas "dobles" en una cadena con comillas \"dobles" |
Data modelo
Modelo de carga útil de eventos
Un objeto de nivel superior, producido para cada evento. Contiene datos sobre el evento, así como datos básicos incrustados sobre todas las entidades relacionadas con este evento.
| Campo | Tipo | Obligatorio | Descripción |
| Evento | Evento | sí | Datos básicos sobre el evento |
| Incrustar | Evento incrustado | sí | Datos adicionales sobre el evento: principalmente nombres de elementos/espacios de trabajo/campos/etc., que están relacionados con este evento |
| matchedFilter | EventFilter | sí | Uno de los filtros de eventos seleccionados en la configuración de integración, que coincidía con el evento actual |
Modelo de evento
Datos básicos sobre el evento
| Campo | Tipo | Obligatorio | Descripción |
| id | UUID | sí | ID único del evento |
| Iniciador | IniciadorEvento | sí | Información sobre quién inició este evento |
| Datos | EventData | sí | los datos reales del evento. Es diferente según cada tipo de evento específico |
| creadoEn | Código de tiempo | sí | cuando el evento ocurrió |
Modelo EventInitiator
Información sobre quién inició este evento. En la mayoría de los casos, el userId estará definido. También es posible que haya tanto userId como integrationId definidos, por ejemplo, si un usuario pulsaba el botón "sincronizar integración" que producía el evento.
| Campo | Tipo | Obligatorio | Descripción |
| Idusuario | UUID | no | definido si este evento fue iniciado por un usuario |
| appId | UUID | no | define si este evento fue iniciado por una aplicación |
| integrationId | UUID | no | definido si este evento fue iniciado por una integración |
| eventId | UUID | no | definido si este evento fue iniciado por otro evento |
| requestId | UUID | no | definido si este evento se iniciaba dentro de una solicitud HTTP |
Modelo EventEmbed
Datos adicionales sobre el evento: principalmente nombres de elementos/espacios de trabajo/campos/etc., que están relacionados con este evento.
| Campo | Tipo | Obligatorio | Descripción |
| Equipos | {UUID: TeamInfo} | no | un hash-map algoritmo de IDs de equipo a datos de equipo |
| usuarios | {UUID: UserInfo} | no | un hash-map algoritmo de IDs de Usuario a datos de Usuario |
| aplicaciones | {UUID: AppInfo} | no | un hash-map algoritmo de IDs de app a datos de app |
| Espacios de trabajo | {UUID: WorkspaceInfo} | no | un hash-map algoritmo de IDs de espacio de trabajo a datos de espacios de trabajo |
| integraciones | {UUID: IntegrationInfo} | no | un hash-map algoritmo de IDs de integración a datos de integración |
| campos | {UUID: FieldInfo} | no | un hash-map algoritmo de IDs de campo a datos de campo |
| Situación | {UUID: StatusInfo} | no | un hash-map algoritmo de IDs de estado a datos de estado |
| elementos | {UUID: ItemInfo} | no | un hash-map algoritmo de IDs de elementos a datos de elementos |
TeamInfo modelo
| Campo | Tipo | Obligatorio | Descripción |
| nombre | String | sí | Nombre del equipo |
| trago | String | sí | slug de URL del equipo |
| baseUrl | String | sí | Ejemplo: https://myteam.airfocus.com *sustituye airfocus.com por airfocus.app si estás en la región de EE. UU. o APAC y tu cuenta se creó luego de septiembre de 2025 |
Modelo UserInfo
| Campo | Tipo | Obligatorio | Descripción |
| teamId | UUID | sí | ID del equipo al que pertenece este usuario |
| Nombre completo | String | sí | Nombre completo del usuario |
Modelo AppInfo
| Campo | Tipo | Obligatorio | Descripción |
| teamId | UUID | sí | ID del equipo al que pertenece esta app |
| typeId | String | sí | Uno de: formularios, Insights, espejo, portal, priorización |
Modelo WorkspaceInfo
| Campo | Tipo | Obligatorio | Descripción |
| teamId | UUID | sí | ID del equipo al que pertenece este espacio de trabajo |
| nombre | String | sí | Nombre del espacio de trabajo |
Modelo IntegrationInfo
| Campo | Tipo | Obligatorio | Descripción |
| workspaceId | UUID | sí | ID del espacio de trabajo al que pertenece esta integración |
| typeId | String | sí | Uno de: Asana, Azure-DevOps, Clubhouse, GitHub, Intercom, Jira, Planner, Trello |
StatusInfo modelo
| Campo | Tipo | Obligatorio | Descripción |
| workspaceId | UUID | sí | ID del espacio de trabajo al que pertenece este estado |
| nombre | String | sí | Nombre del estatus |
| categoría | String | sí | Uno de: Tiro, activo, cerrado |
ItemInfo modelo
| Campo | Tipo | Obligatorio | Descripción |
| workspaceId | UUID | sí | ID del espacio de trabajo al que pertenece este elemento |
| statusId | UUID | sí | ID del estado del artículo |
| nombre | String | sí | Nombre del objeto |
Modelo EventData
EventData es un tipo de unión: puede cualquiera de los tipos especificados:
CreatedItem
| Campo | Tipo | Obligatorio | Descripción |
| itemId | UUID | sí | ID del elemento creado |
Punto actualizado
| Campo | Tipo | Obligatorio | Descripción |
| itemId | UUID | sí | ID del artículo actualizado |
| estado | {prev: UUID, next: UUID} | no | Identificaciones antiguas y nuevas del estado (si cambiaron) |
| color | {prev: String, next: String} | no | IDs antiguos y nuevos del color del artículo (si cambiados) |
| ID de usuario asignado | {prev: UUID[], next: UUID[]} | no | lista antigua y nueva de IDs de usuario asignados (si cambiados) |
| nombre | {prev: String, next: String} | no | Nombre del artículo antiguo y nuevo (si se cambió) |
| Descripción | {prev: RichText, next: RichText} | no | Descripción del artículo antiguo y nuevo (si se cambió) |
| Descripción | { UUID: { prev: JSON, next: JSON } } | no | un hash-map algoritmo de IDs de campo a sus valores cambiados, cada valor es un JSON que depende del tipo de campo |
| archivado | {prev: Boolean, next: Boolean} | no | archivo antiguo y nuevo (si se modifica) |
Dejar comentarios sobre este artículo
¿Tienes comentarios sobre este artículo? Cuéntanos tu experiencia aquí.