SendGrid Connector
Connector-Status: In Arbeit Im Aufbau. Noch nicht verifiziert.
Illustration · Beispieldaten
Sync-Beispiel
Quelle
SendGrid
Connector-Status: In Arbeit
Ziel
Ihr anderes Tool
Connector-Status: Eigenes Tool
Feldzuordnung
| Quellfeld | Zielfeld | Beispielwert |
|---|---|---|
record.id | source_id | record_1042 |
record.updated_at | updated_at | 2026-10-18T08:00:00Z |
record.value | value | sample_value |
- Entwerfen
- Einen Datensatz prüfen
- Diese Version freigeben
Der Status gilt für einzelne Connectoren und garantiert nicht, dass dieser Sync bereit ist. Felder zur Veranschaulichung. Prüfen Sie vor dem Sync das tatsächliche Schema und die Berechtigungen.
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 | Nein |
| 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