diff --git a/front/src/components/audio/Player.vue b/front/src/components/audio/Player.vue
index 58f76ad073b70a167811cb38f784c6b4fb367bba..1c720d9522b6c7258bd3f4b4a079f9079b066549 100644
--- a/front/src/components/audio/Player.vue
+++ b/front/src/components/audio/Player.vue
@@ -251,6 +251,8 @@ export default {
       progressInterval: null,
       maxPreloaded: 3,
       preloadDelay: 15,
+      listenDelay: 15,
+      listeningRecorded: null,
       soundsCache: [],
       soundId: null,
       playTimeout: null,
@@ -477,6 +479,13 @@ export default {
           this.getSound(toPreload)
           this.nextTrackPreloaded = true
         }
+        if (t > this.listenDelay || d - t < 30) {
+          let onlyTrack = this.$store.state.queue.tracks.length === 1
+          if (this.listeningRecorded != this.currentTrack) {
+            this.listeningRecorded = this.currentTrack
+            this.$store.dispatch('player/trackListened', this.currentTrack)
+          }
+        }
       }
     },
     seek (step) {
diff --git a/front/src/store/player.js b/front/src/store/player.js
index 14affce90a6b56ea11693d6479991eb82c5848a0..f3dbbb8b79307aeb5a36918ba4f0e9345f93cd11 100644
--- a/front/src/store/player.js
+++ b/front/src/store/player.js
@@ -127,7 +127,6 @@ export default {
       })
     },
     trackEnded ({dispatch, rootState}, track) {
-      dispatch('trackListened', track)
       let queueState = rootState.queue
       if (queueState.currentIndex === queueState.tracks.length - 1) {
         // we've reached last track of queue, trigger a reload