№35 Синхронизация базы данных с рассылочным сервисом

В прошлый раз мы познакомились с дополнительным функционалом автоответчиков Мэйл Чимп, которым он “оброс” за последний год.

Сегодня посмотрим, что нам может дать синхронизация базы данных по клиентам с рассылочным сервисом. Сразу оговорюсь, что речь пойдёт о работе именно со сторонним сервисом рассылок.

Самописные модули как правило работают напрямую с базой данных по клиентам, и в таком случае какая-либо дополнительная синхронизация не нужна.

 

Выгрузка email вручную

Когда база по клиентам и база в рассылочном сервисе (список рассылки) не синхронизированы, происходит примерно следующее:

Новые клиенты оставляют свои контакты на сайте (через форму подписки, регистрации или сбора лидов). Данные попадают в таблицу Excel, , CMS или CRM-систему (в зависимости от того, что используется для ведения базы) и накапливаются там какое-то время.

Затем наступает пора делать рассылку и контакты вручную добавляются в рассылочный сервис (например, в Мэйл Чимп). В целом это неплохо, но у такого подхода есть свои недостатки:

- Обработка данных происходит вручную — это лишние расходы времени, возможные ошибки и, к тому же, нудная, периодически повторяющаяся задача.

- Данные поступают в сервис рассылок с задержкой по времени между их фактическим получением от клиента и моментом загрузки в сервис.

Например, если вы загружаете новые адреса в список рассылки раз в неделю, то задержка составит для разных клиентов от одного до семи дней.

Если вы загружаете адреса раз в месяц — и того дольше.

В этом случае не получится настроить автоматические рассылки через сервис (например, welcome email) или придётся принимать во внимание, что такие рассылки будут уходить с запозданием, что может свести на нет все преимущества автоответчиков.

 

Выгрузка email автоматически

Безусловно, автоматическая загрузка контактов в рассылочный сервис решила бы вышеперечисленные проблемы.

Если не брать во внимание блоги и прочие площадки, где подписывать посетителей можно просто с помощью готовой формы подписки самого сервиса, то для автоматизации этой задачи понадобится как раз синхронизация баз данных.

Когда выполнена синхронизация:

- Контакты поступают в сервис автоматически — т.е. нет лишних задач и “человеческого” фактора.
— База в рассылочном сервисе поддерживается в самом актуальном состоянии и обновляется в режиме реального времени — это позволяет настраивать какие угодно автоответчики.

Чтобы помочь пользователям осуществить эту задачу, большинство рассылочных сервисов идут им навстречу, предоставляя API с подробной документацией, которая позволяет специалисту IT на основе технического задания осуществить практически любую синхронизацию. Причём эта задача не является чем-то принципиально сложным в области программирования.

 

Техническое задание на синхронизацию

По идее, задачу на синхронизацию можно обрисовать только в самых общих чертах, оставляя исполнителю додумывать остальное, но тогда на выходе может получиться что-то непредсказуемое. Т.е. работать будет, но помогать в реализации задач email маркетинга — вряд ли.

Поэтому хорошо всё же составить для программиста подробное техническое задание (ТЗ), которое учитывало бы все нюансы, все цели email рассылок. В конечном итоге, тщательная подготовительная работа на этом этапе поможет избежать осложнений и лишних доработок на последующих.

 

Структура ТЗ (примерная)

ТЗ на синхронизацию должно описывать набор данных о клиентах и событий, при которых эти данных “заходят” в рассылочный сервис.

ТЗ пишется в свободной форме — так, как удобно вам, как привыкли ваши программисты или принято в вашей организации.

Описание пунктов ТЗ и пример ниже приблизительные (т.е. ни в коем случае не являются единственно возможным вариантом исполнения или руководством к действию, от которого нельзя отступать ни на шаг).

Итак, обычно ТЗ на синхронизацию содержит:

- Общую постановку задачи,
Вспомогательные материалы (доступ к рассылочному сервису, ссылку на документацию API, ключ API, ссылку на Список рассылки),
Набор данных о клиентах, которые должны поступать в сервис,
Описание событий, при которых эти данные поступают в сервис,
Примеры реализации этих событий.

Если есть какие-то дополнительные материалы, которые могут помочь в работе (например, схема работы автореспондеров), то можно добавить их в конце документа Приложениями.

 

Набор данных

Данные о клиентах, которые “заводятся” в рассылочный сервис — это:

Информация из полей различных форм сбора данных (email, имя, город, профессия и т.п.).
Данные из CMS (ID зарегистрированного продукта, дата события — регистрации, заказа, последнего посещения сайта и т.п.).
“Искусственные” данные: генерируются специально на основе уже имеющегося набора данных (например, генерация “м” или “ж” в зависимости от пола подписчика, генерация источника подписки — форма регистрации, форма подписки, посадочная страница и т.п.).
Счётчики: тоже искусственные числовые данные для подсчёта количества событий (например, количества заказов, количества посещений и проч.)
“Производные” данные: рассчитываются на основе поступающей информации (например, средний чек, суммарный чек, % оплаченных заказов и т.д.).

 

События

События, при которых данные о клиенте должны быть загружены в рассылочный сервис, определяются задачами email маркетинга.

Типовые события:

- регистрация/подписка,
заказ товара/услуги,
обновление профиля клиента,
заполнение формы для сбора лидов.

Верный признак того, что событие нужно внести в ТЗ — это то, если вы хотите сделать его исходной точкой для отправки каких-либо автоматических сообщений или отличительным признаком для сегментации.

 

