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.

4 curtidas

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

2 curtidas

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?

6 curtidas

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.

4 curtidas

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

2 curtidas

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.

2 curtidas

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

1 curtida

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

2 curtidas

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.

2 curtidas

Would love to see this as well! Any advice on how to construct a query? Thx!

We also want this number (PVs per category, excluding crawler activity). Is there a way to get this from the Data Explorer?

I don’t believe so. We don’t granularly track page views like that. You would need to hook up your GA and use that.

1 curtida

@HAWK: Do you reckon this won’t be possible then? Counting Pageviews for users (non-staff, non-crawler)

Has anyone found a solution to count page views for all posts within a specific category? Possible with GA?

1 curtida

É possível obter visualizações totais de categorias do Explorador de Dados somando as visualizações de todos os tópicos de uma categoria:

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

Obter visualizações totais por tag é semelhante:

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

Há também uma tabela topic_views que poderia, em teoria, ser usada para dividir visualizações por usuário e data. No entanto, não achei essa tabela particularmente útil, pois as consultas expiram quando os tópicos têm muitas visualizações. Ela também mostra muito menos visualizações por tópico porque, se entendi corretamente, não conta visualizações anônimas. Também acho que talvez topic.views inclua não apenas visualizações anônimas, mas também tráfego de bots? É muito mais do que o que vejo no GA.

Falando em GA, ele tem todos os dados de que você precisa, mas não é fácil agrupá-los por categoria ou tag. O melhor que posso fazer é tentar analisar o pageTitle para encontrar categorias. Estou fazendo isso em R usando googleAnalyticsR. Siga as instruções no manual para autorizar sua conta do Google e obter as métricas desejadas. Certifique-se de incluir pageTitle como uma dimensão. Minhas chamadas de API se parecem um pouco com isto:

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")
                       )

A chave para entender o próximo trecho é ver que os pageTitles se encaixam neste formato geral:

Título do tópico - Categoria - Título do site

Se o tópico não for categorizado, a Categoria estará faltando. Há também um monte de páginas de utilidade (“Últimos tópicos”, “Novos tópicos”, etc.) que não têm categorias. (Não estou contando “Últimos tópicos [categoria]” como parte da categoria, embora possa ser melhor incluí-los.) Finalmente, a página inicial usa Título do site - Descrição curta do site para o título da página. No entanto, não nos importamos com nenhum desses. Portanto, a regex que estou usando é:

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

Colocando tudo em uma função que agrupa por categoria, obtenho algo assim:

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)

(Obviamente, mude “Meta Jon” para o nome do seu próprio site.)

Atualmente, não sei como extrair dados do GA com base em tags.

2 curtidas

Essas visualizações totais incluem bots, também conhecidos como anônimos?

O GA exclui o tráfego de bots, de acordo com a documentação deles. Não consigo encontrar documentação para topic_views, mas um comentário no código diz:\n\n# Armazena uma visualização apenas uma vez por dia por coisa por (usuário || ip)\n\n\nNão sei ao certo, mas topic.views parece mostrar visualizações de página de bots porque mostra muito mais visualizações do que o GA para a mesma página.

Sim, mas as contagens do Discourse ao usar o explorador de dados?

Anteriormente, o GA disse o mesmo e isso pode ser verdade quando há bots legítimos. Mas a maioria das chamadas acontece por bots maliciosos, bots de SEO mal comportados, knckers, etc., e então a regra de uma visita será quebrada. Ou assim eu acho, para ser honesto.

De qualquer forma, estou usando o Matomo. Não sou um peixe tão grande que precise do GA.

Apenas um aviso, isso acontece porque a tabela topic_views limita a contagem a uma nova visualização por dia, enquanto o campo topics.views permite uma nova visualização a cada 8 horas (por padrão, mas alterável usando topic view duration hours). Ele inclui usuários e anônimos. :+1:

ATUALIZAÇÃO
Acontece que a tabela topic_views nem sequer está contando uma nova visualização por dia… Na verdade, ela conta a primeira vez que alguém visualiza um tópico e nada mais depois disso. Portanto, sempre haverá apenas um registro por usuário ou IP por tópico.

2 curtidas