Slack Connector

Verbinde deinen Slack-Workspace über Tajo mit Brevo für Echtzeit-Marketing-Benachrichtigungen, Team-Alerts bei Kund:innen-Events und Workflow-Automation, ausgelöst durch Slack-Interaktionen.

Überblick

EigenschaftWert
PlattformSlack
KategorieCustom Integration
EinrichtungsaufwandEinfach
Offizielle IntegrationJa
Synchronisierte DatenNutzer:innen, Channels, Nachrichten, Events
API-Basis-URLhttps://slack.com/api

Funktionen

  • Marketing-Alerts - Sende Echtzeit-Benachrichtigungen zu Kampagnen-Events, neuen Abonnent:innen und Umsatzmeilensteinen
  • Kund:innen-Event-Benachrichtigungen - Informiere Teams über wertvolle Kund:innen-Aktionen aus Brevo
  • Workflow-Trigger - Nutze Slack-Interaktionen (Button-Klicks, Formular-Einreichungen), um Brevo-Automationen auszulösen
  • Channel-basiertes Routing - Leite Benachrichtigungen je nach Event-Typ oder Kund:innen-Segment an passende Channels
  • Nutzer:innen-Synchronisation - Mappe Slack-Workspace-Nutzer:innen auf Brevo-Kontakte für interne Kommunikation
  • Interaktive Nachrichten - Sende Rich-Nachrichten mit Buttons und Aktionen für Team-Workflows
  • Geplante Nachrichten - Plane Benachrichtigungen für tägliche/wöchentliche Marketing-Summaries
  • Thread-Support - Gruppiere verwandte Benachrichtigungen in Threads für organisierte Kommunikation

Voraussetzungen

Bevor du beginnst, stelle sicher, dass du Folgendes hast:

  1. Einen Slack-Workspace mit Admin-Zugriff
  2. Eine Slack-App, erstellt unter api.slack.com/apps
  3. Einen Bot-Token mit den erforderlichen Scopes
  4. Ein Brevo-Konto mit API-Zugriff
  5. Ein Tajo-Konto

Authentifizierung

Bot-Token (empfohlen)

Installiere eine Slack-App in deinem Workspace und nutze den Bot-Token für API-Zugriff.

  1. App unter api.slack.com/apps erstellen
  2. Erforderliche OAuth-Scopes unter “OAuth & Permissions” hinzufügen
  3. App im Workspace installieren
  4. Den Bot User OAuth Token (xoxb-...) kopieren
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

Zur Verteilung deiner Slack-Integration über mehrere 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}"

Erforderliche 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

Zugriff auf Nutzer:innen-E-Mails

Der Scope users:read.email wird benötigt, um Slack-Nutzer:innen mit Brevo-Kontakten abzugleichen. Ohne ihn ist das Nutzer:innen-Mapping auf Anzeigenamen beschränkt.

Konfiguration

Grundeinrichtung

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

Feld-Mapping

Mappe Slack-Nutzer:innen-Daten auf Brevo-Kontaktattribute:

Standard-Mappings

Parameter Type Description
profile.email required
string

Nutzer:innen-E-Mail (eindeutiger Identifier fürs Brevo-Matching)

real_name optional
string

Vollständiger Name, aufgeteilt in FIRSTNAME/LASTNAME

profile.phone optional
string

Mapping auf SMS-Attribut

profile.title optional
string

Berufsbezeichnung

tz optional
string

Zeitzone der Nutzer:in

is_admin optional
boolean

Workspace-Admin-Status

team_id optional
string

Workspace-Team-ID

status_text optional
string

Custom-Status der Nutzer:in

API-Methoden

Messaging

MethodeEndpointBeschreibung
POSTchat.postMessageNachricht an einen Channel senden
POSTchat.updateBestehende Nachricht aktualisieren
POSTchat.deleteNachricht löschen
POSTchat.scheduleMessageNachricht planen
POSTchat.postEphemeralEphemere Nachricht an Nutzer:in senden

Channels

MethodeEndpointBeschreibung
GETconversations.listChannels auflisten
GETconversations.infoChannel-Infos abrufen
GETconversations.membersChannel-Mitglieder auflisten
GETconversations.historyChannel-Nachrichten abrufen

Nutzer:innen

MethodeEndpointBeschreibung
GETusers.listWorkspace-Nutzer:innen auflisten
GETusers.infoNutzer:innen-Info abrufen
GETusers.lookupByEmailNutzer:in per E-Mail suchen
GETusers.conversationsChannels der Nutzer:in auflisten

