Conector de Slack

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

PropiedadValor
PlataformaSlack
CategoríaIntegración personalizada
Complejidad de configuraciónFácil
Integración oficial
Datos sincronizadosUsuarios, Canales, Mensajes, Eventos
URL base de la APIhttps://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:

  1. Un workspace de Slack con acceso de administrador
  2. Una app de Slack creada en api.slack.com/apps
  3. Un bot token con los scopes necesarios
  4. Una cuenta de Brevo con acceso a la API
  5. 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.

  1. Crea la app en api.slack.com/apps
  2. Añade los scopes de OAuth necesarios en “OAuth & Permissions”
  3. Instala la app en el workspace
  4. Copia el Bot User OAuth Token (xoxb-...)
Terminal window
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:

Terminal window
# Authorization URL
https://slack.com/oauth/v2/authorize?
client_id={client_id}&
scope=chat:write,channels:read,users:read&
redirect_uri={redirect_uri}
# Token exchange
curl -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 messages
channels:read # List channels
channels:history # Read channel messages
users:read # List workspace users
users:read.email # Read user email addresses
reactions:write # Add reactions to messages
files:write # Upload files

Acceso 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_alert

Asignació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étodoEndpointDescripción
POSTchat.postMessageEnviar un mensaje a un canal
POSTchat.updateActualizar un mensaje existente
POSTchat.deleteEliminar un mensaje
POSTchat.scheduleMessageProgramar un mensaje
POSTchat.postEphemeralEnviar un mensaje efímero a un usuario

Canales

MétodoEndpointDescripción
GETconversations.listListar canales
GETconversations.infoObtener información del canal
GETconversations.membersListar miembros del canal
GETconversations.historyObtener mensajes del canal

Usuarios

MétodoEndpointDescripción
GETusers.listListar usuarios del workspace
GETusers.infoObtener información del usuario
GETusers.lookupByEmailBuscar usuario por email
GETusers.conversationsListar canales del usuario

Interacciones

MétodoEndpointDescripción
POSTviews.openAbrir una vista modal
POSTviews.updateActualizar una vista modal
POSTreactions.addAñadir una reacción de emoji

Eventos

Notificaciones de Brevo a Slack

EventoDesencadenanteAcción en Slack
new_subscriberContacto creado en BrevoPublicar en #marketing
campaign_sentCampaña de email enviadaPublicar resumen en #marketing
order_placedPedido de alto valor detectadoPublicar en #sales con los detalles
cart_abandonedCarrito abandonado durante 30 minPublicar en #sales para seguimiento
ticket_createdTicket de soporte abiertoPublicar en #support
unsubscribedContacto dado de bajaPublicar alerta en #marketing

Triggers de Slack a Brevo

Evento de SlackDesencadenanteAcción en Brevo
message_actionShortcut de mensaje personalizadoAñadir contacto a lista o activar automatización
block_actionsClic de botón en mensajeActualizar atributo de contacto o enviar email
view_submissionFormulario modal enviadoCrear 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 Slack
await 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 placed
await tajo.slack.notify({
channel: 'sales',
event: 'order_placed',
data: {
customerEmail: '[email protected]',
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: '*Customer:*\n[email protected]' },
{ 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:

NivelLímiteMétodos habituales
Tier 11 petición/minutochat.delete, conversations.kick
Tier 220 peticiones/minutoconversations.history, users.info
Tier 350 peticiones/minutoconversations.list, users.list
Tier 4100 peticiones/minutochat.postMessage
EspecialVaríachat.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

ProblemaCausaSolución
not_authedBot token no válidoReinstala la app y copia el nuevo bot token
channel_not_foundEl bot no está en el canalInvita al bot al canal de destino
missing_scopeScope requerido no concedidoAñade el scope y reinstala la app
Evento no recibidoSuscripción de eventos no configuradaConfigura la URL de Event Subscriptions
Timeout de interacciónRespuesta >3 segundosResponde 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: true

Probar la conexión

Terminal window
tajo connectors test slack
# ✓ Bot token valid
# ✓ Workspace accessible
# ✓ Channels readable
# ✓ Message posting enabled
# ✓ Event subscriptions active

Buenas prácticas

  1. Usa Block Kit - Crea mensajes ricos e interactivos con el framework Block Kit de Slack
  2. Responde con rapidez - Confirma las interacciones en menos de 3 segundos y procesa de forma asíncrona
  3. Agrupa mensajes en hilos - Agrupa notificaciones relacionadas en hilos para reducir el ruido
  4. Enruta por canal - Envía distintos tipos de eventos a los canales de equipo apropiados
  5. Incluye botones de acción - Añade botones “Ver en Brevo” para acceder rápido a los datos del cliente
  6. 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

Recursos relacionados

Subscribe to updates

developer-docs

Drop your email or phone number — we'll send you what matters next.

auto-detect
Asistente AI

¡Hola! Pregúntame lo que quieras sobre la documentación.