Kommo + Brevo: email и SMS-рассылки с привязкой к этапу воронки
Brevo (бывший Sendinblue) — платформа для email и SMS-маркетинга. Kommo — CRM с воронкой продаж. В большинстве компаний они работают параллельно: маркетинг рассылает письма по своим спискам, продажи ведут сделки в CRM. Контекст не пересекается — менеджер не знает, открыл ли клиент письмо, а маркетолог не знает, на каком этапе воронки клиент находится. Интеграция Kommo и Brevo синхронизирует оба потока: этап сделки -> сегмент в Brevo, реакция на письмо -> данные в карточке Kommo.
Что синхронизируется между Kommo и Brevo
Kommo -> Brevo:
— Новый лид на этапе «Квалификация» -> контакт добавляется в Brevo список «Тёплые лиды» -> запускается nurturing-цепочка
— Лид перешёл на «Коммерческое предложение» -> контакт переносится в список «Горячие» -> индивидуальное письмо с КП
— Лид закрыт (Won) -> добавляется в список «Клиенты» -> welcome-серия
— Лид потерян (Lost) -> добавляется в список «Реактивация» -> серия через 30–60 дней
Brevo -> Kommo:
— Контакт открыл письмо -> Note в карточке Kommo «Открыл письмо [название] [дата]»
— Контакт кликнул ссылку -> Note «Кликнул [URL] в письме [название]»
— SMS доставлено / не доставлено -> статус в кастомном поле
Архитектура интеграции
Kommo: смена этапа сделки
↓ Webhook -> Backend
1. GET контакт сделки (email)
2. Brevo API: getContactInfo(email)
-> найден: updateContact (обновить атрибуты, списки)
-> не найден: createContact
3. Brevo API: addContactToList(listId)
4. Brevo API: sendTransactionalEmail (если нужно разовое письмо)
Brevo Webhook: opened / clicked
↓ Backend
1. Найти контакт в Kommo по email
2. Создать Note на связанной сделке
3. (Опционально) Обновить скоринг-поле контакта
Brevo REST API: ключевые методы
Brevo API авторизуется через api-key в заголовке.
Создание или обновление контакта:
import sib_api_v3_sdk
configuration = sib_api_v3_sdk.Configuration()
configuration.api_key['api-key'] = BREVO_API_KEY
api = sib_api_v3_sdk.ContactsApi(sib_api_v3_sdk.ApiClient(configuration))
# Создать или обновить контакт с атрибутами из Kommo
create_contact = sib_api_v3_sdk.CreateContact(
email=email,
attributes={
'FIRSTNAME': first_name,
'LASTNAME': last_name,
'PHONE': phone,
'CRM_STAGE': kommo_stage_name,
'CRM_DEAL_VALUE': deal_price
},
list_ids=[target_list_id],
update_enabled=True # Обновить если контакт уже существует
)
api.create_contact(create_contact)
Отправка транзакционного email:
send_email = sib_api_v3_sdk.SendSmtpEmail(
to=[{'email': email, 'name': contact_name}],
template_id=BREVO_TEMPLATE_ID,
params={
'deal_name': deal_name,
'manager_name': manager_name,
'proposal_link': proposal_url
}
)
api_instance.send_transac_email(send_email)
Отправка SMS:
sms_api = sib_api_v3_sdk.TransactionalSMSApi(sib_api_v3_sdk.ApiClient(configuration))
send_sms = sib_api_v3_sdk.SendTransacSms(
sender='Exceltic',
recipient=phone,
content=f'Ваше КП от {manager_name} отправлено на email. Вопросы? Ответьте на это сообщение.'
)
sms_api.send_transac_sms(send_sms)
Маппинг этапов Kommo -> списки Brevo
| Этап Kommo | Список Brevo | Действие при добавлении |
|---|---|---|
| Новый лид | Lead Nurturing | Запуск email-цепочки (5 писем, 14 дней) |
| Квалифицирован | Hot Leads | Персональное письмо от менеджера |
| КП отправлено | Proposal Sent | Reminder через 3 дня если не открыл |
| Won | Clients | Welcome-серия -> onboarding |
| Lost | Reactivation | Пауза 30 дней -> реактивация |
Один контакт в Brevo может быть одновременно в нескольких списках — это нормально. Важно правильно управлять unsubscribe: если контакт отписался от рассылки, Brevo не должен получать повторные запросы на добавление его в списки.
Обработка отписок
Brevo автоматически отмечает контакт как emailBlacklisted: true при отписке. Перед добавлением нового контакта или обновлением:
def safe_add_to_list(email: str, list_id: int):
contact_info = api.get_contact_info(email)
if contact_info.email_blacklisted:
# Не трогаем отписавшегося
return
api.add_contact_to_list(list_id, {'emails': [email]})
Это критично: попытка добавить отписавшегося в список нарушает GDPR и может привести к блокировке аккаунта Brevo.
Реальный кейс
B2B-компания (SaaS, 60–80 лидов в месяц, цикл сделки 3–6 недель):
- До интеграции: маркетинг рассылал newsletter всем подряд. Горячие лиды на этапе «Переговоры» получали те же письма, что и холодные из базы — без персонализации.
- После: лиды из Kommo автоматически распределяются по сегментам Brevo в зависимости от этапа. «Горячие» получают 1-on-1 письмо от менеджера (транзакционный шаблон). Lost-лиды попадают в реактивационную цепочку через 45 дней.
- Результат: open rate транзакционных писем от менеджера — 61% (против 22% у массовых рассылок). Три реактивированных клиента за первые 2 месяца из lost-сегмента.
Аналогичный принцип сегментации применяли при интеграции Kommo и ActiveCampaign — там тоже ключевой вопрос в корректной двусторонней синхронизации статусов.
Для кого актуально
Интеграция Kommo + Brevo имеет смысл если:
— Brevo используется для email и/или SMS и менять его не планируется
— Нужны разные цепочки для разных этапов воронки, а не одна рассылка для всех
— Важно видеть в Kommo, открыл ли клиент письмо перед звонком
— Компания отправляет SMS-напоминания или транзакционные SMS
Часто задаваемые вопросы
Brevo имеет CRM — зачем использовать Kommo параллельно?
Brevo CRM — минималистичный инструмент, заточенный под маркетинговые задачи. Kommo — полноценная CRM с Digital Pipeline, телефонией, задачами, воронками. Они закрывают разные потребности: Kommo — процесс продажи, Brevo — маркетинговая коммуникация. Интеграция позволяет командам работать в привычных инструментах.
Sendinblue переименовался в Brevo — изменился ли API?
API остался обратно совместимым. Endpoint api.brevo.com работает наравне со старым api.sendinblue.com. SDK обновился: старый sib-api-v3-sdk (Python) переименован в brevo-python, но старый тоже продолжает работать.
Как передавать персональные данные контактов в Brevo согласно GDPR?
Brevo — европейская компания, серверы в ЕС, GDPR-compliant. Для передачи данных нужно: (1) наличие правового основания (договор или согласие); (2) если используете Brevo для маркетинга — явное согласие на маркетинговые письма. Помечайте контакты в Brevo флагом smsBlacklisted или emailBlacklisted если согласия нет.
Как Brevo webhook передаёт события открытия письма?
Brevo Webhook настраивается в разделе Settings -> Webhooks. Поддерживаемые события: opened, clicked, delivered, bounced, unsubscribed. Каждый webhook содержит email контакта, ID кампании, timestamp — достаточно для связи с Kommo по email.
Итого
- Kommo + Brevo: двусторонняя синхронизация — этап воронки определяет сегмент в Brevo, реакция на письмо попадает в Kommo
- Транзакционные email и SMS из Brevo запускаются по событиям в Kommo
- Обработка отписок (emailBlacklisted) обязательна — нарушение ведёт к блокировке аккаунта
- Типовой срок разработки — 2–3 недели
- Актуально для компаний с циклом сделки от 2 недель, где email-nurturing влияет на конверсию
Если вы используете Brevo и Kommo и хотите связать маркетинговые рассылки с воронкой — опишите текущую структуру этапов и сегментов. Exceltic.dev предложит схему синхронизации под вашу логику.