Interaktionen

MethodeEndpointBeschreibung
POSTviews.openModales View öffnen
POSTviews.updateModales View aktualisieren
POSTreactions.addEmoji-Reaktion hinzufügen

Events

Brevo-zu-Slack-Benachrichtigungen

EventTriggerSlack-Aktion
new_subscriberKontakt in Brevo erstelltPost in #marketing
campaign_sentE-Mail-Kampagne versendetZusammenfassung in #marketing posten
order_placedHochwertige Bestellung erkanntPost in #sales mit Details
cart_abandonedWarenkorb 30 Min. abgebrochenPost in #sales zur Nachverfolgung
ticket_createdSupport-Ticket geöffnetPost in #support
unsubscribedKontakt hat abgemeldetAlert in #marketing

Slack-zu-Brevo-Trigger

Slack-EventTriggerBrevo-Aktion
message_actionCustom Message ShortcutKontakt zur Liste hinzufügen oder Automation auslösen
block_actionsButton-Klick in NachrichtKontaktattribut aktualisieren oder E-Mail senden
view_submissionModales Formular abgeschicktKontakt erstellen oder Workflow auslösen

Code-Beispiele

Connector initialisieren

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

Marketing-Benachrichtigungen senden

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

Slack-Interaktionen verarbeiten

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

Die Rate Limits der Slack-API nutzen ein Stufen-System:

TierLimitGängige Methoden
Tier 11 Anfrage/Minutechat.delete, conversations.kick
Tier 220 Anfragen/Minuteconversations.history, users.info
Tier 350 Anfragen/Minuteconversations.list, users.list
Tier 4100 Anfragen/Minutechat.postMessage
SpecialVariabelchat.postMessage zum gleichen Channel: 1/Sek

Zusätzliche Limits:

  • Web API: Burst-Limit mit kurzfristigem Throttle
  • Events API: Delivery-Retries bei 3 Versuchen
  • Incoming Webhooks: 1 Nachricht/Sekunde pro Webhook-URL
  • Block Kit: Maximal 50 Blöcke pro Nachricht

Rate für Channel-Postings

Das Posten in denselben Channel ist auf etwa 1 Nachricht pro Sekunde beschränkt. Bündle Benachrichtigungen oder nutze Threads, um Rate Limiting zu vermeiden.

Fehlerbehebung

Häufige Probleme

ProblemUrsacheLösung
not_authedUngültiger Bot-TokenApp neu installieren und neuen Bot-Token kopieren
channel_not_foundBot nicht im ChannelBot in den Ziel-Channel einladen
missing_scopeErforderlicher Scope nicht vergebenScope hinzufügen und App neu installieren
Event nicht empfangenEvent-Subscription nicht gesetztEvent-Subscriptions-URL konfigurieren
Interaktion-TimeoutAntwort >3 SekundenSofort mit 200 antworten, asynchron verarbeiten

Debug-Modus

Aktiviere ausführliches Logging:

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

Verbindung testen

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

Best Practices

  1. Block Kit nutzen - Baue mit dem Block-Kit-Framework von Slack reichhaltige, interaktive Nachrichten
  2. Schnell antworten - Bestätige Interaktionen innerhalb von 3 Sekunden, verarbeite asynchron
  3. Zusammengehörige Nachrichten in Threads - Gruppiere verwandte Benachrichtigungen in Threads, um Rauschen zu reduzieren
  4. Nach Channel routen - Sende unterschiedliche Event-Typen an passende Team-Channels
  5. Action-Buttons einbauen - Füge “View in Brevo”-Buttons für schnellen Zugriff auf Kund:innen-Daten hinzu
  6. Unfurling implementieren - Zeige Rich-Previews für in Slack geteilte Brevo-Links

Sicherheit

  • Bot-Token - OAuth-gescopter Access Token mit granularen Berechtigungen
  • Request-Signing - HMAC-SHA-256-Signaturverifizierung für eingehende Anfragen
  • OAuth 2.0 - Industriestandard-Autorisierung für Multi-Workspace-Verteilung
  • TLS-Verschlüsselung - Gesamte API-Kommunikation verschlüsselt über HTTPS
  • Token-Rotation - Automatische Token-Rotation für erhöhte Sicherheit

Verwandte Ressourcen

Subscribe to updates

developer-docs

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

auto-detect
AI-Assistent

Hallo! Fragen Sie mich alles über die Dokumentation.