Кейс: Как отслеживать скачивания файлов и программ на сайте с помощью Google Analytics Статьи редакции

Артур Кузяков, генеральный директор компании DriverPack Solution, поделился с редакторами рубрики Growth Hacks нестандартным подходом к получению и анализу статистики скачиваний файлов и программ на сайте.

Для улучшения нашего сервиса ( drp.su) мы отслеживаем с помощью Google Analytics и «Яндекс.Метрики» конверсию пользователей в воронках следующего типа.

  1. Посетил сайт.
  2. Нажал на кнопку «скачать приложение».
  3. Запустил приложение.
  4. Приложение установило все драйвера.

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

С наших 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, мы смогли добавить новый уровень в воронку использования продукта.

  1. Посетил сайт.
  2. Нажал на кнопку «скачать приложение».
  3. Скачал приложение (завершилось скачивание).
  4. Запустил приложение.
  5. Приложение установило все драйвера.

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

При этом возможность пробрасывать Google Analytics ClientID позволяет связать события из Nginx со всеми данными в Google Analytics: версия браузера, время дня, география, демография аудитории и даже кастомные события.

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

Бонусным эффектом от внедрения модуля стал отлов возникающих ошибок 404, что позволило оперативно реагировать на их появление и повысить качество предоставляемой услуги. По приблизительным оценкам, оперативная работа с 404 ошибками снизила потери пользователей в месяц на 40 тысяч.

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

Наш модуль даёт возможность перенести данные о проблемах с загрузкой файлов в знакомый и мощный инструмент аналитики (Google Analytics). Это позволяет работать в воронке использования продукта с новым уровнем, который обычно пропускают.

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

Как вы используете открывшиеся возможности, решать вам. Будем рады получить ваши варианты применения и предложения по улучшению.

Ложка дёгтя

Скрипт работает отлично и на 100% соответствует нашим требованиям, но в него можно добавить несколько улучшений.

  1. Скрипт немного грузит сервер. В нашем случае это не страшно, но для вас это может иметь большое значение.
  2. Nginx не поддерживает urlencode(), поэтому ссылки вида example.com/?SomeOptions будут биться. Один из способов решения данной проблемы — использование lua-скрипта.
  3. Не передаётся Referrer в параметр Google Analytics (также необходимо использовать urlencode()).
  4. В Nginx 1.8 не работает переменная $content_length, поэтому мы не можем передать в Google Analytics размер файла. Если это поправить, можно будет делать отчёты, содержащие информацию о проценте недокачанных файлов.
  5. Отправлять служебную информацию из Nginx, например, о количестве коннектов и прочее.
  6. Можно было бы отправлять время закачки напрямую в Google Analytics, используя параметр &plt, но Nginx возвращает время в секундах, а Google Analytics такой формат не устраивает (ожидаются миллисекунды). Поэтому приходится складывать эти данные в dimension2.
  7. Скрипт использует недокументированную функцию 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.
0
7 комментариев
Популярные
По порядку
Написать комментарий...
Semenikhin Evgeniy

Спасибо, посоны. Очень круто

Ответить
1
Развернуть ветку
Алексей Левин

Можно делать все намного проще, получая при этом данные об источниках трафика и прочую доступную в аналитиксе информацию. Достаточно открывать страницу "Спасибо", проверять уникальность установки (по мак-адресу, передаваемому в параметре на страницу) и вызывать на ней событие.

Вот пример
http://скриншотер.рф

Страница Спасибо:
http://скриншотер.рф/spasibo.php?key=Q291bGQgbm90IGNvbm5lY3QuIEVycm9yIGNvZGUgPSAweDgwMDEwMTBE

Можно еще даже шифровать ключ так, чтобы случайный набор символов, подставленный в урле, не засчитывался за уникальную установку. Полезно при работе с рекламными сетями с оплатой за действие (установку).

Но спасибо за статью!

Ответить
0
Развернуть ветку
Артур Кузяков

Ваш способ - это установка Thank You Page. В нашем случае это не пройдет. Например, люди скидывают друг другу прямой линк на файл. И если этот файл большой (например, 2Gb) то хорошо бы знать, докачал юзер его или прервал. И данные о таком сценарии мы получим даже без JS-счетчика.

Ваш способ на много проще в настройке, а наш намного точнее :) Их можно скомбинировать при желании.

Ответить
1
Развернуть ветку
Алексей Левин

Вы не в курсе, есть ли для Windows-приложений что-то типа Google Analytics for Apps? В идеале - это иметь возможность отслеживать вообще все действия пользователя в программе и действия самой программы.

Ответить
0
Развернуть ветку
Михаил Картавенко

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

https://appmetrika.yandex.ru/

Ответить
0
Развернуть ветку
Алексей Левин

Артур, попробовал поставить Вашу программу, но вылезла вот такая ошибка - http://skrinshoter.ru/s/140815/gH0pCr
Далее прога просто висит в статусе "Загруза программы".

P.S.
Кстати, а почему Вы Яндексом не монетезируетесь? У Вас много установок - сам бог велел =)

Ответить
0
Развернуть ветку
Дмитрий Разломов

Добрый вечер Алексей!
Спасибо за багрепорт, эту ошибку исправили, попробуйте еще раз!

Ответить
0
Развернуть ветку
Читать все 7 комментариев
«Купи сейчас, плати потом»: новая классика или мимолетная мода

Сервис рассрочек рассказывает о новом финтех-тренде.

Как выпустить заменитель соли на Boomstarter.ru и попасть в список Forbes

Сёстры из Астрахани запустили на Boomstarter.ru продажи нового продукта — зеленой соли. После этого их продукцию начали продавать в сетевых магазинах, а само бизнес-начинение журнал Forbes включил в список лучших стартапов.

Как слабоумие и отвага, доширак и донорство крови помогли нам сделать платформу для ИИ-роботов и поднять раунд 50 млн

Tomoru.ru — платформа для создания умных голосовых роботов для бизнеса. Мы начинали как AR/VR-студия, а теперь создаем цифровых помощников для СберМаркета, Skillbox и других клиентов. Бизнес может собрать себе робота сам или заказать готового у сертифицированных партнеров Tomoru.

А я написал бота, который задолбает вас

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

«Если клиенты видят халяльный логотип, это придаёт им уверенности в продукте»: как устроен исламский банкинг в Индонезии Статьи редакции

Местные финтех-стартапы могут развиваться только после одобрения представителей исламского духовенства. Какие сложности преодолевают предприниматели, чтобы создать приложение по законам шариата, — в пересказе Rest of World.

«Комитет» объявил о планах продать сервис коротких видео Coub Статьи редакции

Компания, владеющая vc.ru, dtf.ru и tjournal.ru, планирует в ближайшее время найти нового владельца для проекта, сообщил на своей странице в Facebook сооснователь «Комитета» Влад Цыплухин.

Новый дизайн «Секрета фирмы» учтёт пользовательские сценарии потребления и поиска контента

О трендах бизнеса и экономики можно прочесть коротко и ясно в удобных форматах

Мощные сервисы для быстрого машинного обучения: от GPU SuperCloud до суперкомпьютера

В последние три года мы видим рост спроса на технологии искусственного интеллекта (ИИ) и машинного обучения. Они проникли практически во все сферы нашей жизни, начиная от различных колл-центров и городских систем видеонаблюдения, заканчивая системами медицинского скрининга и диагностики заболеваний. Даже для оплаты проезда в столичной подземке…

Роскомнадзор потребовал от Tor удалить «запрещённую информацию» — в случае отказа сеть заблокируют Статьи редакции

«Запрещённые» данные находятся на странице, где рассказывается о проекте.

null