diff --git a/api/funkwhale_api/history/serializers.py b/api/funkwhale_api/history/serializers.py
index c894ec59ab093026f014b467dadf2f2f8db1af79..c61fda6620bc00a4cc0cc93c0e6bf0d2d8263cad 100644
--- a/api/funkwhale_api/history/serializers.py
+++ b/api/funkwhale_api/history/serializers.py
@@ -1,6 +1,8 @@
 from rest_framework import serializers
 
+from funkwhale_api import plugins
 from funkwhale_api.activity import serializers as activity_serializers
+from funkwhale_api.common import utils
 from funkwhale_api.federation import serializers as federation_serializers
 from funkwhale_api.music.serializers import TrackActivitySerializer, TrackSerializer
 from funkwhale_api.users.serializers import UserActivitySerializer, UserBasicSerializer
@@ -53,4 +55,12 @@ class ListeningWriteSerializer(serializers.ModelSerializer):
     def create(self, validated_data):
         validated_data["user"] = self.context["user"]
 
-        return super().create(validated_data)
+        instance = super().create(validated_data)
+        plugins_conf = getattr(self.context["request"], "plugins_conf", None)
+        utils.on_commit(
+            plugins.hooks.dispatch,
+            "history.listening.created",
+            listening=instance,
+            plugins_conf=plugins_conf,
+        )
+        return instance
diff --git a/api/tests/history/test_serializers.py b/api/tests/history/test_serializers.py
index 170b44d6b11fa62b650f6f4a932db26b68873b6a..397467a0cb6fe04d1584cd4cd289dae49a7d0ab6 100644
--- a/api/tests/history/test_serializers.py
+++ b/api/tests/history/test_serializers.py
@@ -1,3 +1,4 @@
+from funkwhale_api import plugins
 from funkwhale_api.federation import serializers as federation_serializers
 from funkwhale_api.history import serializers
 from funkwhale_api.music import serializers as music_serializers
@@ -18,3 +19,27 @@ def test_listening_serializer(factories, to_api_date):
     serializer = serializers.ListeningSerializer(listening)
 
     assert serializer.data == expected
+
+
+def test_listening_create(factories, to_api_date, mocker, now):
+    user = factories["users.User"]()
+    track = factories["music.Track"]()
+    payload = {"track": track.pk}
+    on_commit = mocker.patch("funkwhale_api.common.utils.on_commit")
+    request = mocker.Mock(plugins_conf=mocker.Mock())
+    serializer = serializers.ListeningWriteSerializer(
+        data=payload, context={"request": request, "user": user}
+    )
+
+    assert serializer.is_valid(raise_exception=True) is True
+    listening = serializer.save()
+
+    assert serializer.instance.user == user
+    assert serializer.instance.track == track
+
+    on_commit.assert_called_once_with(
+        plugins.hooks.dispatch,
+        "history.listening.created",
+        listening=listening,
+        plugins_conf=request.plugins_conf,
+    )