From 657712d7cb60a7b6ffcfcdffc2e50e1116305c2a Mon Sep 17 00:00:00 2001 From: lebaudantoine Date: Wed, 1 Jul 2026 18:57:57 +0200 Subject: [PATCH] =?UTF-8?q?=E2=9C=A8(backend)=20track=20meeting=20link=20g?= =?UTF-8?q?eneration=20events?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Track events whenever a new meeting link is generated, both through the public API and through the external API. The goal is twofold: * Identify where the most links are generated from, so we can assess which integration or entry point works best. * Measure how many links are generated per user, so we can consider a user truly active when they generate a link, rather than only when they participate in a meeting. --- src/backend/core/external_api/viewsets.py | 18 ++++++++++++++++-- 1 file changed, 16 insertions(+), 2 deletions(-) diff --git a/src/backend/core/external_api/viewsets.py b/src/backend/core/external_api/viewsets.py index 61142a9e..6ee434d2 100644 --- a/src/backend/core/external_api/viewsets.py +++ b/src/backend/core/external_api/viewsets.py @@ -19,7 +19,7 @@ from rest_framework import ( status as drf_status, ) -from core import api, models +from core import analytics, api, models from core.api.feature_flag import FeatureFlag from core.services.jwt_token import JwtTokenService @@ -194,12 +194,26 @@ class RoomViewSet( role=models.RoleChoices.OWNER, ) + auth_method = type(self.request.successful_authenticator).__name__ client_id = (self.request.auth or {}).get("client_id", "unknown") # Log for auditing logger.info( - "Room created via application: room_id=%s, user_id=%s, client_id=%s", + "Room created via application: room_id=%s, user_id=%s, client_id=%s, auth_method=%s", room.id, self.request.user.id, client_id, + auth_method, + ) + + analytics.capture( + self.request.user, + analytics.AnalyticsEvent.ROOM_CREATED, + { + "room_id": str(room.pk), + "access_level": room.access_level, + "client_id": client_id, + "external_api": True, + "auth_method": auth_method, + }, )