---
title: "Коннектор SendGrid"
description: "Полное руководство по интеграции SendGrid для синхронизации контактов, транзакционных email, маркетинговых кампаний и событий вовлечённости с Brevo через Tajo."
url: https://tajo.io/ru/docs/connectors/marketing/sendgrid/
markdown: https://tajo.io/ru/docs/connectors/marketing/sendgrid.md
lang: ru-RU
robots: noindex
---

Подайте заявку на ранний доступ

Укажите имя и рабочий адрес электронной почты. Мы отправим ссылку для подтверждения запроса на доступ к Tajo.

# Коннектор SendGrid

Статус коннектора: В разработке Создаётся. Ещё не проверен.

| Поле источника | Поле назначения | Пример значения |
| --- | --- | --- |
| `record.id` | `source_id` | `record_1042` |
| `record.updated_at` | `updated_at` | `2026-10-18T08:00:00Z` |
| `record.value` | `value` | `sample_value` |

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

## Обзор

| Свойство | Значение |
| --- | --- |
| **Платформа** | SendGrid (Twilio) |
| **Категория** | Marketing |
| **Сложность настройки** | Простая |
| **Официальная интеграция** | Нет |
| **Синхронизируемые данные** | Контакты, кампании, транзакционный email, события |
| **Базовый URL API** | `https://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-токена.

```bash
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 показываются только один раз при создании. Храните их надёжно. При потере необходимо создать новый ключ.

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

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

```yaml
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 |

#### Сопоставление пользовательских полей

```yaml
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)

| Событие | Триггер | Сценарий использования |
| --- | --- | --- |
| `processed` | Email принят SendGrid | Подтверждение отправки |
| `delivered` | Email доставлен получателю | Отслеживание доставки |
| `open` | Email открыт | Скоринг вовлечённости |
| `click` | Кликнута ссылка | Отслеживание интереса |
| `bounce` | Email отклонён | Гигиена списков |
| `dropped` | Email исключён | Проверка соответствия |
| `deferred` | Доставка отложена | Мониторинг повторных попыток |
| `spam_report` | Помечен как спам | Управление репутацией |
| `unsubscribe` | Отписка по ссылке | Синхронизация предпочтений |

## Примеры кода

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

```javascript
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

```javascript
// Полная миграция контактов из 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-событий

```javascript
// Обработка 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 PUT | 3 запроса/сек | Пакет до 30 000 контактов |
| Marketing Contacts Search | 50 запросов/сек | На API-ключ |
| General API | 1 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 |

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

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

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

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

```bash
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 доступна для доступа к аккаунту

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

- [Документация SendGrid API](https://docs.sendgrid.com/api-reference)
- [Руководство Event Webhook SendGrid](https://docs.sendgrid.com/for-developers/tracking-events/event)
- [Коннектор Brevo](https://tajo.io/ru/docs/connectors/marketing/brevo)
- [Коннектор Mailchimp](https://tajo.io/ru/docs/connectors/marketing/mailchimp)
- [Скилл синхронизации клиентов](https://tajo.io/ru/docs/skills/data-sync/customer-sync)
