Konektor SendGrid
Połącz swoje konto SendGrid z Brevo przez Tajo dla migracji infrastruktury e-mailowej, synchronizacji kontaktów, transferu danych kampanii i ujednoliconej analityki zaangażowania na obu platformach.
Przegląd
| Właściwość | Wartość |
|---|---|
| Platforma | SendGrid (Twilio) |
| Kategoria | Marketing |
| Poziom konfiguracji | Łatwy |
| Integracja oficjalna | Tak |
| Synchronizowane dane | Kontakty, Kampanie, E-mail transakcyjny, Zdarzenia |
| Bazowy URL API | https://api.sendgrid.com/v3 |
Funkcje
- Migracja kontaktów - Migruj kontakty marketingowe SendGrid do Brevo z niestandardowymi polami
- Synchronizacja e-maili transakcyjnych - Śledź zdarzenia e-maili transakcyjnych dla ujednoliconego raportowania
- Dane kampanii - Synchronizuj dane wydajności kampanii Single Send i Automation
- Webhooki zdarzeń - Przekazuj zdarzenia e-mailowe (dostarczone, otwarte, kliknięte, odrzucone) do Brevo
- Synchronizacja suppressions - Migruj listy odrzuceń, blokad i rezygnacji dla zgodności
- Migracja szablonów - Eksportuj szablony transakcyjne Dynamic dla użytku w Brevo
- Weryfikacja nadawcy - Synchronizuj zweryfikowane tożsamości nadawców i uwierzytelnianie domeny
- Synchronizacja statystyk - Importuj historyczne statystyki zaangażowania do atrybutów Brevo
Wymagania wstępne
Zanim zaczniesz, upewnij się, że masz:
- Konto SendGrid (Free, Essentials, Pro lub Premier)
- Klucz API SendGrid z wymaganymi uprawnieniami
- Konto Brevo z dostępem do API
- Konto Tajo
Uwierzytelnianie
Uwierzytelnianie kluczem API
SendGrid używa uwierzytelniania tokenem bearer.
curl https://api.sendgrid.com/v3/marketing/contacts \ -H "Authorization: Bearer SG.YOUR_API_KEY" \ -H "Content-Type: application/json"Twórz klucze API w SendGrid Settings > API Keys z określonymi poziomami uprawnień:
- Full Access - Pełny dostęp do API
- Restricted Access - Szczegółowa kontrola uprawnień
- Billing Access - Operacje tylko rozliczeniowe
Wymagane uprawnienia
Marketing: Full Access - Contacts (read) - Single Sends (read) - Automations (read)Mail Send: Full Access - Mail Send (read)Stats: Read AccessSuppressions: Read AccessTracking: Read AccessBezpieczeństwo klucza API
Klucze API SendGrid są wyświetlane tylko raz podczas tworzenia. Przechowuj je bezpiecznie. W przypadku utraty musisz utworzyć nowy klucz.
Konfiguracja
Podstawowa konfiguracja
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": 62Mapowanie pól
Mapuj pola kontaktów SendGrid na atrybuty kontaktów Brevo:
Domyślne mapowania
| Parameter | Type | Description |
|---|---|---|
email required | string | Adres e-mail kontaktu (unikalny identyfikator) |
first_name optional | string | Mapuje na atrybut FIRSTNAME |
last_name optional | string | Mapuje na atrybut LASTNAME |
phone_number optional | string | Mapuje na atrybut SMS |
city optional | string | Miasto kontaktu |
country optional | string | Kraj kontaktu |
custom_fields optional | object | Niestandardowe pary klucz-wartość |
list_ids optional | array | Przynależności do list SendGrid |
Mapowanie niestandardowych pól
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_TYPEEndpointy API
Kontakty marketingowe
| Metoda | Endpoint | Opis |
|---|---|---|
PUT | /v3/marketing/contacts | Dodaj lub zaktualizuj kontakty |
POST | /v3/marketing/contacts/search | Wyszukaj kontakty |
GET | /v3/marketing/contacts/count | Pobierz liczbę kontaktów |
POST | /v3/marketing/contacts/exports | Eksportuj kontakty |
DELETE | /v3/marketing/contacts | Usuń kontakty |
GET | /v3/marketing/lists | Lista wszystkich list kontaktów |
E-mail transakcyjny (Mail Send)
| Metoda | Endpoint | Opis |
|---|---|---|
POST | /v3/mail/send | Wyślij e-mail |
GET | /v3/templates | Lista szablonów Dynamic |
GET | /v3/templates/{id} | Szczegóły szablonu |
Kampanie (Single Sends)
| Metoda | Endpoint | Opis |
|---|---|---|
GET | /v3/marketing/singlesends | Lista Single Sends |
GET | /v3/marketing/singlesends/{id} | Szczegóły Single Send |
GET | /v3/marketing/automations | Lista automatyzacji |
Statystyki
| Metoda | Endpoint | Opis |
|---|---|---|
GET | /v3/stats | Globalne statystyki e-mailowe |
GET | /v3/categories/stats | Statystyki kategorii |
GET | /v3/marketing/stats/singlesends | Statystyki Single Send |
Suppressions
| Metoda | Endpoint | Opis |
|---|---|---|
GET | /v3/suppression/bounces | Lista odrzuconych e-maili |
GET | /v3/suppression/blocks | Lista zablokowanych e-maili |
GET | /v3/suppression/spam_reports | Lista raportów spamu |
GET | /v3/suppression/unsubscribes | Lista globalnych rezygnacji |
Zdarzenia
Zdarzenia e-mailowe (przez Event Webhook)
| Zdarzenie | Wyzwalacz | Przypadek użycia |
|---|---|---|
processed | E-mail zaakceptowany przez SendGrid | Potwierdzenie wysyłki |
delivered | E-mail dostarczony do odbiorcy | Śledzenie dostarczenia |
open | E-mail otwarty | Scoring zaangażowania |
click | Link kliknięty | Śledzenie zainteresowania |
bounce | E-mail odrzucony | Higiena listy |
dropped | E-mail wyciszony | Przegląd zgodności |
deferred | Dostarczenie odłożone | Monitorowanie ponownych prób |
spam_report | Oznaczono jako spam | Zarządzanie reputacją |
unsubscribe | Rezygnacja przez link | Synchronizacja preferencji |
Przykłady kodu
Inicjalizacja konektora
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});Migruj kontakty do Brevo
// 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// }Przekazuj zdarzenia e-mailowe
// 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');});Limity API
Limity szybkości SendGrid API:
| Endpoint | Limit | Szczegóły |
|---|---|---|
Mail Send (/v3/mail/send) | Zależy od planu | Free: 100/dzień, Essentials: zależy od planu |
| Marketing Contacts PUT | 3 żądania/sekundę | Do 30 000 kontaktów w partii |
| Marketing Contacts Search | 50 żądań/sekundę | Na klucz API |
| General API | 1 000 żądań/sekundę | Na klucz API |
| Event Webhook | Dostarczanie wsadowe | Do 1 000 zdarzeń na POST |
Limity Mail Send
Limity Mail Send zależą od Twojego planu SendGrid. Konta bezpłatne są ograniczone do 100 e-maili/dzień. Sprawdź szczegóły planu dla dokładnych limitów wysyłania.
Rozwiązywanie problemów
Typowe problemy
| Problem | Przyczyna | Rozwiązanie |
|---|---|---|
| 401 Unauthorized | Nieprawidłowy klucz API | Zweryfikuj klucz API w SendGrid Settings |
| 403 Forbidden | Niewystarczające uprawnienia klucza API | Utwórz nowy klucz z wymaganymi zakresami |
| Eksport kontaktów oczekujący | Przetwarzanie dużego zestawu danych | Odpytuj endpoint statusu eksportu do zakończenia |
| Niekompletna synchronizacja suppressions | Wymagana paginacja | Wdrożyj paginację z parametrem offset |
| Webhook nie odebrany | URL nie zweryfikowany | Ukończ weryfikację URL webhooka w SendGrid |
Tryb debug
Włącz szczegółowe logowanie:
connectors: sendgrid: debug: true log_level: verbose log_webhooks: trueTest połączenia
tajo connectors test sendgrid# ✓ API connection successful# ✓ Contacts readable# ✓ Lists accessible# ✓ Statistics readable# ✓ Suppressions accessibleNajlepsze praktyki
- Najpierw migruj suppressions - Upewnij się, że odrzucenia, blokady i rezygnacje są w Brevo przed wysyłaniem
- Używaj wsadowych przesyłań kontaktów - PUT do 30 000 kontaktów na żądanie dla wydajności
- Weryfikuj Event Webhook - Włącz podpisane webhooki z weryfikacją ECDSA
- Mapuj pola niestandardowe - Utwórz odpowiednie atrybuty Brevo przed migracją kontaktów
- Synchronizuj dane zaangażowania - Importuj historyczne statystyki dla segmentacji w Brevo
- Obsługuj asynchroniczne eksporty - Eksporty kontaktów są asynchroniczne; odpytuj pod kątem zakończenia
Bezpieczeństwo
- Uwierzytelnianie kluczem API - Token bearer ze szczegółowymi poziomami uprawnień
- Podpisywanie Event Webhook - Weryfikacja podpisu ECDSA dla ładunków webhooków
- Szyfrowanie TLS - Cała komunikacja API szyfrowana przez HTTPS
- IP Access Management - Ogranicz dostęp do Dashboard i API według IP
- Uwierzytelnianie dwuskładnikowe - 2FA dostępne dla dostępu do konta