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 « J'aime »

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

2 « J'aime »

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 « J'aime »

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 « J'aime »

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

2 « J'aime »

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 « J'aime »

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

1 « J'aime »

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 « J'aime »

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 « J'aime »

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 « J'aime »

@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 « J'aime »

Il est possible d’obtenir les vues totales par catégorie à partir de l’Explorateur de données en additionnant les vues de tous les sujets d’une catégorie :

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

Obtenir les vues totales par tag est similaire :

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

Il existe également une table topic_views qui pourrait, en théorie, être utilisée pour diviser les vues par utilisateur et par date. Je n’ai cependant pas trouvé cette table particulièrement utile, car les requêtes expirent lorsque les sujets ont beaucoup de vues. Elle affiche également beaucoup moins de vues par sujet car, si je comprends bien, elle ne compte pas les vues anonymes. Je pense aussi que topic.views inclut non seulement les vues anonymes mais aussi le trafic des bots ? C’est beaucoup plus que ce que je vois sur GA.

En parlant de GA, il contient toutes les données dont vous avez besoin, mais il n’est pas facile de les regrouper par catégorie ou par tag. Le mieux que je puisse faire est d’essayer d’analyser le pageTitle pour trouver les catégories. Je le fais en R en utilisant googleAnalyticsR. Suivez les instructions du manuel pour autoriser votre compte Google et obtenir les métriques souhaitées. Assurez-vous d’inclure pageTitle comme dimension. Mes appels API ressemblent un peu à ceci :

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

La clé pour comprendre la partie suivante est de voir que les pageTitles suivent ce format général :

Titre du sujet - Catégorie - Titre du site

Si le sujet n’est pas catégorisé, la Catégorie est manquante. Il y a aussi un tas de pages utilitaires (“Derniers sujets”, “Nouveaux sujets”, etc.) qui n’ont pas de catégories. (Je ne compte pas les “Derniers sujets [catégorie]” comme faisant partie de la catégorie, bien qu’il serait peut-être préférable de les inclure.) Enfin, la page d’accueil utilise Titre du site - courte description du site comme titre de page. Nous ne nous intéressons cependant à aucune de celles-ci. Le regex que j’utilise est donc :

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

En le regroupant dans une fonction qui regroupe par catégorie, j’obtiens quelque chose comme ceci :

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)

(Changez évidemment “Meta Jon” pour le nom de votre propre site.)

Je ne sais pas actuellement comment extraire les données GA basées sur les tags.

2 « J'aime »

Ces vues totales incluent-elles aussi les bots, alias les anonymes ?

GA exclut le trafic des robots, selon leur documentation. Je ne trouve pas de documentation pour topic_views, mais un commentaire dans le code dit :

# Ne stocker une vue qu'une fois par jour par chose par (utilisateur || ip)

Je ne sais pas avec certitude, mais topic.views semble montrer les vues de pages des robots car il affiche beaucoup plus de vues que GA pour la même page.

Oui, mais les décomptes de Discourse lors de l’utilisation de l’explorateur de données ?

Précédemment, GA a dit la même chose et cela peut être vrai lorsqu’il y a des bots légitimes. Mais la majorité des appels se produisent par des bots malveillants, des bots de référencement malveillants, des “knckers” etc. et alors la règle d’une visite sera brisée. Ou du moins, je le pense si je suis honnête.

Quoi qu’il en soit, j’utilise Matomo. Je ne suis pas un “gros poisson” qui aurait besoin de GA.

Juste pour information, c’est en fait parce que la table topic_views limite le comptage à une nouvelle vue par jour, alors que le champ topics.views compte une nouvelle vue toutes les 8 heures (par défaut, mais modifiable à l’aide de topic view duration hours). Il inclut les utilisateurs et les anonymes. :+1:

MISE À JOUR

Il s’avère que la table topic_views ne compte même pas une nouvelle vue par jour… Elle compte en fait la première fois que quelqu’un consulte un sujet et plus aucune vue après cela. Il n’y aura donc jamais qu’un seul enregistrement par utilisateur ou par adresse IP par sujet.

2 « J'aime »