Segment-Tracking-Theme-Komponente

This theme component allows you to send data about your site’s usage to Segment.

The component supports calling segment.identify when a user first logs on to the site. For site’s using SSO, you can either send the user’s Discourse ID, or their external_id to Segment. The component allow you to track views of the Discourse latest, categories, category, tag, and topic pages. It also allows you to track topic and post creation, likes, flags, and bookmarks.

Installation

Follow the Installing a theme or theme component guide to install the component. Use https://github.com/scossar/discourse-segment-theme-component to install it directly from its Git repository. You can also download it from here.

Configuration

Add your Segment Write Key to the segment write key setting. Then select which events you would like to track:

The component extends your site’s content security policy to add https://cdn.segment.com/analytics.js/.

Let me know of any issues you run into with the component, or if there are ways that the data sent to Segment could be improved.

13 „Gefällt mir“

Thanks for building this, this is awesome! Does it also send data on anonymous users?

Calls to the Segment page method are made for anonymous users, but the Segment identify method is only called for logged in users.

1 „Gefällt mir“

Hallo!

Ich weiß, dass ich zu diesem Thema sehr spät komme, aber ich habe eine Bitte, die Sie vielleicht erfüllen könnten.

Könnten Sie zusätzlich zur Benutzer-ID-Nummer auch die E-Mail-Adresse der Benutzer anzeigen, wenn diese bei Discourse angemeldet sind?

In Segment versuche ich, Discourse-Daten mit Benutzerdaten meiner Website zu kombinieren, um herauszufinden, welche Benutzer sowohl Discourse als auch die Website nutzen. Allerdings kann ich die Benutzer derzeit nicht zuordnen, da die Discourse-Benutzer-ID nicht mit der Benutzer-ID der Website übereinstimmt.

Wenn ich sie anhand der E-Mail-Adresse zuordnen könnte, die sowohl bei Discourse als auch auf der Website identisch ist, wäre das unglaublich hilfreich.

Ist das möglich, bitte?

2 „Gefällt mir“

Tolles Plugin, danke @simon! Ich nutze es seit ein paar Monaten und stelle fest, dass es gelegentlich topic_created-Ereignisse überspringt. Ich kann keine Muster bei diesen Fehlern erkennen, also dachte ich, ich schreibe hierhin. Habt ihr Ideen? Gibt es Logs, die ich auf Fehler überprüfen kann?

1 „Gefällt mir“

Das ist technisch möglich. Ich habe jedoch einige Sicherheits- und Datenschutzbedenken, was das Hinzufügen der E-Mail-Adresse zum Payload betrifft. Ich werde mir das genauer überlegen und das Discourse-Team um ihre Einschätzung bitten. Falls die E-Mail-Adresse zum Payload hinzugefügt wird, wird es eine Theme-Einstellung dafür geben, die standardmäßig darauf ausgelegt ist, die E-Mail-Adresse nicht einzubeziehen.

Ich werde das untersuchen. Falls du ein Muster erkennst, lass es mich bitte wissen.

Ich werde versuchen, nächste Woche Zeit zu finden, um die Komponente zu testen und einige Updates vorzunehmen. Sobald das erledigt ist, werde ich sie von meinem persönlichen GitHub-Repository in das Discourse-GitHub-Repository verschieben.

1 „Gefällt mir“

Danke @simon, das schätze ich wirklich :slight_smile:

@simon Ich verstehe deine Bedenken bezüglich der Sicherheit und stimme ihnen zu. Allerdings bin ich Administrator des Discourse-Systems, aus dem ich diese Daten extrahiere. Daher könnte ich dieselben Benutzer-E-Mail-Adressen auch einfach ermitteln, indem ich die bereitgestellte ID verwende und in den Benutzerdaten die ID mit der entsprechenden E-Mail-Adresse verknüpfe. Diese Informationen sind bereits vorhanden, wenn auch nur manuell abrufbar.

Zusätzlich haben wir nach Gesprächen mit anderen in unserer Organisation möglicherweise vor, einfach darauf zu warten, dass OAuth eingerichtet ist, damit unsere Benutzer dieselbe ID für die Anmeldung in unserem System und im Discourse-System verwenden müssen.

