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 Me gusta

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

2 Me gusta

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 Me gusta

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 Me gusta

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

2 Me gusta

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 Me gusta

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

1 me gusta

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 Me gusta

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 Me gusta

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 me gusta

@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 me gusta

Es posible obtener las vistas totales de una categoría desde el Explorador de Datos sumando las vistas de todos los temas de una categoría:

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

Obtener las vistas totales por etiqueta es similar:

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

También existe una tabla topic_views que podría, en teoría, usarse para dividir las vistas por usuario y fecha. Sin embargo, no he encontrado esa tabla particularmente útil, ya que las consultas agotan el tiempo de espera cuando los temas tienen muchas vistas. También muestra muchas menos vistas por tema porque, si lo entiendo correctamente, no cuenta las vistas anónimas. También creo que topic.views incluye no solo las vistas anónimas sino también el tráfico de bots. Es mucho más de lo que veo en GA.

Hablando de GA, tiene todos los datos que necesitas, pero no es fácil agruparlos por categoría o etiqueta. Lo mejor que puedo hacer es intentar analizar pageTitle para encontrar categorías. Lo estoy haciendo en R usando googleAnalyticsR. Sigue las instrucciones del manual para autorizar tu cuenta de Google y obtener las métricas que deseas. Asegúrate de incluir pageTitle como dimensión. Mis llamadas a la API se ven algo así:

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 clave para entender lo siguiente es ver que los pageTitles se ajustan a este formato general:

Título del tema - Categoría - Título del sitio

Si el tema no está categorizado, falta la Categoría. También hay un montón de páginas de utilidad (“Últimos temas”, “Nuevos temas”, etc.) que no tienen categorías. (No cuento “Últimos temas [categoría]” como parte de la categoría, aunque podría ser mejor incluirlos). Finalmente, la página de inicio usa Título del sitio - descripción corta del sitio para el título de la página. Sin embargo, no nos interesa ninguna de esas. Así que la expresión regular que estoy usando es:

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

Poniéndolo todo junto en una función que agrupa por categoría, obtengo algo como esto:

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, cambia “Meta Jon” por el nombre de tu propio sitio).

Actualmente no sé cómo extraer datos de GA basados en etiquetas.

2 Me gusta

¿Esas vistas totales incluyen también bots, también conocidos como anónimos?

GA excluye el tráfico de bots, según su documentación. No puedo encontrar documentación para topic_views, pero un comentario en el código dice:

# Solo almacena una vista una vez al día por cosa por (usuario || ip)

No lo sé con seguridad, pero topic.views parece mostrar las visitas de bots porque muestra muchas más visitas que GA para la misma página.

Sí, pero ¿los recuentos de Discourse al usar el explorador de datos?

Anteriormente, GA dijo lo mismo y puede ser cierto cuando hay bots legítimos. Pero la mayoría de las llamadas ocurren por bots maliciosos, bots de SEO de mal comportamiento, knckers, etc., y luego la regla de una visita se romperá. O eso creo, si soy honesto.

De todos modos, estoy usando Matomo. No soy un pez gordo como para necesitar GA.

Solo para que lo sepas, esto se debe en realidad a que la tabla topic_views limita el conteo a una vista nueva por día, mientras que el campo topics.views permite una vista nueva cada 8 horas (por defecto, pero se puede cambiar usando topic view duration hours). Incluye usuarios y anónimos. :+1:

ACTUALIZACIÓN

Resulta que la tabla topic_views ni siquiera cuenta una vista nueva al día… En realidad, cuenta la primera vez que alguien ve un tema y no más vistas después de eso. Por lo tanto, solo habrá un registro por usuario o IP por tema.

2 Me gusta