SendGrid конектор
Свържи своя акаунт в SendGrid с Brevo чрез Tajo за миграция на имейл инфраструктура, синхронизация на контакти, прехвърляне на данни за кампании и унифицирана аналитика за ангажираност в двете платформи.
Преглед
| Свойство | Стойност |
|---|---|
| Платформа | SendGrid (Twilio) |
| Категория | Маркетинг |
| Сложност на настройка | Лесна |
| Официална интеграция | Да |
| Синхронизирани данни | Контакти, кампании, транзакционни имейли, събития |
| Base URL на API | https://api.sendgrid.com/v3 |
Функции
- Миграция на контакти – Мигрирай SendGrid Marketing контакти към Brevo с персонализирани полета
- Синхронизация на транзакционни имейли – Проследявай събития от транзакционни имейли за унифицирано отчитане
- Данни за кампании – Синхронизирай данни за performance на Single Send и Automation кампании
- Event webhooks – Препращай имейл събития (delivered, opened, clicked, bounced) към Brevo
- Синхронизация на suppressions – Мигрирай bounce, block и unsubscribe списъци за съвместимост
- Миграция на шаблони – Експортирай Dynamic Transactional Templates за използване в Brevo
- Sender верификация – Синхронизирай верифицирани sender идентичности и автентикация на домейн
- Синхронизация на статистики – Импортирай исторически статистики за ангажираност към атрибути в Brevo
Предварителни условия
Преди да започнеш, увери се, че имаш:
- Акаунт в SendGrid (Free, Essentials, Pro или Premier)
- SendGrid API ключ с необходимите разрешения
- Акаунт в Brevo с API достъп
- Акаунт в Tajo
Автентикация
Автентикация с API ключ
SendGrid използва bearer token автентикация.
curl https://api.sendgrid.com/v3/marketing/contacts \ -H "Authorization: Bearer SG.YOUR_API_KEY" \ -H "Content-Type: application/json"Създавай API ключове в SendGrid Settings > API Keys със специфични нива на разрешения:
- Full Access – Пълен API достъп
- Restricted Access – Гранулиран контрол на разрешенията
- Billing Access – Само billing операции
Необходими разрешения
Marketing: Full Access - Contacts (read) - Single Sends (read) - Automations (read)Mail Send: Full Access - Mail Send (read)Stats: Read AccessSuppressions: Read AccessTracking: Read AccessСигурност на API ключ
SendGrid API ключовете се показват само веднъж при създаване. Съхранявай ги сигурно. Ако бъдат загубени, трябва да създадеш нов ключ.
Конфигурация
Основна настройка
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": 62Мапване на полета
Мапвай SendGrid полета на контакти към атрибути на контактите в Brevo:
Мапвания по подразбиране
| Parameter | Type | Description |
|---|---|---|
email required | string | Имейл адрес на контакта (уникален идентификатор) |
first_name optional | string | Мапва към атрибут FIRSTNAME |
last_name optional | string | Мапва към атрибут LASTNAME |
phone_number optional | string | Мапва към атрибут SMS |
city optional | string | Град на контакта |
country optional | string | Държава на контакта |
custom_fields optional | object | Персонализирани ключ-стойност двойки |
list_ids optional | array | Членства в SendGrid списъци |
Мапване на персонализирани полета
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 крайни точки
Marketing Contacts
| Метод | Крайна точка | Описание |
|---|---|---|
PUT | /v3/marketing/contacts | Добавяне или обновяване на контакти |
POST | /v3/marketing/contacts/search | Търсене на контакти |
GET | /v3/marketing/contacts/count | Получаване на брой контакти |
POST | /v3/marketing/contacts/exports | Експорт на контакти |
DELETE | /v3/marketing/contacts | Изтриване на контакти |
GET | /v3/marketing/lists | Списък с всички списъци с контакти |
Транзакционен имейл (Mail Send)
| Метод | Крайна точка | Описание |
|---|---|---|
POST | /v3/mail/send | Изпращане на имейл |
GET | /v3/templates | Списък с Dynamic Templates |
GET | /v3/templates/{id} | Получаване на детайли за шаблон |
Кампании (Single Sends)
| Метод | Крайна точка | Описание |
|---|---|---|
GET | /v3/marketing/singlesends | Списък със Single Sends |
GET | /v3/marketing/singlesends/{id} | Получаване на детайли за Single Send |
GET | /v3/marketing/automations | Списък с автоматизации |
Статистики
| Метод | Крайна точка | Описание |
|---|---|---|
GET | /v3/stats | Получаване на глобални имейл статистики |
GET | /v3/categories/stats | Получаване на статистики за категории |
GET | /v3/marketing/stats/singlesends | Получаване на статистики за Single Send |
Suppressions
| Метод | Крайна точка | Описание |
|---|---|---|
GET | /v3/suppression/bounces | Списък с bounce-нали имейли |
GET | /v3/suppression/blocks | Списък с блокирани имейли |
GET | /v3/suppression/spam_reports | Списък със spam reports |
GET | /v3/suppression/unsubscribes | Списък с глобални unsubscribes |
Събития
Имейл събития (чрез Event Webhook)
| Събитие | Тригер | Случай на употреба |
|---|---|---|
processed | Имейлът е приет от SendGrid | Потвърждение на изпращане |
delivered | Имейлът е доставен на получателя | Проследяване на доставка |
open | Имейлът е отворен | Engagement scoring |
click | Кликнат линк | Проследяване на интерес |
bounce | Имейлът е bounce-нал | Хигиена на списък |
dropped | Имейлът е suppress-нат | Compliance преглед |
deferred | Доставката е отложена | Мониторинг на retry |
spam_report | Маркиран като спам | Управление на репутация |
unsubscribe | Отписан чрез линк | Синхронизация на предпочитания |
Примери с код
Инициализация на конектора
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});Миграция на контакти към 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// }Препращане на имейл събития
// 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 на SendGrid API:
| Крайна точка | Лимит | Детайли |
|---|---|---|
Mail Send (/v3/mail/send) | Зависи от плана | Free: 100/ден, Essentials: на базата на плана |
| Marketing Contacts PUT | 3 заявки/секунда | Пакетно до 30 000 контакта |
| Marketing Contacts Search | 50 заявки/секунда | На API ключ |
| Общ API | 1 000 заявки/секунда | На API ключ |
| Event Webhook | Batch доставка | До 1 000 събития на POST |
Лимити за Mail Send
Лимитите за Mail Send зависят от твоя SendGrid план. Free акаунтите са ограничени до 100 имейла/ден. Провери детайлите на своя план за точните лимити за изпращане.
Отстраняване на проблеми
Чести проблеми
| Проблем | Причина | Решение |
|---|---|---|
| 401 Unauthorized | Невалиден API ключ | Провери API ключа в SendGrid Settings |
| 403 Forbidden | Недостатъчни разрешения на API ключ | Създай нов ключ с необходимите обхвати |
| Contact export pending | Обработка на голям dataset | Poll-вай export status крайната точка до завършване |
| Непълна синхронизация на suppressions | Изисква се пагинация | Внедри пагинация с параметър offset |
| Event webhook не се получава | URL не е верифициран | Завърши webhook URL верификацията в SendGrid |
Режим за дебъг
Активирай подробно логване:
connectors: sendgrid: debug: true log_level: verbose log_webhooks: trueТест на връзката
tajo connectors test sendgrid# ✓ API connection successful# ✓ Contacts readable# ✓ Lists accessible# ✓ Statistics readable# ✓ Suppressions accessibleДобри практики
- Първо мигрирай suppressions – Увери се, че bounces, blocks и unsubscribes са в Brevo преди изпращане
- Използвай пакетни качвания на контакти – PUT до 30 000 контакта на заявка за ефективност
- Верифицирай Event Webhook – Активирай подписани уебхуци с ECDSA верификация
- Мапвай персонализирани полета – Създай съответните атрибути в Brevo преди миграция на контакти
- Синхронизирай данни за ангажираност – Импортирай исторически статистики за сегментация в Brevo
- Обработвай асинхронни експорти – Експортите на контакти са асинхронни; poll-вай за завършване
Сигурност
- Автентикация с API ключ – Bearer token с гранулирани нива на разрешения
- Event Webhook подписване – ECDSA верификация на подпис за webhook payloads
- TLS криптиране – Цялата API комуникация е криптирана чрез HTTPS
- IP Access Management – Ограничаване на Dashboard и API достъп по IP
- Two-factor автентикация – 2FA достъпна за достъп до акаунт