SendGrid Connector
Verbinde dein SendGrid-Konto über Tajo mit Brevo für die Migration deiner E-Mail-Infrastruktur, die Synchronisation von Kontakten, den Transfer von Kampagnendaten und einheitliche Engagement-Analytics über beide Plattformen hinweg.
Überblick
| Eigenschaft | Wert |
|---|---|
| Plattform | SendGrid (Twilio) |
| Kategorie | Marketing |
| Einrichtungsaufwand | Einfach |
| Offizielle Integration | Ja |
| Synchronisierte Daten | Kontakte, Kampagnen, Transactional-E-Mail, Events |
| API-Basis-URL | https://api.sendgrid.com/v3 |
Funktionen
- Kontaktmigration - Migriere SendGrid-Marketing-Kontakte inklusive Custom Fields zu Brevo
- Transactional-E-Mail-Sync - Tracke Transactional-E-Mail-Events für ein einheitliches Reporting
- Kampagnendaten - Synchronisiere Performance-Daten von Single Sends und Automation-Kampagnen
- Event-Webhooks - Leite E-Mail-Events (delivered, opened, clicked, bounced) an Brevo weiter
- Suppression-Sync - Migriere Bounce-, Block- und Unsubscribe-Listen für die Compliance
- Template-Migration - Exportiere Dynamic Transactional Templates zur Nutzung in Brevo
- Sender-Verifizierung - Synchronisiere verifizierte Sender Identities und die Domain-Authentifizierung
- Statistik-Sync - Importiere historische Engagement-Statistiken in Brevo-Attribute
Voraussetzungen
Bevor du beginnst, stelle sicher, dass du Folgendes hast:
- Ein SendGrid-Konto (Free, Essentials, Pro oder Premier)
- Einen SendGrid-API-Schlüssel mit den erforderlichen Berechtigungen
- Ein Brevo-Konto mit API-Zugriff
- Ein Tajo-Konto
Authentifizierung
API-Schlüssel-Authentifizierung
SendGrid nutzt eine Bearer-Token-Authentifizierung.
curl https://api.sendgrid.com/v3/marketing/contacts \ -H "Authorization: Bearer SG.YOUR_API_KEY" \ -H "Content-Type: application/json"Erstelle API-Schlüssel in den SendGrid-Einstellungen unter Settings > API Keys mit bestimmten Berechtigungsstufen:
- Full Access - Vollständiger API-Zugriff
- Restricted Access - Granulare Berechtigungssteuerung
- Billing Access - Ausschließlich Billing-Operationen
Erforderliche Berechtigungen
Marketing: Full Access - Contacts (read) - Single Sends (read) - Automations (read)Mail Send: Full Access - Mail Send (read)Stats: Read AccessSuppressions: Read AccessTracking: Read AccessSicherheit des API-Schlüssels
SendGrid-API-Schlüssel werden nur einmal bei der Erstellung angezeigt. Speichere sie sicher ab. Geht ein Schlüssel verloren, musst du einen neuen Schlüssel anlegen.
Konfiguration
Grundeinrichtung
connectors: sendgrid: enabled: true api_key: "${SENDGRID_API_KEY}"
# Data sync options sync: contacts: true campaigns: true transactional: true suppressions: true statistics: true
# List mapping to Brevo list_mapping: "All Contacts": 60 "Newsletter": 61 "Transactional": 62Feldzuordnung
Ordne SendGrid-Kontaktfelder den Brevo-Kontaktattributen zu:
Standardzuordnungen
| Parameter | Type | Description |
|---|---|---|
email required | string | E-Mail-Adresse des Kontakts (eindeutige Kennung) |
first_name optional | string | Wird dem FIRSTNAME-Attribut zugeordnet |
last_name optional | string | Wird dem LASTNAME-Attribut zugeordnet |
phone_number optional | string | Wird dem SMS-Attribut zugeordnet |
city optional | string | Stadt des Kontakts |
country optional | string | Land des Kontakts |
custom_fields optional | object | Key-Value-Paare für Custom Fields |
list_ids optional | array | Mitgliedschaften in SendGrid-Listen |
Zuordnung benutzerdefinierter Felder
field_mapping: # Standard fields email: email first_name: FIRSTNAME last_name: LASTNAME phone_number: SMS
# Location fields city: CITY state_province_region: STATE country: COUNTRY postal_code: POSTAL_CODE
# Engagement metrics avg_open_rate: AVG_OPEN_RATE avg_click_rate: AVG_CLICK_RATE
# Custom fields custom_fields.company: COMPANY_NAME custom_fields.plan: PLAN_TYPEAPI-Endpoints
Marketing-Kontakte
| Methode | Endpoint | Beschreibung |
|---|---|---|
PUT | /v3/marketing/contacts | Kontakte hinzufügen oder aktualisieren |
POST | /v3/marketing/contacts/search | Kontakte durchsuchen |
GET | /v3/marketing/contacts/count | Anzahl der Kontakte abrufen |
POST | /v3/marketing/contacts/exports | Kontakte exportieren |
DELETE | /v3/marketing/contacts | Kontakte löschen |
GET | /v3/marketing/lists | Alle Kontaktlisten auflisten |
Transactional-E-Mail (Mail Send)
| Methode | Endpoint | Beschreibung |
|---|---|---|
POST | /v3/mail/send | Eine E-Mail versenden |
GET | /v3/templates | Dynamic Templates auflisten |
GET | /v3/templates/{id} | Template-Details abrufen |
Kampagnen (Single Sends)
| Methode | Endpoint | Beschreibung |
|---|---|---|
GET | /v3/marketing/singlesends | Single Sends auflisten |
GET | /v3/marketing/singlesends/{id} | Details eines Single Send abrufen |
GET | /v3/marketing/automations | Automationen auflisten |
Statistiken
| Methode | Endpoint | Beschreibung |
|---|---|---|
GET | /v3/stats | Globale E-Mail-Statistiken abrufen |
GET | /v3/categories/stats | Statistiken pro Kategorie abrufen |
GET | /v3/marketing/stats/singlesends | Single-Send-Statistiken abrufen |
Suppressions
| Methode | Endpoint | Beschreibung |
|---|---|---|
GET | /v3/suppression/bounces | Gebouncte E-Mails auflisten |
GET | /v3/suppression/blocks | Blockierte E-Mails auflisten |
GET | /v3/suppression/spam_reports | Spam-Meldungen auflisten |
GET | /v3/suppression/unsubscribes | Globale Abmeldungen auflisten |
Events
E-Mail-Events (über den Event Webhook)
| Event | Auslöser | Anwendungsfall |
|---|---|---|
processed | E-Mail von SendGrid angenommen | Versandbestätigung |
delivered | E-Mail an Empfänger:in zugestellt | Zustell-Tracking |
open | E-Mail geöffnet | Engagement-Scoring |
click | Link angeklickt | Interessen-Tracking |
bounce | E-Mail ist gebounced | Listen-Hygiene |
dropped | E-Mail unterdrückt | Compliance-Prüfung |
deferred | Zustellung zurückgestellt | Retry-Monitoring |
spam_report | Als Spam markiert | Reputations-Management |
unsubscribe | Abmeldung über Link | Präferenz-Sync |
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 SendGridawait tajo.connectors.connect('sendgrid', { apiKey: process.env.SENDGRID_API_KEY});Kontakte zu Brevo migrieren
// Full contact migration from SendGrid to Brevoawait tajo.connectors.sync('sendgrid', { type: 'full', resources: ['contacts', 'suppressions'], options: { includeCustomFields: true, migrateListMemberships: true, migrateSuppressions: true }});
// Check migration statusconst status = await tajo.connectors.status('sendgrid');console.log(status);// {// connected: true,// lastSync: '2024-01-15T10:30:00Z',// contactsMigrated: 45000,// suppressionsSynced: 3200,// listsMapped: 8// }E-Mail-Events weiterleiten
// Handle SendGrid Event Webhookapp.post('/webhooks/sendgrid', async (req, res) => { const signature = req.get('X-Twilio-Email-Event-Webhook-Signature');
// Verify webhook signature (ECDSA) if (!verifySendGridSignature(req.body, signature)) { return res.status(401).send('Unauthorized'); }
// Process batch of events for (const event of req.body) { await tajo.connectors.handleWebhook('sendgrid', { type: event.event, email: event.email, timestamp: event.timestamp, payload: event }); }
res.status(200).send('OK');});Rate Limits
Rate Limits der SendGrid-API:
| Endpoint | Limit | Details |
|---|---|---|
Mail Send (/v3/mail/send) | Abhängig vom Plan | Free: 100/Tag, Essentials: abhängig vom Plan |
| Marketing Contacts PUT | 3 Anfragen/Sekunde | Batch von bis zu 30.000 Kontakten |
| Marketing Contacts Search | 50 Anfragen/Sekunde | Pro API-Schlüssel |
| Allgemeine API | 1.000 Anfragen/Sekunde | Pro API-Schlüssel |
| Event Webhook | Batch-Zustellung | Bis zu 1.000 Events pro POST |
Mail-Send-Limits
Die Mail-Send-Limits hängen von deinem SendGrid-Plan ab. Free-Konten sind auf 100 E-Mails pro Tag beschränkt. Prüfe die exakten Versandlimits in deinem Plan.
Fehlerbehebung
Häufige Probleme
| Problem | Ursache | Lösung |
|---|---|---|
| 401 Unauthorized | Ungültiger API-Schlüssel | API-Schlüssel in den SendGrid-Einstellungen prüfen |
| 403 Forbidden | Unzureichende API-Schlüssel-Berechtigungen | Neuen Schlüssel mit den benötigten Scopes anlegen |
| Kontakt-Export steht aus | Verarbeitung eines großen Datensatzes | Den Export-Status-Endpoint abfragen, bis der Export abgeschlossen ist |
| Suppression-Sync unvollständig | Pagination erforderlich | Pagination mit Offset-Parameter umsetzen |
| Event-Webhook nicht empfangen | URL nicht verifiziert | Verifizierung der Webhook-URL in SendGrid abschließen |
Debug-Modus
Ausführliches Logging aktivieren:
connectors: sendgrid: debug: true log_level: verbose log_webhooks: trueVerbindung testen
tajo connectors test sendgrid# ✓ API connection successful# ✓ Contacts readable# ✓ Lists accessible# ✓ Statistics readable# ✓ Suppressions accessibleBest Practices
- Suppressions zuerst migrieren - Stelle sicher, dass Bounces, Blocks und Unsubscribes in Brevo vorhanden sind, bevor du versendest
- Batch-Uploads für Kontakte nutzen - Per PUT bis zu 30.000 Kontakte pro Anfrage übertragen, um effizient zu arbeiten
- Event-Webhook verifizieren - Signierte Webhooks mit ECDSA-Verifizierung aktivieren
- Custom Fields zuordnen - Lege entsprechende Brevo-Attribute vor der Kontaktmigration an
- Engagement-Daten synchronisieren - Importiere historische Stats zur Segmentierung in Brevo
- Asynchrone Exporte verarbeiten - Kontakt-Exporte laufen asynchron; Status bis zum Abschluss abfragen
Sicherheit
- API-Schlüssel-Authentifizierung - Bearer Token mit granularen Berechtigungsstufen
- Signierung der Event-Webhooks - ECDSA-Signaturprüfung der Webhook-Payloads
- TLS-Verschlüsselung - Die gesamte API-Kommunikation wird per HTTPS verschlüsselt
- IP-Zugriffs-Management - Beschränke Dashboard- und API-Zugriff per IP
- Zwei-Faktor-Authentifizierung - 2FA für den Kontozugriff verfügbar