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 „Gefällt mir“

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

2 „Gefällt mir“

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 „Gefällt mir“

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 „Gefällt mir“

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

2 „Gefällt mir“

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 „Gefällt mir“

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

1 „Gefällt mir“

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 „Gefällt mir“

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 „Gefällt mir“

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 „Gefällt mir“

@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 „Gefällt mir“

Sie können die Gesamtanzahl der Kategorieaufrufe aus dem Daten-Explorer abrufen, indem Sie die Aufrufe aller Themen einer Kategorie summieren:

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

Die Gesamtaufrufe nach Tag zu erhalten ist ähnlich:

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

Es gibt auch eine topic_views-Tabelle, die theoretisch verwendet werden könnte, um Aufrufe nach Benutzer und Datum aufzuteilen. Ich habe diese Tabelle jedoch nicht als besonders nützlich empfunden, da Abfragen mit vielen Aufrufen pro Thema zu Zeitüberschreitungen führen. Sie zeigt auch viel weniger Aufrufe pro Thema an, da sie, wenn ich es richtig verstehe, keine anonymen Aufrufe zählt. Ich glaube auch, dass topic.views möglicherweise nicht nur anonyme Aufrufe, sondern auch Bot-Traffic enthält? Es ist viel mehr, als ich in GA sehe.

Wo wir gerade von GA sprechen, es enthält alle benötigten Daten, aber es ist nicht einfach, sie nach Kategorie oder Tag zu gruppieren. Das Beste, was ich tun kann, ist zu versuchen, den pageTitle zu parsen, um Kategorien zu finden. Ich mache das in R mit googleAnalyticsR. Befolgen Sie die Anweisungen im Handbuch, um Ihr Google-Konto zu autorisieren und die gewünschten Metriken abzurufen. Stellen Sie sicher, dass Sie pageTitle als Dimension einschließen. Meine API-Aufrufe sehen ungefähr so aus:

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

Der Schlüssel zum Verständnis des nächsten Teils ist zu sehen, dass pageTitles diesem allgemeinen Format entsprechen:

Topic title - Category - Site title

Wenn das Thema nicht kategorisiert ist, fehlt die Kategorie. Es gibt auch eine Reihe von Hilfeseiten (“Latest topics”, “New topics” usw.), die keine Kategorien haben. (Ich zähle “Latest [category] topics” nicht als Teil der Kategorie, obwohl es besser sein könnte, sie einzuschließen.) Schließlich verwendet die Homepage Site title - short site description für den Seitentitel. Von all diesen Dingen sind wir jedoch nicht betroffen. Daher ist der Regex, den ich verwende:

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

Wenn ich dies in eine Funktion zusammenfasse, die nach Kategorie gruppiert, erhalte ich etwas wie das Folgende:

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)

(Ändern Sie offensichtlich “Meta Jon” in den Namen Ihrer eigenen Website.)

Ich weiß derzeit nicht, wie ich GA-Daten nach Tag extrahieren kann.

2 „Gefällt mir“

Sind diese Gesamtaufrufe auch Bots, alias Anonyme, enthalten?

GA schließt Bot-Traffic aus, laut deren Dokumentation. Ich kann keine Dokumentation für topic_views finden, aber ein Kommentar im Code besagt:

# Nur eine Ansicht pro Tag pro Ding pro (Benutzer || IP) speichern

Ich weiß es nicht sicher, aber topic.views scheint Bot-Seitenaufrufe anzuzeigen, da es viel mehr Aufrufe anzeigt als GA für dieselbe Seite.

Ja, aber zählt das von Discourse bei der Verwendung des Datenexplorers?

Zuvor sagte GA dasselbe, und das kann stimmen, wenn es legitime Bots gibt. Aber die Mehrheit der Anrufe erfolgt durch böswillige, sich schlecht verhaltende SEO-Bots, Knocker usw., und dann bricht die Ein-Besuch-Regel. Oder das denke ich, wenn ich ehrlich bin.

Ich benutze jedenfalls Matomo. Ich bin kein so großer Fisch, dass ich GA bräuchte.

Nur zur Information, das liegt tatsächlich daran, dass die Tabelle topic_views die Zählung auf einen neuen Aufruf pro Tag beschränkt, während das Feld topics.views einen neuen Aufruf alle 8 Stunden (standardmäßig, aber änderbar mit topic view duration hours) zulässt. Es schließt Benutzer und Anonyme ein. :+1:

UPDATE
Es stellt sich heraus, dass die Tabelle topic_views nicht einmal einen neuen Aufruf pro Tag zählt… Sie zählt tatsächlich das erste Mal, dass jemand ein Thema aufruft, und keine weiteren Aufrufe danach. Es wird also immer nur einen Eintrag pro Benutzer oder IP pro Thema geben.

2 „Gefällt mir“