---
title: "Slack-connector"
description: "Volledige Slack-integratiegids voor het versturen van notificaties, het synchroniseren van kanaaldata en het triggeren van Brevo-automatiseringen vanuit Slack-events via Tajo."
url: https://tajo.io/nl/docs/connectors/custom/slack/
markdown: https://tajo.io/nl/docs/connectors/custom/slack.md
lang: nl-NL
robots: noindex
---

Vraag vroegtijdige toegang aan

Vul je voornaam en je zakelijke e-mailadres in. We sturen je een link om je aanvraag voor toegang tot Tajo te bevestigen.

# Slack-connector

Connectorstatus: Gepland Nog niet gebouwd. Tajo draait deze connector vandaag niet.

| Bronveld | Doelveld | Voorbeeldwaarde |
| --- | --- | --- |
| `record.id` | `source_id` | `record_1042` |
| `record.updated_at` | `updated_at` | `2026-10-18T08:00:00Z` |
| `record.value` | `value` | `sample_value` |

Verbind je Slack-workspace met Brevo via Tajo voor realtime marketingnotificaties, teamalerts bij klantgebeurtenissen en workflow-automatisering die getriggerd wordt door Slack-interacties.

## Overzicht

| Eigenschap | Waarde |
| --- | --- |
| **Platform** | Slack |
| **Categorie** | Custom Integration |
| **Setupcomplexiteit** | Eenvoudig |
| **Officiële integratie** | Nee |
| **Gesynchroniseerde data** | Gebruikers, Kanalen, Berichten, Events |
| **API Base URL** | `https://slack.com/api` |

## Functies

- **Marketingalerts** - Stuur realtime notificaties voor campagne-events, nieuwe abonnees en omzetmijlpalen
- **Klantgebeurtenisnotificaties** - Waarschuw teams bij waardevolle klantacties vanuit Brevo
- **Workflow-triggers** - Gebruik Slack-interacties (knopkliks, formulierinzendingen) om Brevo-automatiseringen te triggeren
- **Kanaalgebaseerde routing** - Route notificaties naar specifieke kanalen op basis van eventtype of klantsegment
- **Gebruikerssynchronisatie** - Map Slack-workspace-gebruikers naar Brevo-contacten voor interne communicatie
- **Interactieve berichten** - Stuur rijke berichten met knoppen en acties voor teamworkflows
- **Geplande berichten** - Plan notificaties voor dagelijkse/wekelijkse marketing-samenvattingen
- **Threadsondersteuning** - Groepeer gerelateerde notificaties in threads voor georganiseerde communicatie

## Vereisten

Voordat je begint, zorg dat je beschikt over:

