Conector de Slack
Estado del conector: Planificado Aún no está construido. Tajo no ejecuta este conector hoy.
Ilustración · datos de ejemplo
Ejemplo de sincronización
Origen
Slack
Estado del conector: Planificado
Destino
Tu otra herramienta
Estado del conector: Herramienta personalizada
Asignación de campos
| Campo de origen | Campo de destino | Valor de ejemplo |
|---|---|---|
record.id | source_id | record_1042 |
record.updated_at | updated_at | 2026-10-18T08:00:00Z |
record.value | value | sample_value |
- Preparar
- Revisar un registro
- Aprobar esta versión
Los estados corresponden a cada conector y no garantizan que esta sincronización esté lista. Campos ilustrativos. Revisa el esquema y los permisos reales antes de ejecutar una sincronización.
Conecta tu workspace de Slack con Brevo mediante Tajo para recibir notificaciones de marketing en tiempo real, alertas de equipo ante eventos de cliente y automatizaciones de flujo activadas por interacciones en Slack.
Resumen
| Propiedad | Valor |
|---|---|
| Plataforma | Slack |
| Categoría | Integración personalizada |
| Complejidad de configuración | Fácil |
| Integración oficial | No |
| Datos sincronizados | Usuarios, Canales, Mensajes, Eventos |
| URL base de la API | https://slack.com/api |
Funcionalidades
- Alertas de marketing - Envía notificaciones en tiempo real de eventos de campaña, nuevos suscriptores e hitos de ingresos
- Notificaciones de eventos de cliente - Alerta a los equipos sobre acciones de cliente de alto valor desde Brevo
- Triggers de workflow - Usa interacciones de Slack (clics de botones, envíos de formularios) para activar automatizaciones de Brevo
- Enrutamiento por canal - Enruta las notificaciones a canales específicos según el tipo de evento o el segmento de cliente
- Sincronización de usuarios - Asocia los usuarios del workspace de Slack con contactos de Brevo para comunicaciones internas
- Mensajes interactivos - Envía mensajes enriquecidos con botones y acciones para flujos de equipo
- Mensajes programados - Programa notificaciones para resúmenes de marketing diarios o semanales
- Soporte de hilos - Agrupa notificaciones relacionadas en hilos para una comunicación organizada
Requisitos previos
Antes de empezar, asegúrate de tener:
- Un workspace de Slack con acceso de administrador
- Una app de Slack creada en api.slack.com/apps
- Un bot token con los scopes necesarios
- Una cuenta de Brevo con acceso a la API
- Una cuenta de Tajo
Autenticación
Bot Token (recomendado)
Instala una app de Slack en tu workspace y usa el bot token para acceder a la API.
- Crea la app en api.slack.com/apps
- Añade los scopes de OAuth necesarios en “OAuth & Permissions”
- Instala la app en el workspace
- Copia el Bot User OAuth Token (
xoxb-...)
curl -X POST "https://slack.com/api/chat.postMessage" \ -H "Authorization: Bearer xoxb-YOUR-BOT-TOKEN" \ -H "Content-Type: application/json" \ -d '{"channel": "C01234567", "text": "Hello from Tajo!"}'OAuth 2.0
Para distribuir tu integración de Slack a varios workspaces:
# Authorization URLhttps://slack.com/oauth/v2/authorize? client_id={client_id}& scope=chat:write,channels:read,users:read& redirect_uri={redirect_uri}
# Token exchangecurl -X POST "https://slack.com/api/oauth.v2.access" \ -d "client_id={client_id}" \ -d "client_secret={client_secret}" \ -d "code={auth_code}"Scopes de bot obligatorios
chat:write # Send messageschannels:read # List channelschannels:history # Read channel messagesusers:read # List workspace usersusers:read.email # Read user email addressesreactions:write # Add reactions to messagesfiles:write # Upload filesAcceso al email del usuario
El scope users:read.email es obligatorio para emparejar usuarios de Slack con contactos de Brevo. Sin él, la asignación de usuarios se limitará a los nombres mostrados.
Configuración
Configuración básica
connectors: slack: enabled: true bot_token: "${SLACK_BOT_TOKEN}" signing_secret: "${SLACK_SIGNING_SECRET}"
# Notification channels channels: marketing: "C01234567" sales: "C01234568" support: "C01234569" alerts: "C01234570"
# Event routing notifications: new_subscriber: channel: marketing template: subscriber_alert high_value_order: channel: sales template: order_alert support_ticket: channel: support template: ticket_alertAsignación de campos
Asocia los datos de usuario de Slack con los atributos de contacto de Brevo:
Default Mappings
| Parameter | Type | Description |
|---|---|---|
profile.email required | string | Email del usuario (identificador único para emparejar con Brevo) |
real_name optional | string | Nombre completo, dividido en FIRSTNAME/LASTNAME |
profile.phone optional | string | Se asigna al atributo SMS |
profile.title optional | string | Cargo profesional |
tz optional | string | Zona horaria del usuario |
is_admin optional | boolean | Si el usuario es administrador del workspace |
team_id optional | string | ID del equipo del workspace |
status_text optional | string | Estado personalizado del usuario |
Métodos de la API
Mensajería
| Método | Endpoint | Descripción |
|---|---|---|
POST | chat.postMessage | Enviar un mensaje a un canal |
POST | chat.update | Actualizar un mensaje existente |
POST | chat.delete | Eliminar un mensaje |
POST | chat.scheduleMessage | Programar un mensaje |
POST | chat.postEphemeral | Enviar un mensaje efímero a un usuario |
Canales
| Método | Endpoint | Descripción |
|---|---|---|
GET | conversations.list | Listar canales |
GET | conversations.info | Obtener información del canal |
GET | conversations.members | Listar miembros del canal |
GET | conversations.history | Obtener mensajes del canal |
Usuarios
| Método | Endpoint | Descripción |
|---|---|---|
GET | users.list | Listar usuarios del workspace |
GET | users.info | Obtener información del usuario |
GET | users.lookupByEmail | Buscar usuario por email |
GET | users.conversations | Listar canales del usuario |
Interacciones
| Método | Endpoint | Descripción |
|---|---|---|
POST | views.open | Abrir una vista modal |
POST | views.update | Actualizar una vista modal |
POST | reactions.add | Añadir una reacción de emoji |
Eventos
Notificaciones de Brevo a Slack
| Evento | Desencadenante | Acción en Slack |
|---|---|---|
new_subscriber | Contacto creado en Brevo | Publicar en #marketing |
campaign_sent | Campaña de email enviada | Publicar resumen en #marketing |
order_placed | Pedido de alto valor detectado | Publicar en #sales con los detalles |
cart_abandoned | Carrito abandonado durante 30 min | Publicar en #sales para seguimiento |
ticket_created | Ticket de soporte abierto | Publicar en #support |
unsubscribed | Contacto dado de baja | Publicar alerta en #marketing |
Triggers de Slack a Brevo
| Evento de Slack | Desencadenante | Acción en Brevo |
|---|---|---|
message_action | Shortcut de mensaje personalizado | Añadir contacto a lista o activar automatización |
block_actions | Clic de botón en mensaje | Actualizar atributo de contacto o enviar email |
view_submission | Formulario modal enviado | Crear contacto o activar workflow |
Ejemplos de código
Inicializar el conector
import { TajoClient } from '@tajo/sdk';
const tajo = new TajoClient({ apiKey: process.env.TAJO_API_KEY, brevoApiKey: process.env.BREVO_API_KEY});
// Connect Slackawait tajo.connectors.connect('slack', { botToken: process.env.SLACK_BOT_TOKEN, signingSecret: process.env.SLACK_SIGNING_SECRET});Enviar notificaciones de marketing
// Send a notification when a high-value order is placedawait tajo.slack.notify({ channel: 'sales', event: 'order_placed', data: { orderValue: '$1,250.00', products: ['Premium Widget', 'Pro Service'], isFirstOrder: true }, template: { blocks: [ { type: 'header', text: { type: 'plain_text', text: 'New High-Value Order' } }, { type: 'section', fields: [ { type: 'mrkdwn', text: '*Amount:*\n$1,250.00' } ] }, { type: 'actions', elements: [ { type: 'button', text: { type: 'plain_text', text: 'View in Brevo' }, url: 'https://app.brevo.com/contacts' } ] } ] }});Gestionar interacciones de Slack
import crypto from 'crypto';
app.post('/slack/interactions', async (req, res) => { // Verify Slack request signature const timestamp = req.headers['x-slack-request-timestamp']; const signature = req.headers['x-slack-signature']; const sigBasestring = `v0:${timestamp}:${req.rawBody}`; const mySignature = 'v0=' + crypto .createHmac('sha256', process.env.SLACK_SIGNING_SECRET) .update(sigBasestring) .digest('hex');
if (signature !== mySignature) { return res.status(401).send('Unauthorized'); }
const payload = JSON.parse(req.body.payload);
// Handle button actions if (payload.type === 'block_actions') { await tajo.connectors.handleWebhook('slack', { type: 'interaction', action: payload.actions[0].action_id, userId: payload.user.id, payload }); }
res.status(200).send();});Límites de velocidad
Los límites de velocidad de la API de Slack usan un sistema por niveles:
| Nivel | Límite | Métodos habituales |
|---|---|---|
| Tier 1 | 1 petición/minuto | chat.delete, conversations.kick |
| Tier 2 | 20 peticiones/minuto | conversations.history, users.info |
| Tier 3 | 50 peticiones/minuto | conversations.list, users.list |
| Tier 4 | 100 peticiones/minuto | chat.postMessage |
| Especial | Varía | chat.postMessage al mismo canal: 1/s |
Límites adicionales:
- Web API: Límite por ráfagas con throttling a corto plazo
- Events API: Reintentos de entrega durante 3 intentos
- Incoming Webhooks: 1 mensaje/segundo por URL de webhook
- Block Kit: Máximo 50 bloques por mensaje
Frecuencia de publicación en canal
La publicación en el mismo canal está limitada a aproximadamente 1 mensaje por segundo. Agrupa notificaciones o usa hilos para evitar el rate limiting.
Resolución de problemas
Problemas habituales
| Problema | Causa | Solución |
|---|---|---|
not_authed | Bot token no válido | Reinstala la app y copia el nuevo bot token |
channel_not_found | El bot no está en el canal | Invita al bot al canal de destino |
missing_scope | Scope requerido no concedido | Añade el scope y reinstala la app |
| Evento no recibido | Suscripción de eventos no configurada | Configura la URL de Event Subscriptions |
| Timeout de interacción | Respuesta >3 segundos | Responde con 200 de inmediato y procesa de forma asíncrona |
Modo depuración
Activa el logging detallado:
connectors: slack: debug: true log_level: verbose log_events: trueProbar la conexión
tajo connectors test slack# ✓ Bot token valid# ✓ Workspace accessible# ✓ Channels readable# ✓ Message posting enabled# ✓ Event subscriptions activeBuenas prácticas
- Usa Block Kit - Crea mensajes ricos e interactivos con el framework Block Kit de Slack
- Responde con rapidez - Confirma las interacciones en menos de 3 segundos y procesa de forma asíncrona
- Agrupa mensajes en hilos - Agrupa notificaciones relacionadas en hilos para reducir el ruido
- Enruta por canal - Envía distintos tipos de eventos a los canales de equipo apropiados
- Incluye botones de acción - Añade botones “Ver en Brevo” para acceder rápido a los datos del cliente
- Implementa unfurling - Muestra vistas previas enriquecidas para enlaces de Brevo compartidos en Slack
Seguridad
- Bot Token - Token de acceso con scopes de OAuth y permisos granulares
- Firma de peticiones - Verificación de firma HMAC SHA-256 para peticiones entrantes
- OAuth 2.0 - Autorización estándar del sector para distribución en varios workspaces
- Cifrado TLS - Toda la comunicación con la API cifrada vía HTTPS
- Rotación de tokens - Rotación automática de tokens para mayor seguridad