---
title: "Conector de Slack"
description: "Guía completa de integración con Slack para enviar notificaciones, sincronizar datos de canales y activar automatizaciones de Brevo desde eventos de Slack a través de Tajo."
url: https://tajo.io/es/docs/connectors/custom/slack/
markdown: https://tajo.io/es/docs/connectors/custom/slack.md
lang: es-ES
robots: noindex
---

Solicita acceso anticipado

Escribe tu nombre y dirección de correo de trabajo. Te enviaremos un enlace para confirmar tu solicitud de acceso a Tajo.

# Conector de Slack

Estado del conector: Planificado Aún no está construido. Tajo no ejecuta este conector hoy.

| 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` |

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:

1. Un workspace de Slack con acceso de administrador
2. Una app de Slack creada en [api.slack.com/apps](https://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](https://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-...`)

```bash
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:

```bash
# 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

```yaml
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é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

```javascript
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

```javascript
// Send a notification when a high-value order is placed
await tajo.slack.notify({
  channel: 'sales',
  event: 'order_placed',
  data: {
    customerEmail: 'customer@example.com',
    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:*\ncustomer@example.com' },
          { 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

```javascript
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:

```yaml
connectors:
  slack:
    debug: true
    log_level: verbose
    log_events: true
```

### Probar la conexión

```bash
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

- [Documentación de la API de Slack](https://api.slack.com/methods)
- [Slack Block Kit Builder](https://app.slack.com/block-kit-builder)
- [Slack Events API](https://api.slack.com/events-api)
- [Conector de Brevo](https://tajo.io/es/docs/connectors/marketing/brevo)
- [Skill de sincronización de clientes](https://tajo.io/es/docs/skills/data-sync/customer-sync)
