Личный кабинет Шаблоны писем Редактор кода Редактор кода поддерживает HTML и MJML разметку. Функции Функции для вызова списка товаров Общая информация Эти функции используются в циклах for для передачи данных о товарах из фида в шаблон. Начало цикла: {% for %} Конец цикла: {% endfor %} Вызов функции возвращает список товаров, каждая итерация цикла возвращает один товар, чтобы ограничить число итераций и соответственно количество товаров в конкретном блоке, можно использовать метод slice с помощью квадратных скобок [начало:конец], например [0:2] означает, что нужно запустить цикл по первым двум товарам, [2:4] - по второму и третьему, отсчёт начинается с 0. Пример цикла по двум первым товарам из списка товаров в корзине: {% for item in get_cart_items() [0:2] %} {% endfor %} Товары из корзины get_cart_items() Просмотренные товары get_viewed_items() Товары из сервиса рекомендаций Нужно указать алгоритм сервиса рекомендаций через параметр service_name get_recommendations(service_name='top_offers') Этот список необходимо определить в отдельную переменную, чтобы избежать дублей товаров, так как каждый вызов функции возвращает новый список товаров: {% set rec_offers = get_recommendations(service_name='top_offers') %} Не все алгоритмы рекомендаций можно использовать в рассылках, доступные к использованию отмечены значком конверта. Случайные товары из фида Можно указать необходимое количество товаров в списке через параметр count get_random_offers(count=3) Этот список необходимо определить в отдельную переменную, чтобы избежать дублей товаров, так как каждый вызов функции возвращает новый список товаров: {% set random_offers = get_random_offers(count=10) %} Пример Создаём переменную random_offers со списком случайных товаров, указываем количество - 10 {% set random_offers = get_random_offers(count=10) %} Запускаем цикл по товарам в горизонтальном блоке с товарами из созданной переменной со списком и ограничиваем количество товаров до двух: {% for item in random_offers[0:2] %} {{item.name}} {{item.price}} Купить {% endfor %} Получаем 2 товара в ряд с изображением, названием, ценой и кнопкой, ведущей на страницу товара: Дополнительные функции Получить случайный промокод из импортированного списка {{get_promocode()}} Отменить формирование шаблона {{exit()}} Важно: функция exit не работает в массовых рассылках Переменные товаров Эти переменные используются в циклах товарных функций, названия соответствуют тегам в фиде {{item.picture}} {{item.name}} {{item.price}} {{item.oldprice}} {{item.url}} {{item.type_prefix}} {{item.vendor}} {{item.model}} Переменные лида Переменная Значение {{lead.name}} Имя {{lead.last_name}} Фамилия {{lead.position}} Должность {{lead.email}} Адрес электронной почты {{lead.phone}} Номер телефона {{lead.region}} Регион {{lead.country}} Страна {{lead.city}} Город {{lead.address}} Адрес {{lead.company}} Компания {{lead.birthday}} День рождения {{lead.sex}} Пол Остальные переменные Ссылка для открытия письма в браузере (веб-версия письма) {{webview_url}} Переменная используется в качестве значения атрибута href href='{{webview_url}}' Ссылка для отписки от рассылок {{unsubscribe_url}} Переменная используется в качестве значения атрибута href href='{{unsubscribe_url}}' Редактор Stripo Помимо HTML и MJML верстки можно воспользоваться редактором Stripo - визуальный редактором писем, который не требует знаний языков разметки, письмо создаётся путём перетаскивания уже готовых элементов из меню и их стилизацией. У Stripo есть своя инструция по созданию писем, ознакомиться с ней можно по этой ссылке. Рассылки Создание массовой рассылки Чтобы отправить массовую рассылку, нужно перейти в раздел "Рассылки" в личном кабинете и нажать кнопку "Создать рассылку". Адресат Кому В выпадающем меню можно выбрать "одиночный адресат" или "список клиентов" При выборе одиночного адресата можно отправить рассылку по одному адресу, например, для теста. При выборе списка клиентов можно отправить рассылку сразу всей базе клиентов или какому-либо сегменту. Адрес Это поле используется для указания почтового адреса для отправки рассылки одиночному адресату. При рассылке по списку клиентов это поле остаётся пустым. Имя списка В выпадающем меню будут отображены стандартные списки и все созданные вами списки из раздела "Списки клиентов". Для отправки рассылки по всей базе нужно выбрать список "Все клиенты". Выбор шаблона рассылки В выпадающем списке нужно выбрать шаблон письма, который хотите отправить. Можно воспользоваться поиском по шаблонам. Параметры рассылки Имя рассылки Название вашей рассылки, которое будет отображено в разделе "Рассылки". Почта отправителя Адрес электронной почты, который будет использоваться в качестве отправителя, в почтовом клиенте этот адрес будет указан в поле "От кого". Важно: используйте только корпоративный адрес электронной почты вашего сайта, для которого были настроены DNS записи. Имя отправителя Имя отправителя, которое будет отображаться в почтовом клиенте в поле "От кого". Тема письма Тема письма Время отправки Дата и время отправки рассылки. Для выбора даты и времени нужно нажать на иконку календаря. Если оставить поле пустым, рассылка отправится сразу после нажатия кнопки "Отправить". Размер сегмента и Интервал между сегментами Если необходимо отправить рассылку частями, то можно указать размер сегмента и интервал между их отправками в минутах, например 10000 писем с интервалом в 30 минут. По умолчанию указано 1000 писем с интервалом 0 минут, что значит, что рассылка будет отправлена сразу по всей базе без задержки. Провайдер Mailganer Отключить показ баннера при переходе по письму При выборе этой опции после перехода из письма на сайт не будет показываться виджет "Смартоффер". Пример заполненных параметров рассылки Отправка рассылки После заполнения всех полей нажмите кнопку "Отправить". Рассылка начнёт формироваться и вас перенаправит на страницу "Рассылки".API Изменение статуса мультилида Адрес: https://track-api.leadhit.io/client/update_multilead/ Описание Изменение статуса мультилида и всех привязанных к нему лидов. Может пригодиться, если нужно ограничить отправку писем отпределенным лидам, таким лидам можно выставлять отличный от дефолтного статус, а в условиях рассылок запретить/разрешить отправку писем лидам с данным статусом. Параметры Метод - POST В заголовках нужно передать "api-key" и "leadhit-site-id". Параметры - json с полями "email", "status", "site_id". Статус должен быть одним из списка: "new", "contacted", "customer", "manager", "regular", "wholesale". По умолчанию у мультилида установлен статус "new". Api-key и site-id предоставляем мы. Пример использования POST https://track-api.leadhit.io/client/update_multilead/ Headers (application/json): api-key: leadhit-site-id: Body (application/json): { "email": "example@mail.ru", "status": "contacted", "site_id": "" } Response 200 (application/json): { "status": "success", "message": "Multilead with email example@mail.ru was updated. New status - contacted." } Возможные ошибки Если покупатель с таким email не найден: Response 404 (application/json): { "detail": "Multilead not found" } Пример запроса с помощью CURL: curl --request POST \ --url https://track-api.leadhit.io/client/update_multilead/ \ --header 'Content-Type: application/json' \ --header 'api-key: ' \ --header 'leadhit-site-id: ' \ --data '{ "email": "example@mail.ru", "status": "contacted", "site_id": "" }' Изменение статуса заказа Адрес: https://service.leadhit.ru/api/v1/orders Метод: set_order_status Описание Изменение статусов заказов можно использовать для настройки триггерных рассылок. Параметры Метод: POST Заголовки: api-key Параметры: JSON с полями "order_id", "status"; Версия JSON-RPC: 2.0; ID запроса: 0. Статус должен быть одним из списка: "submitted", "paid", "delivered", "cancelled". После получения нами заказа, ему выставляется статус "submitted" - оформлен. API-key запросите у нас. Пример использования POST https://service.leadhit.ru/api/v1/orders Headers (application/json): api-key: Body (application/json): { "method": "set_order_status", "params": { "order_id": "f168148717", "status": "paid" }, "jsonrpc": "2.0", "id": 0 } Response 200 (application/json): { "jsonrpc": "2.0", "result": { "status": "ok", "message": "Order status changed" }, "id": 0 } Возможные ошибки Если номер заказа не найден:Response 200 (application/json): { 'message': "Order with this id doesn't exist" } Если неправильно указан статус заказа:Response 200 (application/json): { 'message': 'Possible statuses: cancelled, delivered, paid, submitted' } Пример запроса с помощью CURL: Curl: ```sh $ curl -i \ -H "Accept: application/json" \ -H "Content-Type: application/json" \ -H "API-KEY: 4f8425fc77796b0266000009:TKW0i5FP5vkIrgMlnpoZbfOEagA" \ -X POST -d '{"method":"set_order_status","params":{"order_id":"f168148717","status":"paid"},"jsonrpc":"2.0","id":0}' \ https://service.leadhit.ru/api/v1/orders/ >>> {"jsonrpc": "2.0", "result": {"status": "ok", "order_status": "paid"}, "id": 0} Общая информация Терминология Узел - конечный URL, к которому отправляются запросы. Например - https://service.leadhit.ru/api/v1/orders/. Методы - методы, которые принимают узлы, являются обычными питоновскими функциями. API API располагается по адресу https://service.leadhit.ru/api/v1/ Основной протокол - JSON-RPC 2.0 Content-type - application/json Карта методов У каждого узла API есть специальная страница - карта методов. На этой странице можно увидеть все существующие методы данного узла, а также дополнительную информацию о них. Ее можно найти, если выполнить GET-запрос (или зайти через браузер), добавив к интересующему вас URL узла в конце /map. Пример карты методов: https://service.leadhit.ru/api/v1/orders/map Авторизация Чтобы пользоваться API, сначала необходимо получить API key. Обратитесь к своему менеджеру за ним. После того, как вы получили ключ, вам необходимо передать его в заголовке POST-запроса к API. Он должен иметь название API-KEY (или api-key). В случае, если API не получило авторизационный ключ в заголовке, вы получите ответ 403. Базовый запрос Общение с API происходит по протоколу JSON-RPC 2.0, через POST-запросы. Content-type должен быть application/json. Не забывайте об авторизации (заголовок API-KEY). Помимо этого, каждый запрос к API должен содержать в себе три обязательных параметра - метод, версия JSON-RPC, id запроса. JSON-RPC всегда равен 2.0, а id может быть любым, такой же id вернется в ответе на запрос: "method": "example_method" "jsonrpc": "2.0" "id": 0 Помимо обязательных параметров, методы принимают аргументы, котороые передаются через "params". Могут быть либо списком, либо словарем. В качестве примера - метод set_order_status. Запрос: { "method": "set_order_status", "params": { "order_id": "f168148717", "status": "paid" }, "jsonrpc": "2.0" "id": 0 } Ответ: { "jsonrpc": "2.0", "result": { "status": "ok", "message": "Order status changed" }, "id": 0 } Ошибки В случае, если вы не авторизованы, сервер вернет статус 403. Если вы ошиблись в параметре, или произошла какая-то другая ошибка, сервер вернет статус 200, а в теле ответа будет содержаться ключ error, в котором описана причина ошибки. { "jsonrpc": "2.0", "id": 0, "error": { "message": "Server error", "code": -32000, "data": { "message": "Possible statuses: paid, submitted", "args": [ "Possible statuses: paid, submitted" ], "type": "ValidationError" } } } Передача бонусных баллов Передача данных Данные о количестве бонусов покупателя передаются клиентом через API по адресу https://track-api.leadhit.io/client/multilead_bonus Метод - POST В заголовках нужно передать "api-key" и "leadhit-site-id" со значениями API ключа и id сайта. Значение для api-key запросите у своего аккаунт-менеджера. Параметры - json с полями "email", "bonus". В поле bonus передается количество бонусов покупателя, в формате float. Заголовок запроса: api-key: leadhit-site-id: Тело запроса: [{ "email": "exists_lead@mail.ru", "bonus": 123.00 }, { "email": "not_exists_lead@mail.ru", "bonus": 10.00 }] Примеры ответов на запрос Response 200 (application/json) При успешной передаче списка будет выдаваться статус 200 с ответом в виде списка со статусами по каждому обновлению бонусов у лида. Все обновления, которые не были сделаны будут в конце списка со статусом “error”: [{ "status": "success", "message": "Bonuses for multilead with email exists_lead@mail.ru updated." }, { "status": "error", "message": "multilead with email not_exists_lead@mail.ru not found" }] Response 400 (application/json): { "detail": Body is empty" } При передачи списка с любыми невалидными данными будет выдаваться ошибка 422 c описанием полей, где данные некорректны Response 422 (application/json) { "detail": [ { "loc": ["string"], "msg": "string", "type": "string" } ] } Response 500 (application/json) При получении ошибки 500 необходимо проверить данные на корректность и повторить запрос через несколько минут. Если ошибка повторяется, то уведомить с примерами данных, с которыми возникает ошибка для последующего анализа { “detail”: “Internal error” } Аналитика Виджеты Описание Виджеты отправляют данные по событиям, на основе которых формируется аналитика по виджетам в личном кабинете. События виджетов доступны для отслеживания на сайте через ивент widgetStatsSended. Если нужно отправлять данные о событиях виджетов в систему аналитики (Google Analytics, Яндекс Метрика), то можно добавить JS обработчик на нужные события, указав id виджета и название события, например: document.addEventListener('widgetStatsSended', function (e) { if (e.detail.wid == 'cb509' && e.detail.etype == 'popup_view') { // cb509 - id виджета; popup_view - название события ... вызов функции системы аналитики (reachGoal, gtag, ga) для отправки события ... } }); Идентификаторы виджетов можно посмотреть в личном кабинете в разделе Аналитика > По виджетам, кликнув на виджет откроется страница с аналитикой по виджету, последняя часть url страницы и есть идентификатор виджета. Вы можете настроить отслеживание событий самостоятельно или запросить у своего менеджера настройку средствами LeadHit. Для этого нам потребуются названия целей и соответствующая им система аналитики. Полезные ссылки: Настройка целей в Яндекс Метрике Настройка целей в Google Analytics [UA] Настройка целей в Google Analytics 4 [GA4] Типы событий по виджетам Название виджета: описание события | название события для отслеживания Смартоффер (десктоп) Показ виджета | popup_view Показ виджета более 3 секунд | popup_view_3s Показ виджета более 10 секунд | popup_view_10s Заполнение виджета | fill Закрытие виджета | close Смартоффер (мобильные устройства) Показ ярлыка виджета | view Показ окна виджета | popup_view Заполнение виджета | fill Закрытие виджета | close Сворачивание виджета | roll_up Колесо фортуны (десктоп) Показ виджета | popup_view Показ виджета более 3 секунд | popup_view_3s Показ виджета более 10 секунд | popup_view_10s Заполнение виджета | fill Закрытие виджета | close Колесо фортуны (мобильные устройства) Показ ярлыка | view Показ окна | popup_view Показ окна более 3 секунд | popup_view_3s Показ окна более 10 секунд | popup_view_10s Заполнение формы | fill Закрытие | close Scratch Показ виджета | popup_view Показ виджета более 3 секунд | popup_view_3s Показ виджета более 10 секунд | popup_view_10s Заполнение виджета | fill Закрытие виджета | close Вишлист Показ ярлыка виджета | view Показ окна виджета | popup_view Показ виджета более 3 секунд | popup_view_3s Показ виджета более 10 секунд | popup_view_10s Заполнение виджета | fill Закрытие виджета | close Подписка на товары Показ виджета | popup_view Заполнение виджета | fill Social Proof Показ виджета | view Купон Показ виджета | popup_view Закрытие виджета | close Notification Показ виджета | view Закрытие виджета | close Брошенная корзина Показ виджета | view Клик | click Закрытие виджета | close Последние просмотренные товары Показ виджета | view Клик | click Закрытие виджета | close Бустер среднего чека Показ виджета | popup_view Показ окна с мотивацией | show_motivation Показ финального окна | show_promo Сворачивание | roll_up Рекомендации Показ виджета | view Клик | click Оповещения Рассылка оповещений на webhook Данные из оповещений можно получать через webhook. Для этого в настройках сайта нужно указать URL веб-хука, на который будет приходить webhook. Включить параметр оповещение через веб-хук в настройках оповещения. Как только оповещение сработает, на указанный url придёт post-запрос с данными. Пример {'alert_name': 'Alert Name', 'domain': 'http://your_site.ru', 'items': [ { 'available': true, 'category': 'Product Category', 'category_id': '4478932', 'curr': 'руб.', 'description': 'Some Description', 'id': '62bbfe9f07651d3e10919cda', 'min_url': 'url', 'model': 'Product Model', 'name': 'Product Name', 'offer_id': '999999999', 'oldprice': '', 'picture': 'https://media.leadhit.io/picture.jpg', 'price': '99999.99', 'stocks': {}, 'type_prefix': 'Product Prefix', 'url': 'https://your_site.ru/collection/product/your_product', 'vendor': 'Vendor Name' } ], 'last_form_with_phone': 'Корзина', 'last_form_with_phone_date': '2022-06-29 12:17', 'last_form_with_phone_url': 'https://your_site.ru/new_order', 'lead_channel': 'direct', 'lead_email': 'Н/Д', 'lead_form': 'Корзина', 'lead_form_add1': '', 'lead_form_add2': '', 'lead_form_url': 'https://your_site.ru/new_order', 'lead_id': '62bbe358eec3047b1b05cbd1', 'lead_index': '', 'lead_ip': '999.999.999.999', 'lead_name': 'Lead Name', 'lead_phone': '8(999)999-99-99', 'lead_region': '', 'lead_time_added': '29.06.2022 12:17:28', 'lead_visits': '1'}