SendGrid konektor
Poveži svoj SendGrid nalog sa Brevo putem Tajo za migraciju email infrastrukture, sinhronizaciju kontakata, prenos podataka kampanja i unifikovanu analitiku angažovanja na obe platforme.
Pregled
| Svojstvo | Vrednost |
|---|---|
| Platforma | SendGrid (Twilio) |
| Kategorija | Marketing |
| Složenost podešavanja | Lako |
| Zvanična integracija | Da |
| Sinhronizovani podaci | Kontakti, Kampanje, Transakcioni email, Događaji |
| Osnovni URL API-ja | https://api.sendgrid.com/v3 |
Karakteristike
- Migracija kontakata - Migracija SendGrid Marketing kontakata u Brevo sa prilagođenim poljima
- Sinhronizacija transakcionih emailova - Praćenje transakcionih email događaja za unifikovano izveštavanje
- Podaci kampanje - Sinhronizacija podataka o performansama Single Send i Automation kampanja
- Event webhook-ovi - Prosleđivanje email događaja (dostavljeno, otvoreno, kliknuto, odbijeno) u Brevo
- Sinhronizacija suzbijanja - Migracija lista odbijanja, blokiranja i odjave radi usklađenosti
- Migracija šablona - Izvoz dinamičnih transakcionih šablona za upotrebu u Brevo
- Verifikacija pošiljaoca - Sinhronizacija verifikovanih identiteta pošiljaoca i autentifikacije domene
- Sinhronizacija statistika - Uvoz istorijskih statistika angažovanja u Brevo atribute
Preduslovi
Pre nego što započneš, proveri da imaš:
- SendGrid nalog (Free, Essentials, Pro ili Premier)
- SendGrid API ključ sa potrebnim dozvolama
- Brevo nalog sa API pristupom
- Tajo nalog
Autentifikacija
Autentifikacija API ključem
SendGrid koristi autentifikaciju bearer tokenom.
curl https://api.sendgrid.com/v3/marketing/contacts \ -H "Authorization: Bearer SG.YOUR_API_KEY" \ -H "Content-Type: application/json"Kreiraj API ključeve u SendGrid Settings > API Keys sa specifičnim nivoima dozvola:
- Full Access - Kompletan API pristup
- Restricted Access - Granularna kontrola dozvola
- Billing Access - Operacije samo za naplatu
Potrebne dozvole
Marketing: Full Access - Contacts (read) - Single Sends (read) - Automations (read)Mail Send: Full Access - Mail Send (read)Stats: Read AccessSuppressions: Read AccessTracking: Read AccessBezbednost API ključa
SendGrid API ključevi se prikazuju samo jednom pri kreiranju. Čuvaj ih na sigurnom mestu. Ako ih izgubiš, moraš kreirati novi ključ.
Konfiguracija
Osnovno podešavanje
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": 62Mapiranje polja
Mapiranje polja SendGrid kontakata na Brevo atribute kontakta:
Default Mappings
| Parameter | Type | Description |
|---|---|---|
email required | string | Email adresa kontakta (jedinstveni identifikator) |
first_name optional | string | Mapira se na atribut FIRSTNAME |
last_name optional | string | Mapira se na atribut LASTNAME |
phone_number optional | string | Mapira se na atribut SMS |
city optional | string | Grad kontakta |
country optional | string | Zemlja kontakta |
custom_fields optional | object | Parovi ključ-vrednost prilagođenih polja |
list_ids optional | array | Članstvo na SendGrid listama |
Mapiranje prilagođenih polja
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 endpointi
Marketing kontakti
| Metoda | Endpoint | Opis |
|---|---|---|
PUT | /v3/marketing/contacts | Dodavanje ili ažuriranje kontakata |
POST | /v3/marketing/contacts/search | Pretraga kontakata |
GET | /v3/marketing/contacts/count | Dohvatanje broja kontakata |
POST | /v3/marketing/contacts/exports | Izvoz kontakata |
DELETE | /v3/marketing/contacts | Brisanje kontakata |
GET | /v3/marketing/lists | Listanje svih listi kontakata |
Transakcioni email (Mail Send)
| Metoda | Endpoint | Opis |
|---|---|---|
POST | /v3/mail/send | Slanje emaila |
GET | /v3/templates | Listanje dinamičnih šablona |
GET | /v3/templates/{id} | Dohvatanje detalja šablona |
Kampanje (Single Sends)
| Metoda | Endpoint | Opis |
|---|---|---|
GET | /v3/marketing/singlesends | Listanje Single Sends |
GET | /v3/marketing/singlesends/{id} | Dohvatanje detalja Single Send |
GET | /v3/marketing/automations | Listanje automatizacija |
Statistike
| Metoda | Endpoint | Opis |
|---|---|---|
GET | /v3/stats | Dohvatanje globalnih email statistika |
GET | /v3/categories/stats | Dohvatanje statistika po kategoriji |
GET | /v3/marketing/stats/singlesends | Dohvatanje statistika Single Send |
Suzbijanja
| Metoda | Endpoint | Opis |
|---|---|---|
GET | /v3/suppression/bounces | Listanje odbijenih emailova |
GET | /v3/suppression/blocks | Listanje blokiranih emailova |
GET | /v3/suppression/spam_reports | Listanje spam prijava |
GET | /v3/suppression/unsubscribes | Listanje globalnih odjava |
Događaji
Email događaji (putem Event Webhook-a)
| Događaj | Okidač | Slučaj upotrebe |
|---|---|---|
processed | Email prihvaćen od strane SendGrid-a | Potvrda slanja |
delivered | Email dostavljen primaocu | Praćenje dostave |
open | Email otvoren | Ocenjivanje angažovanja |
click | Veza kliknuta | Praćenje interesa |
bounce | Email odbijen | Higijena liste |
dropped | Email suzbijen | Pregled usklađenosti |
deferred | Dostava odložena | Praćenje ponovnih pokušaja |
spam_report | Označen kao spam | Upravljanje reputacijom |
unsubscribe | Odjavljen putem veze | Sinhronizacija preferencija |
Primeri koda
Inicijalizacija 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});Migracija kontakata u 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// }Prosleđivanje email događaja
// 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');});Ograničenja brzine
Ograničenja brzine SendGrid API-ja:
| Endpoint | Limit | Detalji |
|---|---|---|
Mail Send (/v3/mail/send) | Zavisi od plana | Free: 100/dan, Essentials: na osnovu plana |
| Marketing Contacts PUT | 3 zahteva/sekundi | Batch do 30.000 kontakata |
| Marketing Contacts Search | 50 zahteva/sekundi | Po API ključu |
| Opšti API | 1.000 zahteva/sekundi | Po API ključu |
| Event Webhook | Batch isporuka | Do 1.000 događaja po POST zahtevu |
Limiti Mail Send
Limiti Mail Send zavise od tvog SendGrid plana. Free nalozi su ograničeni na 100 emailova/dan. Proveri detalje svog plana za tačne limite slanja.
Rešavanje problema
Česti problemi
| Problem | Uzrok | Rešenje |
|---|---|---|
| 401 Unauthorized | Nevažeći API ključ | Verifikuj API ključ u SendGrid Settings |
| 403 Forbidden | Nedovoljne dozvole API ključa | Kreiraj novi ključ sa potrebnim skopovima |
| Izvoz kontakata na čekanju | Obrada velikog skupa podataka | Ispitivaj endpoint statusa izvoza do završetka |
| Nepotpuna sinhronizacija suzbijanja | Potrebna paginacija | Implementiraj paginaciju sa offset parametrom |
| Webhook nije primljen | URL nije verifikovan | Završi verifikaciju webhook URL-a u SendGrid-u |
Debug režim
Uključi detaljno logovanje:
connectors: sendgrid: debug: true log_level: verbose log_webhooks: trueTestiraj vezu
tajo connectors test sendgrid# ✓ API connection successful# ✓ Contacts readable# ✓ Lists accessible# ✓ Statistics readable# ✓ Suppressions accessibleNajbolje prakse
- Najpre migrišu suzbijanja - Osiguraj da su odbijanja, blokiranja i odjave u Brevo pre slanja
- Koristi batch uploadove kontakata - PUT do 30.000 kontakata po zahtevu radi efikasnosti
- Verifikuj Event Webhook - Omogući potpisane webhook-ove sa ECDSA verifikacijom
- Mapiraj prilagođena polja - Kreiraj odgovarajuće Brevo atribute pre migracije kontakata
- Sinhronizuj podatke o angažovanju - Uvezi istorijske statistike za segmentaciju u Brevo
- Obrađuj asinhroni izvoz - Izvozi kontakata su asinhroni; ispitivaj do završetka
Bezbednost
- Autentifikacija API ključem - Bearer token sa granularnim nivoima dozvola
- Potpisivanje Event Webhook-a - ECDSA verifikacija potpisa za webhook payloade
- TLS enkripcija - Sva API komunikacija enkriptovana putem HTTPS
- Upravljanje IP pristupom - Ograniči pristup Dashboard-u i API-ju po IP adresi
- Dvofaktorska autentifikacija - 2FA dostupna za pristup nalogu