Автоматизация маркетинговой отчётности и генерация презентаций в яхтенном бизнесе: технический кейс
- Sarov+

- 2 days ago
- 4 min read
Современный яхтенный бизнес — это не только престиж и роскошь, но и сложная операционная машина, требующая чёткого контроля над маркетинговыми показателями. Когда руководство компании запрашивает ежемесячный отчёт по каждой яхте в портфеле, а данные разбросаны по четырём разным источникам, задача перестаёт быть тривиальной. В этой статье мы расскажем о том, как выстроили полноценную цепочку автоматизации — от сбора данных до готовой Canva-презентации, которая генерируется буквально в один клик прямо из CRM.
А узнать больше можно в нашем видео:
Контекст: что такое Central Agency и зачем нужен отчёт
Прежде чем говорить о технической реализации, важно понять предметную область. Владелец яхты, который хочет её продать или сдать в аренду, как правило, обращается к профессиональному брокеру. Между владельцем и брокерской компанией заключается специальный договор, по которому компания становится Central Agency для этой яхты, конкретный брокер — Central Agent, а сама яхта получает статус Central Agency listing.
Именно в таком контексте руководство компании поставило задачу: создать ежемесячный маркетинговый отчёт с ключевыми перформанс-метриками по каждой Central Agency. Требования включали:
количество лидов по яхте из CRM;
веб-сайт-аналитику — просмотры страниц, среднее время на странице;
сводные данные по MLS (Multiple Listing Services) — специализированным порталам для публикации яхтенных листингов;
email-маркетинг KPI: доставленные письма, открытия, клики, open rate;
social media KPI: количество постов, вовлечённость, охваты;
данные по ивентам (яхт-шоу) и пресс-релизам.
Архитектура источников данных
Проанализировав требования, мы определили четыре ключевых источника данных, из которых необходимо было собирать информацию.
Dataverse стал основным источником: здесь хранятся данные о лидах, маркетинговые активности, ивенты и пресс-релизы. Это центральное хранилище операционной информации компании.
SharePoint использовался для хранения MLS-выгрузок. Ответственный сотрудник ежемесячно загружает туда файлы, после чего логика автоматически подхватывает их и включает в результирующий файл.
Azure-таблица хранила выгрузку из Google Analytics — детальную веб-аналитику по сайту компании: какие страницы открывались, сколько времени пользователи проводили на страницах яхт, из каких стран и с каких устройств заходили.
Algolia — Search-as-a-Service решение, в котором компания хранит информацию о статьях. Мы использовали этот источник для получения данных о публикациях, в которых упоминались конкретные яхты, — как на сайте компании, так и в рассылках.
JSON-файл как основа решения
Объединив данные из всех четырёх источников, мы пришли к выводу, что оптимальным форматом результирующего файла будет JSON. Выбор был обусловлен тем, что с файлом должна была работать вторая команда разработчиков, преимущественно пишущих на Python, а JSON широко поддерживается всеми основными языками программирования и удобен для передачи по сети.
Файл генерируется Azure-функцией на C# с Timer Trigger и обновляется ежедневно. Структура JSON включает следующие ключевые узлы:
Leads — количество лидов из Dataverse, разделённых на Sales и Charter, с ID Central Agency в качестве ключа;
Navigator.ml — данные по двум специализированным рассылкам: Yacht Navigator (для Sales) и Lifestyle Navigator (для Charter), отправляемым раз в месяц широкой аудитории;
Yacht Emails — аналитика по каждому маркетинговому письму за прошедший месяц: доставленные, открытые, клики и другие метрики;
Website Sales / Website Charter — веб-аналитика раздельно для Sales и Charter яхт: открытия страниц, клики, география и устройства пользователей;
MLS-узлы — четыре узла с данными о views и impressions по каждой Central Agency на различных листинговых платформах;
Events — метаданные по ивентам с привязкой к конкретным яхтам. Например, если на Monaco Yacht Show физически присутствовала яхта Alfa Nero, эта связь фиксируется здесь;
Articles — публикации из Algolia и упоминания в Navigator-рассылках;
Press Releases — массив объектов с метаданными по пресс-релизам из CRM.
От JSON к Power BI: генерация CSV-файлов
JSON-файл является лишь промежуточным звеном. Непосредственным источником данных для Power BI отчёта служат CSV-файлы, которые генерирует вторая команда на основе нашего JSON. Такой подход упрощает импорт и трансформацию данных в семантической модели отчёта.
Схема взаимодействия выглядит следующим образом: наша Azure-функция с Timer Trigger генерирует JSON-файл, после чего автоматически триггерит функцию второй команды. Та, в свою очередь, на основе JSON создаёт набор CSV-файлов, которые напрямую поступают в Power BI. Итоговый отчёт содержит пять вкладок: Overview, Social Media, Email, Media Events и AI Insights.
Данные по Social Media в JSON-файл не включались — они собираются отдельной логикой через Sprout Social API, которая агрегирует все публикации за прошедший месяц и передаёт их в общий пайплайн обработки.
Автоматическая генерация Canva-презентации
Второй крупной задачей в рамках проекта стала автоматическая генерация маркетинговых презентаций. Требование было простым: пользователь открывает запись Central Agency в CRM, нажимает кнопку, выбирает отчётный период — и получает готовую презентацию.
В основе решения лежит Canva Data Autofill — инструмент, позволяющий создать шаблон презентации и разметить в нём DataFields: текстовые элементы слайдов, которые будут автоматически подменяться актуальными данными при каждой генерации.
Для реализации этого функционала мы разработали две Azure-функции.
Первая функция (HTTP Triggered) инициирует генерацию. Она принимает из CRM параметры — TemplateId, ReportingPeriod и другие, — получает access token, запрашивает у Canva API модель презентации со всеми DataFields, наполняет её данными и триггерит специальный endpoint. В ответ Canva возвращает JobID, который сохраняется в таблице Dataverse — Canva Presentations — вместе с остальными метаданными.
Вторая функция (Timer Trigger, запускается каждую минуту) отслеживает статус запущенных задач. Она запрашивает из Dataverse все записи со статусом In Progress и проверяет их статус через Canva API. Если статус становится Success, функция записывает в Dataverse все полученные URL-ы — view URL, edit URL, thumbnail URL — и отправляет пользователю in-app уведомление о готовности презентации. В случае ошибки логируется её причина для последующего анализа.
Заключение
Описанное решение демонстрирует, как грамотно выстроенная архитектура данных позволяет трансформировать разрозненную информацию из четырёх источников в полноценный аналитический инструмент. Интеграция Dataverse, SharePoint, Azure, Algolia и Canva API в единый пайплайн дала команде возможность не только видеть ключевые маркетинговые показатели в Power BI, но и генерировать готовые клиентские презентации буквально в один клик. Именно такой подход — когда технические решения напрямую закрывают бизнес-потребности — и отличает по-настоящему эффективную автоматизацию.



Comments