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

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

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 комментариев
SkillFactory раздает подарки: повышенная ставка и новогодний марафон для вебмастеров

В преддверии Нового года мы решили порадовать своих настоящих и будущих партнеров — участников партнерской программы школ Skillfactory, Contented и Product LIVE. Это возможность получить денежный бонус и заодно увеличить прибыль от продажи наших курсов.

Сайты в 2021 году
Сбербанк компрометирует код CVC при выдаче карты

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

Откуда берут взрослые деревья для парков и улиц

А также сколько они стоят и почему выращивать их — неплохой бизнес.

СберМегаМаркет + Рассрочка от СберБанка + М.Видео = Сервис (нет)

Хочу рассказать о своей «удачной» покупке телевизора Philips через СберМегаМаркет с рассрочкой от СберБанка в магазине М.Видео — Эльдорадо, итак начнем…

Продавец eBay из Кургана стала победителем в финале Всероссийского конкурса «Молодой предприниматель России 2021»

27 ноября в Москве состоялся финал ежегодного конкурса «Молодой предприниматель России 2021». В нём приняли участие предприниматели и самозанятые в возрасте до 35 лет. Всего было подано более 300 заявок из 43 регионов страны.

И сотрудников тоже касается: кибербуллинг на рабочем месте
Design vector created by pikisuperstar - www.freepik.com
От чтения мыслей до вторжения во сны: зачем исследуют сознание и чем это грозит Статьи редакции

Учёные научились считывать структуру фраз и даже визуальные образы из мыслей. Теперь они переживают, что компании внедрят в сны рекламу.

«Яндекс» добавил в поиск рекламную галерею товаров с карточками разных магазинов Статьи редакции

В карточке указан сайт магазина, фотография товара, название, цена и возможная скидка.

Товарная галерея «Яндекс»
Чему создатели метавселенных могут поучиться у 3D-игры Second Life Статьи редакции

Её основатель ещё в нулевых говорил, что физический мир канет в прошлое, и завлёк в игру не только пользователей, но также бренды, политиков и СМИ. Какой он видит метавселенную, исходя из своего опыта, — в пересказе Time.

Кадр из игры Second Life SL Community
ИТ-специалисты сообщили о блокировке Tor в России Статьи редакции

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

null