Кейс: Как отслеживать скачивания файлов и программ на сайте с помощью Google Analytics Статьи редакции
Артур Кузяков, генеральный директор компании DriverPack Solution, поделился с редакторами рубрики Growth Hacks нестандартным подходом к получению и анализу статистики скачиваний файлов и программ на сайте.
Для улучшения нашего сервиса ( drp.su) мы отслеживаем с помощью Google Analytics и «Яндекс.Метрики» конверсию пользователей в воронках следующего типа.
- Посетил сайт.
- Нажал на кнопку «скачать приложение».
- Запустил приложение.
- Приложение установило все драйвера.
Это стандартная задача для веб- и мобильного аналитиков, но мало кто работает с переходами от загрузки программы на сайте к её запуску на компьютере. Это связано с тем, что в цикле использования закачка файла или программы всего одна и потери там небольшие, или с тем, что на других уровнях воронки проблемы гораздо больше.
С наших Download-серверов каждый день скачивается несколько миллионов драйверов (статичных .exe и .zip файлов). Чтобы отслеживать и устранять проблемы на этапе скачивания пользователем приложения с сайта и приложением драйверов с сервера, нам надо было ответить на следующие вопросы: кто, когда, как часто и сколько скачивает драйверов, и, что не менее важно, успешно ли завершились эти скачивания.
Самое очевидное решение — проанализировать логи Nginx. Для этого можно было бы использовать такие инструменты, как AWstat, GoAccess, ELK stack или Splunk, или в крайнем случае собирать логи где-то у себя. В использовании каждого из перечисленных инструментов есть свои минусы: неудобный интерфейс, скудность получаемых данных, сложность настройки, необходимость «допиливать» и так далее, то есть все вышеперечисленные решения по тем или иным причинам не подходят.
Помимо несоответствия существующих решений выставляемым требованиям, мало ответить на вопросы, кто, когда, как часто и сколько скачивает драйверов. Эти данные надо объединить с данными, которые хранятся в Google Analytics. Только тогда можно будет увидеть полную картину, построив сегменты пользователей, воронки и отчёты.
Вот тогда мы и решили заставить веб-сервер Nginx отправлять события в Google Analytics сразу после завершения скачивания файла. Бонусом добавили в событие завершения закачки отправку IP, время начала скачивания, количество переданных байт и даже Google ClientID.
Сделав интеграцию Nginx и Google Analytics мы получили возможность анализировать скачивания статичных файлов, к которым раньше невозможно было привязать счётчик Google Analytics.
Информация по загрузкам статических файлов на наших Download-серверах приходит в Google Analytics в режиме «реального времени».
Заработало
Теперь можно отслеживать, сколько происходит реальных скачиваний нашего продукта. Причём подсчёт уникальных загрузок производится в разы точнее, чем если делать это по IP-адресу, так как к каждому пользователю привязан уникальный идентификатор — ClientID.
Ошибки 404 и 500 также отслеживаются через события ( events) в Google Analytics.
Благодаря тому, что мы передаём в событии реальный IP-адрес пользователя, можно увидеть распределение скачиваний по гео.
Так как пробрасывается реальный Google Analytics ClientID пользователя, можно верить отчётам о:
- числе новых и вернувшихся пользователей;
- периодичности посещений пользователя и времени с его последнего посещения;
- вовлечении пользователей;
- ключевых словах, по которым пользователь пришёл к нам на сайт с самого начала.
Nginx сам передаёт правильный User-Agent, что даёт возможность построить отчёты по браузерам и ОС. В отчёте можно встретить wget, которым наш DriverPack Online выкачивает драйверы, реальные браузеры, а также роботов и парсеров.
Для кого-то окажется очень ценной информация о загрузках с мобильных устройств.
К большому сожалению, передать в Google Analytics Referrer мы пока не можем, так как Nginx не поддерживает urlencode(). В связи с этим отчёты по каналам работать не будут (подробности в разделе «Недостатки»).
Что это нам дало, и что это может дать вам
Отправляя Nginx-логи в Google Analytics, мы смогли добавить новый уровень в воронку использования продукта.
- Посетил сайт.
- Нажал на кнопку «скачать приложение».
- Скачал приложение (завершилось скачивание).
- Запустил приложение.
- Приложение установило все драйвера.
Новый уровень позволил оценить потерю пользователей, связанную с такими факторами, как обрывы закачек, незапуск приложения после успешного скачивания (например, если приложение качается дольше приемлемого времени и пользователь про него забывает), медленное скачивание или большой размер приложения.
При этом возможность пробрасывать Google Analytics ClientID позволяет связать события из Nginx со всеми данными в Google Analytics: версия браузера, время дня, география, демография аудитории и даже кастомные события.
Мы успешно используем все эти сведения для того, чтобы увеличить количество запусков. Например, увеличив скорость доставки контента в отдельные регионы, мы смогли снизить потерю пользователей между вторым и четвёртым уровнем более чем в два раза.
Бонусным эффектом от внедрения модуля стал отлов возникающих ошибок 404, что позволило оперативно реагировать на их появление и повысить качество предоставляемой услуги. По приблизительным оценкам, оперативная работа с 404 ошибками снизила потери пользователей в месяц на 40 тысяч.
Повторные скачивания в рамках одной сессии также свидетельствуют о проблемах, например, об обрыве загрузки или о том, что пользователь не нашёл скачанное приложение.
Наш модуль даёт возможность перенести данные о проблемах с загрузкой файлов в знакомый и мощный инструмент аналитики (Google Analytics). Это позволяет работать в воронке использования продукта с новым уровнем, который обычно пропускают.
Все онлайн-проекты, в которых требуется скачивать продукт с сайта или файлы в мобильном приложении, могут извлечь большую выгоду из применения нашего решения, точечно работая с конверсией из нажатия на кнопку «Скачать» в открытие скачанного файла.
Как вы используете открывшиеся возможности, решать вам. Будем рады получить ваши варианты применения и предложения по улучшению.
Ложка дёгтя
Скрипт работает отлично и на 100% соответствует нашим требованиям, но в него можно добавить несколько улучшений.
- Скрипт немного грузит сервер. В нашем случае это не страшно, но для вас это может иметь большое значение.
- Nginx не поддерживает urlencode(), поэтому ссылки вида example.com/?SomeOptions будут биться. Один из способов решения данной проблемы — использование lua-скрипта.
- Не передаётся Referrer в параметр Google Analytics (также необходимо использовать urlencode()).
- В Nginx 1.8 не работает переменная $content_length, поэтому мы не можем передать в Google Analytics размер файла. Если это поправить, можно будет делать отчёты, содержащие информацию о проценте недокачанных файлов.
- Отправлять служебную информацию из Nginx, например, о количестве коннектов и прочее.
- Можно было бы отправлять время закачки напрямую в Google Analytics, используя параметр &plt, но Nginx возвращает время в секундах, а Google Analytics такой формат не устраивает (ожидаются миллисекунды). Поэтому приходится складывать эти данные в dimension2.
- Скрипт использует недокументированную функцию post_action. Существует риск, что в новых версиях эта функция будет устранена.
Do it yourself
1. Создаём отдельно счётчик Google Analytics, с которым будут работать все Download-серверы. Или используем номер существующего счётчика.
2. В настройках счётчика «Пользовательские параметры» добавляем специальные параметры:
- dimension1. Название “ClientID", уровень «Пользователь»;
- dimension2. Название “request_time", уровень “Hit";
- dimension3. Название “body_bytes_sent", уровень “Hit".
Это поможет нам рассчитать скорость закачки и даже процент оборванных скачиваний.
3. Создаём конфиг с названием google-analytics в директории /etc/nginx/.
4. Получаем конфигурационный файл /etc/nginx/conf.d/default.config.
5. Перезапускаем Nginx.
6. Настраиваем счётчик на сайте таким образом, чтобы ClientID сохранялся в Cookie.
7. Теперь в Google Analytics можно увидеть данные о скачиваниях, обращениях к URL, HTTP-статусы и прочее. Всё это связывается со всеми остальными данными в Google Analytics по ClientID.
Напоследок о точности
Точность статистики до 99%. Мы проанализировали несколько файлов и сравнили данные Google Analytics с данными из логов.
Сравнение показывает, что Google Analytics подсчитывает уникальные загрузки ещё точнее, чем мы можем сделать это вручную.
Присылайте собственные кейсы, в результате которых вам удалось заметно улучшить (или, наоборот, ухудшить) показатели проекта. Интересные эксперименты обязательно попадут на страницы рубрики Growth Hacks.