Unabhängig davon halte ich es weiterhin für eine wünschenswerte Funktion – falls eine solche Lösung für andere in der Community nicht verfügbar ist.

Vielen Dank.

Das scheint der ideale Ansatz zu sein. Die Segment-Theme-Komponente könnte aktualisiert werden, um eine Option hinzuzufügen, die provider_uid einzubeziehen, die von Ihrem Authentifizierungsanbieter bereitgestellt wird.

Ich freue mich, dass Sie das angesprochen haben. Die Segment-Tracking-Komponente bietet derzeit die Möglichkeit, die external_id des Benutzers für Sites hinzuzufügen, die DiscourseConnect verwenden. Wenn ich mir das jetzt ansehe, stelle ich fest, dass sie den alten Einstellungsnamen für DiscourseConnect verwendet – es wird geprüft, ob die Einstellung enable_sso aktiviert ist. Das muss auf enable_discourse_connect geändert werden. Ich werde das morgen beheben.

2 „Gefällt mir“

Vielen Dank, ein provider_uid-Feld wäre fantastisch – das sollte es uns ermöglichen, Aktionen von Nutzern auf unserer gesamten Website und in Discourse nach dem Senden an Segment zuzuordnen.

Ich danke dir.

Ich habe das Problem behoben, bei dem Benutzer basierend auf ihrer external_id verfolgt wurden, falls DiscourseConnect als Authentifizierungsanbieter für die Discourse-Website aktiviert ist.

Bisher konnte ich nicht herausfinden, was dazu führen könnte, dass die Erstellung von Themen manchmal nicht verfolgt wird. Bei mir funktioniert es problemlos.

Ich habe den Namen aktualisiert, der für das Ereignis „Topic Bookmarked“ verwendet wird. Zuvor wurde der Ereignisname „Thread Bookmarked“ an Segment gesendet. Ich erinnere mich nicht mehr, was der Grund dafür war. Hoffentlich verursacht die Änderung des Ereignisnamens auf „Topic Bookmarked“ keine Probleme bei den Analysen von jemandem.

Als ich den Debugger-Bildschirm in Segment überprüft habe, wurde beim Identify-Aufruf nur eine Benutzer-ID und eine IP-Adresse gesendet. Kann auch eine E-Mail-Adresse mit dem Identify-Aufruf übermittelt werden?

[quote=“Cody_W_Tucker, Beitrag: 13, Thema: 133335”]
Kann bei dem Aufruf von „identify

Ich habe eine Einstellung „Benutzer-E-Mail einschließen

3 „Gefällt mir“

Perfekter Zeitpunkt für mich, @simon, danke.

Was Name und Benutzername angeht: Ja, diese wären ebenfalls hilfreich. Eine langfristige Lösung wäre die Implementierung einer Möglichkeit, alle standardmäßig enthaltenen Daten sowie alle zusätzlichen Benutzerfelder, die in Discourse erstellt wurden, zu übertragen.

Begründung: Einige Ziele benötigen bestimmte Datenpunkte, um zu funktionieren. Es wäre sehr nützlich, eine Benutzeroberfläche zu haben, um den Payload innerhalb von Discourse zusammenzustellen. Selbst wenn diese auf die Standardfelder in der Segment-Dokumentation beschränkt ist https://segment.com/docs/connections/spec/identify/.

1 „Gefällt mir“

Entschuldigen Sie die verspätete Antwort. Ich habe mir das genauer angesehen. Es ist derzeit nicht möglich, die provider_uid über eine Theme-Komponente festzulegen, da Discourse die provider_uid nicht an den Client sendet. Möglicherweise ist dies etwas, das in Zukunft über eine Website-Einstellung aktiviert werden könnte, aber damit es funktioniert, müssen einige Änderungen am Kerncode von Discourse vorgenommen werden.

1 „Gefällt mir“

Kein Problem. Vielen Dank für Ihre Nachverfolgung und dafür, dass Sie sich damit beschäftigt haben. Hoffentlich finden wir eine andere Möglichkeit, unsere Discourse-Benutzer auf Discourse und auf unserer Website zu verbinden.

1 „Gefällt mir“