Коннектор SendGrid

Подключите аккаунт SendGrid к Brevo через Tajo для миграции email-инфраструктуры, синхронизации контактов, переноса данных кампаний и унифицированной аналитики вовлечённости на обеих платформах.

Обзор

СвойствоЗначение
ПлатформаSendGrid (Twilio)
КатегорияMarketing
Сложность настройкиПростая
Официальная интеграцияДа
Синхронизируемые данныеКонтакты, кампании, транзакционный email, события
Базовый URL APIhttps://api.sendgrid.com/v3

Возможности

  • Миграция контактов, перенос маркетинговых контактов SendGrid в Brevo с пользовательскими полями
  • Синхронизация транзакционного email, трекинг событий транзакционного email для единой отчётности
  • Данные кампаний, синхронизация данных эффективности кампаний Single Send и Automation
  • Вебхуки событий, пересылка email-событий (доставлено, открыто, кликнуто, отклонено) в Brevo
  • Синхронизация исключений, миграция списков отказов, блокировок и отписок для соответствия требованиям
  • Миграция шаблонов, экспорт Dynamic Transactional Templates для использования в Brevo
  • Верификация отправителя, синхронизация верифицированных удостоверений отправителей и доменной аутентификации
  • Синхронизация статистики, импорт исторической статистики вовлечённости в атрибуты Brevo

Предварительные требования

Прежде чем начать, убедитесь, что у вас есть:

  1. Аккаунт SendGrid (Free, Essentials, Pro или Premier)
  2. API-ключ SendGrid с необходимыми разрешениями
  3. Аккаунт Brevo с доступом к API
  4. Аккаунт Tajo

Аутентификация

Аутентификация по API Key

SendGrid использует аутентификацию Bearer-токена.

Terminal window
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, только операции выставления счетов

Необходимые разрешения

Marketing: Full Access
- Contacts (read)
- Single Sends (read)
- Automations (read)
Mail Send: Full Access
- Mail Send (read)
Stats: Read Access
Suppressions: Read Access
Tracking: Read Access

Безопасность API Key

API-ключи SendGrid показываются только один раз при создании. Храните их надёжно. При потере необходимо создать новый ключ.

Конфигурация

Базовая настройка

connectors:
sendgrid:
enabled: true
api_key: "${SENDGRID_API_KEY}"
# Параметры синхронизации данных
sync:
contacts: true
campaigns: true
transactional: true
suppressions: true
statistics: true
# Сопоставление списков с Brevo
list_mapping:
"All Contacts": 60
"Newsletter": 61
"Transactional": 62

Сопоставление полей

Сопоставьте поля контактов SendGrid с атрибутами контактов Brevo:

Сопоставления по умолчанию

Parameter Type Description
email required
string

Email-адрес контакта (уникальный идентификатор)

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:
# Стандартные поля
email: email
first_name: FIRSTNAME
last_name: LASTNAME
phone_number: SMS
# Поля местоположения
city: CITY
state_province_region: STATE
country: COUNTRY
postal_code: POSTAL_CODE
# Метрики вовлечённости
avg_open_rate: AVG_OPEN_RATE
avg_click_rate: AVG_CLICK_RATE
# Пользовательские поля
custom_fields.company: COMPANY_NAME
custom_fields.plan: PLAN_TYPE

Эндпоинты API

Маркетинговые контакты

МетодЭндпоинтОписание
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Список всех списков контактов

Транзакционный email (Mail Send)

МетодЭндпоинтОписание
POST/v3/mail/sendОтправка email
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Глобальная статистика email
GET/v3/categories/statsСтатистика по категориям
GET/v3/marketing/stats/singlesendsСтатистика Single Send

Исключения

МетодЭндпоинтОписание
GET/v3/suppression/bouncesСписок отклонённых email
GET/v3/suppression/blocksСписок заблокированных email
GET/v3/suppression/spam_reportsСписок жалоб на спам
GET/v3/suppression/unsubscribesСписок глобальных отписок

События

Email-события (через Event Webhook)

СобытиеТриггерСценарий использования
processedEmail принят SendGridПодтверждение отправки
deliveredEmail доставлен получателюОтслеживание доставки
openEmail открытСкоринг вовлечённости
clickКликнута ссылкаОтслеживание интереса
bounceEmail отклонёнГигиена списков
droppedEmail исключёнПроверка соответствия
deferredДоставка отложенаМониторинг повторных попыток
spam_reportПомечен как спамУправление репутацией
unsubscribeОтписка по ссылкеСинхронизация предпочтений

