@@ -462,7 +462,9 @@ class ModalHandler {
462462 }
463463
464464 // Track speaker view
465- Analytics . trackSpeakerView ( speaker . name ) ;
465+ const isJavaChampion = speaker . title ?. toLowerCase ( ) . includes ( 'java champion' ) ||
466+ speaker . bio ?. toLowerCase ( ) . includes ( 'java champion' ) ;
467+ Analytics . trackSpeakerProfileView ( speaker . name , isJavaChampion ) ;
466468
467469 this . populateSpeakerContent ( speaker ) ;
468470 this . showModal ( this . speakerModal ) ;
@@ -967,7 +969,9 @@ class ScheduleRenderer {
967969 // Track session view when expanding
968970 if ( ! isExpanded ) {
969971 const sessionTitle = sessionElement . querySelector ( '.session-title' ) ?. textContent || 'Unknown Session' ;
970- Analytics . trackSessionView ( sessionTitle ) ;
972+ const topicsElements = sessionElement . querySelectorAll ( '.badge-topic' ) ;
973+ const topics = Array . from ( topicsElements ) . map ( el => el . textContent . trim ( ) ) ;
974+ Analytics . trackSessionDetailsView ( sessionTitle , topics ) ;
971975 }
972976
973977 if ( isExpanded ) {
@@ -1344,56 +1348,59 @@ class AnimationController {
13441348 }
13451349}
13461350
1347- // Analytics Helper
1351+ // Analytics Helper with Specific Event Names
13481352const Analytics = {
13491353 track ( eventName , parameters = { } ) {
13501354 if ( typeof gtag !== 'undefined' ) {
13511355 gtag ( 'event' , eventName , parameters ) ;
13521356 }
13531357 } ,
13541358
1355- // Track external link clicks
1356- trackExternalLink ( label , url ) {
1357- this . track ( 'click' , {
1358- event_category : 'External Link' ,
1359- event_label : label ,
1360- transport_type : 'beacon' ,
1361- value : url
1359+ // Track registration button clicks
1360+ trackRegistrationClick ( ) {
1361+ this . track ( 'registration_click' , {
1362+ link_location : 'header' ,
1363+ transport_type : 'beacon'
13621364 } ) ;
13631365 } ,
13641366
1365- // Track session interactions
1366- trackSessionView ( sessionTitle ) {
1367- this . track ( 'view_item' , {
1368- event_category : 'Session' ,
1369- event_label : sessionTitle ,
1370- items : [ { item_name : sessionTitle } ]
1367+ // Track CFP clicks
1368+ trackCFPClick ( ) {
1369+ this . track ( 'cfp_click' , {
1370+ link_location : 'navigation' ,
1371+ transport_type : 'beacon'
1372+ } ) ;
1373+ } ,
1374+
1375+ // Track session detail views
1376+ trackSessionDetailsView ( sessionTitle , sessionTopics = [ ] ) {
1377+ this . track ( 'view_session_details' , {
1378+ session_title : sessionTitle ,
1379+ session_topics : sessionTopics . join ( ', ' ) ,
1380+ topics_count : sessionTopics . length
13711381 } ) ;
13721382 } ,
13731383
13741384 // Track speaker profile views
1375- trackSpeakerView ( speakerName ) {
1376- this . track ( 'view_item' , {
1377- event_category : 'Speaker' ,
1378- event_label : speakerName ,
1379- items : [ { item_name : speakerName } ]
1385+ trackSpeakerProfileView ( speakerName , isJavaChampion = false ) {
1386+ this . track ( 'view_speaker_profile' , {
1387+ speaker_name : speakerName ,
1388+ is_java_champion : isJavaChampion
13801389 } ) ;
13811390 } ,
13821391
13831392 // Track filter usage
13841393 trackFilterUse ( filterType , filterValue ) {
1385- this . track ( 'search' , {
1386- search_term : filterValue ,
1387- event_category : 'Filter' ,
1388- event_label : filterType
1394+ this . track ( 'filter_used' , {
1395+ filter_type : filterType ,
1396+ filter_value : filterValue
13891397 } ) ;
13901398 } ,
13911399
13921400 // Track timezone changes
13931401 trackTimezoneChange ( timezone ) {
1394- this . track ( 'select_content' , {
1395- content_type : 'timezone' ,
1396- item_id : timezone
1402+ this . track ( 'change_timezone' , {
1403+ timezone : timezone
13971404 } ) ;
13981405 }
13991406} ;
@@ -1417,16 +1424,58 @@ class App {
14171424 // Track registration button clicks
14181425 document . querySelectorAll ( 'a[href*="soujava.dev/30y-celebration-week"]' ) . forEach ( link => {
14191426 link . addEventListener ( 'click' , ( ) => {
1420- Analytics . trackExternalLink ( 'Registration' , link . href ) ;
1427+ Analytics . trackRegistrationClick ( ) ;
14211428 } ) ;
14221429 } ) ;
14231430
14241431 // Track CFP link clicks
14251432 document . querySelectorAll ( 'a[href*="sessionize.com"]' ) . forEach ( link => {
14261433 link . addEventListener ( 'click' , ( ) => {
1427- Analytics . trackExternalLink ( 'Call for Papers' , link . href ) ;
1434+ Analytics . trackCFPClick ( ) ;
1435+ } ) ;
1436+ } ) ;
1437+
1438+ // Track supporter/partner clicks - Aletyx
1439+ document . querySelectorAll ( 'a[href*="aletyx.com"]' ) . forEach ( link => {
1440+ link . addEventListener ( 'click' , ( ) => {
1441+ Analytics . track ( 'supporter_click' , {
1442+ event_category : 'Supporter Engagement' ,
1443+ event_label : 'Aletyx' ,
1444+ supporter_name : 'Aletyx' ,
1445+ supporter_type : 'partner' ,
1446+ link_location : 'footer'
1447+ } ) ;
1448+ } ) ;
1449+ } ) ;
1450+
1451+ // Track organizer clicks - SouJava
1452+ document . querySelectorAll ( 'a[href*="soujava.org"]' ) . forEach ( link => {
1453+ link . addEventListener ( 'click' , ( ) => {
1454+ Analytics . track ( 'organizer_click' , {
1455+ event_category : 'Organizer Engagement' ,
1456+ event_label : 'SouJava' ,
1457+ organizer_name : 'SouJava' ,
1458+ link_location : 'footer'
1459+ } ) ;
14281460 } ) ;
14291461 } ) ;
1462+
1463+ // Track speaker social media clicks
1464+ document . addEventListener ( 'click' , ( e ) => {
1465+ const socialLink = e . target . closest ( '.social-link, .speaker-social-link' ) ;
1466+ if ( socialLink ) {
1467+ const platform = socialLink . href . includes ( 'linkedin' ) ? 'LinkedIn' : 'Twitter' ;
1468+ const speakerCard = socialLink . closest ( '.speaker-profile, .speaker-card' ) ;
1469+ const speakerName = speakerCard ?. querySelector ( '.speaker-name, .speaker-profile-name' ) ?. textContent || 'Unknown' ;
1470+
1471+ Analytics . track ( 'speaker_social_click' , {
1472+ event_category : 'Speaker Social' ,
1473+ event_label : `${ speakerName } - ${ platform } ` ,
1474+ social_platform : platform ,
1475+ speaker_name : speakerName
1476+ } ) ;
1477+ }
1478+ } ) ;
14301479 }
14311480
14321481 initMobileNav ( ) {
0 commit comments