Tracking of Pageviews and Unique Users at Category and Tag Level

I am curious if you have advice on tracking community health metrics at the category and/or tag level.
For example, I’d love to have a clearer sense of the daily number of pageviews and user visits (both known and anonymous users, and ideally by specific group-members) on topic-threads under each category and tag.

In /admin/dashboard/reports, new topics and new post have reports that can be filtered to the category level, user profile_views can be filtered by group, and there are sitewide metrics on page views and other useful info.

I suspect some of this can be set-up somehow in Google Analytics, but that’s not obvious to me since it’s not obvious how to associate topic urls with tags and categories in google analytics. I also suspect this may be done via the /admin/plugins/explorer, but I haven’t had any success.

Your advice would be greatly appreciated.

Do you have any advice here @hawk? It seems like a reasonable question and maybe new dashboard / reports covers this a bit?

It does seem like a reasonable request, yes. At the moment the reports on the dashboard aren’t segment-able but if we can work out a way to do that I think it would be an excellent addition to v2. We’ve also talked about exposing approved Data Explorer queries on the dashboard.

cc @j.jaffeux – do you have plans to revisit the dashboard any time soon?

Yes, it will be step by step but might come to something close to this. I don‘t want it to become too complex though and it will never be a “combine any segment you want”, there’s sql (and data-explorer) for this. But will probably try to provide this on a per report basis where we think it makes sense.

This query is specifically about pageviews per category, which I don’t think can be handled with Data Explorer can they?

Yes, I would also be interested in a report about the unique users on my site.

Yes this specific report is using ApplicationRequest table, which doesn’t have any notion of category. So not possible through reports, data-explorer or raw sql.

Can we pull a report on the number of anonymous users instead of the number of pages viewed anonymously?

Do you mean the number of people that have used the anonymous posting feature? They all get unique anonymous usernames so it will be very easy to pull a report from Data Explorer

I’m trying to find out how many people are visiting the site who have not logged in at all and do not have an account.

Тоже очень хотелось бы это увидеть! Есть какие-то советы, как составить запрос? Спасибо!

Нам также нужны эти данные (просмотры страниц по категориям, исключая активность поисковых роботов). Можно ли получить их через Data Explorer?

Я так не думаю. Мы не отслеживаем просмотры страниц с такой детализацией. Вам нужно подключить свой GA и использовать его.

@HAWK: Тогда вы считаете, что это будет невозможно? Counting Pageviews for users (non-staff, non-crawler)

Кто-нибудь нашел решение для подсчета просмотров страниц всех постов в конкретной категории? Возможно ли это с помощью GA?

Получить общее количество просмотров категории через Data Explorer можно, просуммировав просмотры всех тем в этой категории:

SELECT 
       c.id as category_id, 
       SUM(views) as "total views"
FROM categories c 
JOIN topics t ON t.category_id = c.id
WHERE read_restricted is false
GROUP BY c.id
order by sum(views) desc

Получение общего количества просмотров по тегу выполняется аналогично:

SELECT tags.name,
       sum(views)
from topics t
     join topic_tags tt on t.id = topic_id
     join tags on tags.id = tt.tag_id
group by tags.name
order by sum(views) desc

Также существует таблица topic_views, которую теоретически можно использовать для разделения просмотров по пользователям и датам. Однако я не нашел эту таблицу особенно полезной, так как запросы к ней завершаются по таймауту, если у тем много просмотров. Кроме того, в ней отображается значительно меньше просмотров на тему, поскольку, насколько я понимаю, она не учитывает анонимные просмотры. Мне также кажется, что topic.views включает не только анонимные просмотры, но и трафик от ботов? Их значительно больше, чем я вижу в GA.

Кстати, о GA: в ней есть все необходимые данные, но группировка по категориям или тегам затруднена. Лучшее, что я могу сделать, — попытаться распарсить pageTitle, чтобы найти категории. Я делаю это в R с помощью пакета googleAnalyticsR. Следуйте инструкциям в руководстве, чтобы авторизовать свой аккаунт Google и получить нужные метрики. Обязательно включите pageTitle в качестве измерения. Мои вызовы API выглядят примерно так:

ga_this_year <- ga_data(ga_id, 
                        date_range = c("2023-01-01", "2023-05-30" ),
                        metrics=c("screenPageViews","averageSessionDuration", "sessions"), 
                        dimensions = c("pageTitle", "deviceCategory")
                       )

Ключ к пониманию следующего шага — увидеть, что заголовки страниц (pageTitles) обычно имеют следующий формат:

Заголовок темы - Категория - Название сайта

Если тема не имеет категории, поле категории отсутствует. Также существует ряд служебных страниц («Последние темы», «Новые темы» и т. д.), у которых нет категорий. (Я не считаю «Последние темы [категории]» частью категории, хотя, возможно, их стоит включать.) Наконец, главная страница использует формат Название сайта - краткое описание сайта для заголовка страницы. Однако нас это не интересует. Поэтому используемое мной регулярное выражение выглядит так:

str_extract(pageTitle,
            str_glue(".*? - (.*) - {sitename}"),
            group=1)

Объединив это в функцию, группирующую данные по категориям, я получаю что-то вроде этого:

category_views <- function(data, sitename = "Meta Jon") {
  data %>% 
  mutate(category = str_extract(
                                pageTitle,
                                str_glue(".*? - (.*) - {sitename}"),
                                group=1
                                )) %>% 
  group_by(category) %>% 
  summarise(views = sum(screenPageViews)) %>% 
  arrange(desc(views)) #%>% head(20)
}

category_views(ga_this_year)

(Очевидно, замените “Meta Jon” на название вашего собственного сайта.)

В настоящее время я не знаю, как извлекать данные из GA на основе тегов.

Включают ли эти общие просмотры и ботов, то есть анонимов?

GA исключает трафик ботов, согласно их документации. Я не могу найти документацию для topic_views, но комментарий в коде гласит:

# Сохранять просмотр только один раз в день для каждого объекта от (пользователя || IP-адреса)

Я не знаю точно, но topic.views, похоже, показывает просмотры страниц ботами, так как для одной и той же страницы он отображает значительно больше просмотров, чем GA.

Да, но учитываются ли они в Discourse при использовании Data Explorer?

Ранее Google Analytics сообщал то же самое, и это может быть верно, когда речь идет о легитимных ботах. Однако большинство вызовов исходит от нелегитимных ботов: вредоносных SEO-ботов, «кнокеров» и т. д., и тогда правило «один визит» нарушится. По крайней мере, я так думаю, если быть честным.

В любом случае, я использую Matomo. Я не настолько крупный игрок, чтобы мне нужен был Google Analytics.

Только для информации: это происходит потому, что таблица topic_views ограничивает подсчёт одним новым просмотром в день, тогда как поле topics.views позволяет один новый просмотр каждые 8 часов (по умолчанию, но это можно изменить с помощью topic view duration hours). При этом учитываются как пользователи, так и анонимы. :+1:

ОБНОВЛЕНИЕ

Оказалось, что таблица topic_views вообще не считает один новый просмотр в день… На самом деле она учитывает первый раз, когда кто-то открывает тему, и больше никаких просмотров после этого. Таким образом, на каждую тему будет существовать только одна запись на пользователя или IP-адрес.