Примеры кода

Инициализация коннектора

import { TajoClient } from '@tajo/sdk';
const tajo = new TajoClient({
apiKey: process.env.TAJO_API_KEY,
brevoApiKey: process.env.BREVO_API_KEY
});
// Подключение SendGrid
await tajo.connectors.connect('sendgrid', {
apiKey: process.env.SENDGRID_API_KEY
});

Миграция контактов в Brevo

// Полная миграция контактов из SendGrid в Brevo
await tajo.connectors.sync('sendgrid', {
type: 'full',
resources: ['contacts', 'suppressions'],
options: {
includeCustomFields: true,
migrateListMemberships: true,
migrateSuppressions: true
}
});
// Проверка статуса миграции
const status = await tajo.connectors.status('sendgrid');
console.log(status);
// {
// connected: true,
// lastSync: '2024-01-15T10:30:00Z',
// contactsMigrated: 45000,
// suppressionsSynced: 3200,
// listsMapped: 8
// }

Пересылка email-событий

// Обработка Event Webhook SendGrid
app.post('/webhooks/sendgrid', async (req, res) => {
const signature = req.get('X-Twilio-Email-Event-Webhook-Signature');
// Верификация подписи вебхука (ECDSA)
if (!verifySendGridSignature(req.body, signature)) {
return res.status(401).send('Unauthorized');
}
// Обработка пакета событий
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');
});

Ограничения скорости

Ограничения скорости SendGrid API:

ЭндпоинтЛимитДетали
Mail Send (/v3/mail/send)Зависит от планаFree: 100/день, Essentials: зависит от плана
Marketing Contacts PUT3 запроса/секПакет до 30 000 контактов
Marketing Contacts Search50 запросов/секНа API-ключ
General API1 000 запросов/секНа API-ключ
Event WebhookПакетная доставкаДо 1 000 событий в POST

Лимиты Mail Send

Лимиты Mail Send зависят от вашего плана SendGrid. Бесплатные аккаунты ограничены 100 email/день. Проверьте детали вашего плана для точных лимитов отправки.

Устранение неполадок

Частые проблемы

ПроблемаПричинаРешение
401 UnauthorizedНедействительный API-ключПроверьте API-ключ в SendGrid Settings
403 ForbiddenНедостаточно разрешений API-ключаСоздайте новый ключ с необходимыми scope
Экспорт контактов ожидаетОбработка большого набора данныхОпрашивайте эндпоинт статуса экспорта до завершения
Синхронизация исключений не завершенаТребуется пагинацияРеализуйте пагинацию с параметром offset
Event webhook не полученURL не верифицированВыполните верификацию URL вебхука в SendGrid

Режим отладки

Включение подробного логирования:

connectors:
sendgrid:
debug: true
log_level: verbose
log_webhooks: true

Проверка подключения

Terminal window
tajo connectors test sendgrid
# ✓ API connection successful
# ✓ Contacts readable
# ✓ Lists accessible
# ✓ Statistics readable
# ✓ Suppressions accessible

Лучшие практики

  1. Сначала мигрируйте исключения, убедитесь, что отказы, блокировки и отписки в Brevo до начала отправки
  2. Используйте пакетную загрузку контактов, PUT до 30 000 контактов в запросе для эффективности
  3. Верифицируйте Event Webhook, включайте подписанные вебхуки с ECDSA-верификацией
  4. Маппируйте пользовательские поля, создайте соответствующие атрибуты Brevo перед миграцией контактов
  5. Синхронизируйте данные вовлечённости, импортируйте историческую статистику для сегментации в Brevo
  6. Обрабатывайте асинхронные экспорты, экспорт контактов асинхронный; опрашивайте статус завершения

Безопасность

  • Аутентификация по API Key, Bearer-токен с гранулярными уровнями разрешений
  • Подпись Event Webhook, верификация ECDSA-подписи для полезных нагрузок вебхуков
  • TLS-шифрование, все API-коммуникации зашифрованы через HTTPS
  • IP Access Management, ограничение доступа к дашборду и API по IP
  • Двухфакторная аутентификация, 2FA доступна для доступа к аккаунту

Связанные ресурсы

Subscribe to updates

developer-docs

Drop your email or phone number — we'll send you what matters next.

auto-detect
AI-ассистент

Привет! Спрашивайте меня о документации.