Лого vc.ru

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

Кейс: Как отслеживать скачивания файлов и программ на сайте с помощью 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.
Популярные статьи
Показать еще
Комментарии отсортированы
как обычно по времени по популярности

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

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

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

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

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

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

0

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

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

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

0

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

appmetrika.yandex.ru/

0

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

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

0

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

0

Возможность комментирования статьи доступна только в первые две недели после публикации.

Сейчас обсуждают
Актуальная Птица

у соседа на заборе тоже написано :)
исполнятся одни желания, появятся другие
а если желаний нет то вы уже почти святой.

«Добро пожаловать в 2030 год»: член датского парламента о счастливой жизни без приватности и личных вещей
0
Kirill Nikolaev

Да тут та же самая проблема, как на фрилансе. Смотрим портфель, смотрим квалификацию.
Заплатили за шлак - пишем в ТП.

Bramio — поиск экспертов и решение задач с помощью видеозвонков
0
Kirill Nikolaev

Короче, вот:
1. Я зарегистрировался. Почему-то смутило, что в блоке "номер телефона", на вкладке "верификация" номер телефона отображался, как верифицированный. Хотя я его только лишь ввёл.
2. Ребята, пожалуйста, UX, UX, UX в личном кабинете.
3. А где работа-то? Одна заявка двухмесячной давности. Или я не вовремя зашёл?
4. Деньги через пейр. Только пейр. Вы серьёзно? В 2016м? А что не онли догекоины? Я честно создал второй акк, чтобы потестить, как происходит сам "процесс", но, к сожалению, после составления контакта баланс я так и не смог пополнить, хотя в пейре я всё-таки зарегистрировался (ну за что)
5. Опять же, классификаторы и рубрикаторы очень надо адекватные делать. Очень. Надо.

Резюмирую (очень субъективно):
Очень сыро, но задатки хорошие.
Самая боль - это ux и биллинг. Я понимаю, что вы можете заставлять пройти 9 кругов ада, чтобы вывести деньги. Но дайте мне, чёрт возьми, возможность их туда завести так, как мне удобно.

Bramio — поиск экспертов и решение задач с помощью видеозвонков
0
Andre Vlasov

Эцсамое. Во первых Amy Tunick это женщина, а во вторых ник fuck Jerry - это не "переспать с Джерри", а "ну его Джерри ***** (на половой член)". Причём там Под Джерри имеется в виду комик Джерри Сайнфелд. Ну и ещё, beigeCardigan это вроде его девушка. А в остальном все верно. Спасибо, пожалуйста.

«Брендам должно быть комфортно»: как американский блогер под псевдонимом FuckJerry завоевал популярность рекламодателей
0
Слава Діонісьєв

К роскомдозору стоит очередь

Роскомнадзор заявил об отсутствии претензий к Netflix из-за «непопулярности сервиса» в России
0
Показать еще