Пример (сокращённый)

Посмотрим на довольно простой случай — синхронизацию базы данных интернет-магазина, где не предусмотрена возможность регистрации покупателей (т.е. нет персонального раздела сайта для каждого клиента и во время очередного заказа покупатель вводит свои данные — контакты, способ доставки, оплаты и т.п. — заново).

Задача:

Синхронизировать БД интернет-магазина Shop_example.net и рассылочного сервиса MailChimp.

Материалы:

— Доступ к сервису: логин/пароль,
— Список рассылки, с которым осуществляется синхронизация: https://us2.admin.mailchimp.com/lists/members/?id=xxxxxx
— Документация API: https://developer.mailchimp.com/
— Ключ API: 00aa000ааа00000ааа00000аа000000а-us2

Данные:

1) Оформление заказа:

- Имя
— Email
— Город
— Статус подписки:

- подписался,
— не подписался.

2) Выбор способа доставки:

- курьер
— самовывоз
— почта

3) Выбор способа оплаты:

- наличные
— Qiwi
— кредитная карта
— Яндекс.Деньги
— Webmoney

4) Данные о заказе из CMS:

- ID товаров
— Сумма заказов
— Количество заказов
— Средний Чек
— Дата последнего заказа

 

События:

1 Пользователь оформил заказ и нажал кнопку Подтвердить заказ,

2 Выполняется проверка, есть ли его email в базе MailChimp

2.1 Если email нет

2.1.1 Пользователь подписывается
2.1.2 В MailChimp отправляются данные:

(1) Email – в столбец Email,
(2) Имя – в столбец Имя,
(3) Город – в столбец Город,

(4) Данные из чек-бокса Получать информацию о скидках магазина – в столбец Статус подписки:

- если галочка в чек-боксе проставлена, в столбец отправляется – подписался,
— если галочка в чек-боксе не проставлена, в столбец отправляется – не подписался.

(5) Данные по способу доставки – в столбец Способ доставки: …
(6) Данные по способу оплаты – в столбец Способ оплаты: …
(7) Данные по составу заказа – в столбец ID товаров: …
(8) Данные по сумме заказа – в столбец Сумма заказов,
(9) Цифра «1»  – в столбец Количество заказов: …
(10) Отношение (Сумма заказов) / (Количество заказов) – в столбец Средний чек (округляется до целого),
(11) Данные по дате заказа – в столбец Дата последнего заказа: …

Пример:

2.2 Если email уже есть: …

Посмотреть пример ТЗ целиком »

 

Заключение

Синхронизация базы данных нужна, когда возникает потребность импортировать информацию о подписчиках в рассылочный сервис в режиме реального времени.

Синхронизация выполняется программистом на основе подробного технического задания при помощи API рассылочного сервиса.

ТЗ составляется, исходя из задач email маркетинга, в свободной форме — так, как удобно вам и вашему программисту.

Оно включает набор данных о клиентах и событий, при которых эти данные должны быть загружены в сервис.

 

P.S. В следующий раз поговорим о сегментации: как оценить минимальный размер сегмента, с которым ещё выгодно работать?

 

P.P.S. Если вы ещё не подписались на мою рассылку — самое время это сделать. Я не только анонсирую свежие статьи блога, но и делюсь с подписчиками бонусной информацией, а также показываю отдельные приёмы email маркетинга на практике. До встречи в вашем почтовом ящике! :-)

 

 


  • Крайне важный и архиполезный блог из всех, что я встречал на просторах рунета. Подчерпнул массу информации. Всё изложено просто и понятно. Бесконечно благодарен Автору за его работу. Ждем новых статей! Спасибо.

    • Alexey Efimov

      Спасибо на добром слове)

  • Сева

    Спасибо! Очень полезно! Т.к. столкнулся с задачей оформить ТЗ…

  • sasha albanova

    О сборах контактов. Вот хороший сайт, как по мне. Тоже дополню ваш блог, спасибо! http://standartsoft.ru/harvester

    • Alexey Efimov

      Не совсем то, что нужно для синхронизации по API, но всё равно полезно — спасибо)

  • Сергей

    Здравствуйте, Алексей!
    Очень полезная статья, спасибо.

    Вопрос: а для чего нужно после оформления заказа проверять есть ли email в базе MailChimp или нет? Насколько я понимаю можно просто заливать по api данные в чимп, а там он сам либо обновляет данные либо создает нового клиента.

    • Alexey Efimov

      Добрый день, Сергей.

      Честно говоря, не сильно разбираюсь в программировании и не знаю, каким образом действует Чимп в случае дублирования контакта.

      Поэтому на всякий случай стараюсь прописывать в ТЗ этот сценарий, потому что мне важно уточнить для программиста, каким именно образом обновляются данные для уже существующего подписчика. Что-то может быть дописано через запятую в ячейку базы данных, где-то может осуществляться замена одного параметра на другой, в ячейке с количеством заказов происходит суммирование и т.д.

      Примерно такие соображения.

      • Сергей

        Алексей, спасибо за ответ!
        Подскажите, пожалуйста, сколько ориентировочно стоит внедрение такой синхронизации как у вас в примере (если заказывать программисту)? хотя бы ориентировочно «плюс/минус», чтобы понимать порядок цен.

        • Alexey Efimov

          Сложно сказать.
          Многое зависит от стоимости часа работы исполнителя, а также от самого ТЗ (чаще всего бывают нюансы, отличающиеся от приведённого примера).

          В моей практике пока что встречался разброс цен от 10 до 40 тыс. рублей.