Столкнулся с тем, что на нескольких SasS проектах не было нормальной аналитики, чтобы: Как правило, использовались Google Analytics, ROIStat, Метрика, Amplitude, но ни один инструмент не был до конца интегрирован. Для решения задач выше выбрал Google Analytics (далее GA), он далеко не идеальный, но решить базовые задачи вполне реально и не так затратно. Плюсы Минусы Давайте рассмотрим решение каждой задачи от технической реализации до онлайн-отчета, который можно открыть и посмотреть за пару минут. Так как в одну статью с трудом можно уместить весь материал, то разделю на несколько частей, к тому же не факт, что эта информация нужна сообществу и проблема имеет место быть. Реализация всех этапов требует уровень средний уровень владения Google Analytics, в рамках одной статьи не получится охватить весь необходимый скилл, но он легко гуглится. Начнем с построения воронки. Хороший отчет тот, из которого последуют действия. На выходе мы хотим увидеть конверсию из одного этапа воронки в другой и количественные показатели, например.  Этапы воронки могут быть непоследовательны и вариативны, представим, что мы проектируем воронку для сервиса наподобие Авито. Открыл конструктор > Создал объявление > Регистрация > Выбор тарифа > Транзакция Регистрация > Пополнение баланса > Открыл конструктор > Создал объявление > Применил тариф В таком случае нам бы хотелось иметь возможность вручную составлять воронки на ходу и не быть привязанными к определенной последовательности, например, мы хотим посмотреть пользователей, кто сначала создает объявление, а потом платит. Открыл конструктор > Создал объявление > Выбрал тариф > Оплата И наоборот, сначала, кто пополняет баланс, а потом, создает объявление. Пополнил баланс > Открыл конструктор > Создал объявление > Применил тариф Для этого на каждый этап воронки нам нужно отправлять в Google Analytics событие, из которых мы сможем составлять воронки, как нам удобно, поэтому рассмотрим, что это за события и как их отправлять. Настоятельно рекомендую использовать Google Tag Manager (далее GTM), это слой между сайтом и счетчиками, например, вы можете один раз настроить событие и через GTM отправлять его в Analytics, Метрику и прочее. Есть много способов, но самый надежный и правильный, это отправка через слой данных (data layer). Слой данных, это просто транзит между сайтом и счетчиками. Для отправки мы должны инициировать следующее выражение на javascript. Разберем подробнее каждую строку window.dataLayer = window.dataLayer || []; — проверяем есть ли уже созданный слой данных, если нет, то создаем новый. dataLayer.push({ 'event': 'name’}); — в нужный момент добавляем в слой данных название события;
 'name' — собственно, название события; Итого, нам нужно инициировать данное выражение в каждый момент воронки и подставлять название событий, например, мы хотим отправлять события в момент, когда пользователь открывает конструктор объявлений. Или в момент, когда пользователь заполнил и подтвердил объявление в конструкторе. Протестировать, верно ли приходят события, можно в дебаг моде GTM, углубляться в это не будем, так как можно легко погуглить.  Теперь нам нужно извлечь события из слоя данных и отправить в GA Создаем триггер в GTM вида Custom event (Пользовательское событие) и в поле Event name (Название события) указываем ad_submit , это как раз то значение, которое мы указывали при отправке события на сайте. Далее, это триггер будет инициировать запуск тега, который в свою очередь отправляет событие в Google Analytics.  Далее создаем тег, в котором указываем следующие значения  Категория funnel и Действие ad_submit указываются произвольные, именно по ним мы будем идентифицировать событие в GA. В качестве триггера указываем наш созданные ранее триггер Заполнено объявление.  После сохранения тега разворачиваем его в продакшн, нажатие на кнопку Publish (Публиковать) и тестируем: при заполнении объявления должно приходить событие в отчет GA под названием Real time > Events (В реальном времени > События)  Аналогичный цикл проводим для других событий, то есть этапов воронки, которые мы хотим отслеживать. Предположим, мы отправили все события и нужно построить из них воронку. Создаем сегменты в GA, каждый сегмент равен одному событию, например, создаем сегмент для события Открыл редактор, так как оно будет первое в последовательности. Для этого выбираем любой отчет в GA, например Channels (Каналы), и нажимаем +Add Segment (Добавить сегмент)  Далее + New segment (Новый сегмент) и задаем параметры сегмента  Во вкладке Sequence (Последовательности) Include (Включить) Users (Пользователей), у которых Any user interaction (Любое из взаимодействий) соответствует событию Event Category exactly matches funnel AND Event Category exactly matches openAdsEditor Простыми словами мы выделяем пользователей, которые взаимодействовали с нашим событием. Далее делаем второй этап воронки, для этого копируем первый сегмент.  И внутри добавляем событие второго этапа воронки Заполнил объявление. Так как нам необходимо, чтобы учитывались только те пользователи Заполнил объявление, которые ранее открыли редактор, то в качестве шага один добавляем предыдущее событие воронки Открыл редактор, а в качестве шага 2 Заполнил объявление.  То есть во второй этап воронки Заполнил объявление у нас попадают только те пользователи, кто прошел первый этап Открыл редактор.  Изменения воронки в разрезе дней, недель или месяцев.  Воронка в разрезе общих показателей отчете или в разрезе его параметров, а данном случае Каналов трафика. Немного модифицировав отправку событий можно добавить, например, выбранную тему объявления, чтобы смотреть, по каким тематикам хуже размещаются объявления, но об этом в следующих статьях. Все, была ли полезна информацию? Какие альтернативные решения?  Веб-аналитик