1. Een Slack-workspace met admin-toegang
2. Een Slack-app aangemaakt op [api.slack.com/apps](https://api.slack.com/apps)
3. Bot token met de vereiste scopes
4. Een Brevo-account met API-toegang
5. Een Tajo-account

## Authenticatie

### Bot Token (aanbevolen)

Installeer een Slack-app in je workspace en gebruik het bot token voor API-toegang.

1. Maak een app aan op [api.slack.com/apps](https://api.slack.com/apps)
2. Voeg vereiste OAuth-scopes toe onder “OAuth & Permissions”
3. Installeer de app in de workspace
4. Kopieer het 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

Voor het distribueren van je Slack-integratie naar meerdere 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}"
```

#### Vereiste bot-scopes

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

Toegang tot gebruikers-e-mails

De `users:read.email`-scope is vereist om Slack-gebruikers te matchen met Brevo-contacten. Zonder deze scope is gebruikersmapping beperkt tot displaynamen.

## Configuratie

### Basisinstelling

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

### Veldmapping

Map Slack-gebruikersdata naar Brevo-contactattributen:

#### Standaardmappings

| Parameter | Type | Description |
| --- | --- | --- |
| `profile.email` required | string | E-mail van gebruiker (unieke identifier voor Brevo-matching) |
| `real_name` optional | string | Volledige naam, gesplitst in FIRSTNAME/LASTNAME |
| `profile.phone` optional | string | Mapt naar SMS-attribuut |
| `profile.title` optional | string | Functietitel |
| `tz` optional | string | Tijdzone van gebruiker |
| `is_admin` optional | boolean | Workspace admin-status |
| `team_id` optional | string | Workspace team-ID |
| `status_text` optional | string | Custom status van gebruiker |

## API-methoden

### Berichten

| Method | Endpoint | Beschrijving |
| --- | --- | --- |
| `POST` | `chat.postMessage` | Een bericht naar een kanaal sturen |
| `POST` | `chat.update` | Een bestaand bericht bijwerken |
| `POST` | `chat.delete` | Een bericht verwijderen |
| `POST` | `chat.scheduleMessage` | Een bericht plannen |
| `POST` | `chat.postEphemeral` | Ephemeral bericht naar gebruiker sturen |

### Kanalen

| Method | Endpoint | Beschrijving |
| --- | --- | --- |
| `GET` | `conversations.list` | Kanalen opvragen |
| `GET` | `conversations.info` | Kanaalinfo ophalen |
| `GET` | `conversations.members` | Kanaalleden opvragen |
| `GET` | `conversations.history` | Kanaalberichten ophalen |

### Gebruikers

| Method | Endpoint | Beschrijving |
| --- | --- | --- |
| `GET` | `users.list` | Workspace-gebruikers opvragen |
| `GET` | `users.info` | Gebruikersinfo ophalen |
| `GET` | `users.lookupByEmail` | Gebruiker zoeken op e-mail |
| `GET` | `users.conversations` | Kanalen van gebruiker opvragen |

### Interacties

| Method | Endpoint | Beschrijving |
| --- | --- | --- |
| `POST` | `views.open` | Een modal-view openen |
| `POST` | `views.update` | Een modal-view bijwerken |
| `POST` | `reactions.add` | Emoji-reactie toevoegen |

## Events

### Brevo-naar-Slack-notificaties

| Event | Trigger | Slack-actie |
| --- | --- | --- |
| `new_subscriber` | Contact aangemaakt in Brevo | Post naar #marketing |
| `campaign_sent` | E-mailcampagne verzonden | Samenvatting posten naar #marketing |
| `order_placed` | Waardevolle order gedetecteerd | Post naar #sales met details |
| `cart_abandoned` | Winkelwagen 30min verlaten | Post naar #sales voor follow-up |
| `ticket_created` | Supportticket geopend | Post naar #support |
| `unsubscribed` | Contact heeft uitgeschreven | Alert posten naar #marketing |

### Slack-naar-Brevo-triggers

| Slack-event | Trigger | Brevo-actie |
| --- | --- | --- |
| `message_action` | Custom message shortcut | Contact toevoegen aan lijst of automatisering triggeren |
| `block_actions` | Knopklik in bericht | Contactattribuut bijwerken of e-mail versturen |
| `view_submission` | Modal-formulier ingediend | Contact aanmaken of workflow triggeren |

## Codevoorbeelden

### Connector initialiseren

```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
});
```

### Marketingnotificaties versturen

```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'
          }
        ]
      }
    ]
  }
});
```

### Slack-interacties afhandelen

```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();
});
```

## Rate limits

Slack API-rate limits gebruiken een tier-systeem:

| Tier | Limiet | Veelgebruikte methoden |
| --- | --- | --- |
| Tier 1 | 1 request/minuut | `chat.delete`, `conversations.kick` |
| Tier 2 | 20 requests/minuut | `conversations.history`, `users.info` |
| Tier 3 | 50 requests/minuut | `conversations.list`, `users.list` |
| Tier 4 | 100 requests/minuut | `chat.postMessage` |
| Speciaal | Variabel | `chat.postMessage` naar hetzelfde kanaal: 1/sec |

Aanvullende limieten:

- **Web API**: Burst limit met kortetermijn-throttling
- **Events API**: Delivery-retries voor 3 pogingen
- **Incoming Webhooks**: 1 bericht/seconde per webhook-URL
- **Block Kit**: Maximaal 50 blocks per bericht

Posting rate per kanaal

Posten naar hetzelfde kanaal is beperkt tot ongeveer 1 bericht per seconde. Batch notificaties of gebruik threads om rate limiting te voorkomen.

## Probleemoplossing

### Veelvoorkomende problemen

| Probleem | Oorzaak | Oplossing |
| --- | --- | --- |
| `not_authed` | Ongeldig bot token | Herinstalleer app en kopieer nieuw bot token |
| `channel_not_found` | Bot niet in kanaal | Nodig de bot uit in het doelkanaal |
| `missing_scope` | Vereiste scope niet verleend | Voeg scope toe en herinstalleer app |
| Event niet ontvangen | Event subscription niet ingesteld | Configureer Event Subscriptions URL |
| Interactie-timeout | Response >3 seconden | Reageer direct met 200, verwerk asynchroon |

### Debugmodus

Schakel uitgebreide logging in:

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

### Verbinding testen

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

## Best practices

1. **Gebruik Block Kit** - Bouw rijke, interactieve berichten met Slack’s Block Kit-framework
2. **Reageer snel** - Bevestig interacties binnen 3 seconden, verwerk asynchroon
3. **Thread gerelateerde berichten** - Groepeer gerelateerde notificaties in threads om ruis te beperken
4. **Routeer per kanaal** - Stuur verschillende eventtypes naar passende teamkanalen
5. **Voeg actieknoppen toe** - Voeg “View in Brevo”-knoppen toe voor snelle toegang tot klantdata
6. **Implementeer unfurling** - Toon rijke previews voor Brevo-links die in Slack worden gedeeld

## Beveiliging

- **Bot Token** - OAuth-gescoopt access token met granulaire rechten
- **Request signing** - HMAC SHA-256-signatureverificatie voor binnenkomende requests
- **OAuth 2.0** - Industriestandaard-autorisatie voor multi-workspace-distributie
- **TLS-encryptie** - Alle API-communicatie versleuteld via HTTPS
- **Tokenrotatie** - Automatische tokenrotatie voor extra beveiliging

## Gerelateerde bronnen

- [Slack API Documentation](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)
- [Brevo-connector](https://tajo.io/nl/docs/connectors/marketing/brevo)
- [Customer Sync Skill](https://tajo.io/nl/docs/skills/data-sync/customer-sync)
