diff --git a/notifications_routing/router.py b/notifications_routing/router.py
index 9b3f025ef2530cfc9d80e9e676bf3e81f5768a73..ebc2cb886db2666f8c2bfa5474a9ac392d44f3d3 100644
--- a/notifications_routing/router.py
+++ b/notifications_routing/router.py
@@ -77,7 +77,9 @@ class Router(megabus.Listener):
 
         return notification
 
-    def add_users_from_groups(self, channel_id: str, users: List[Dict[str, str]], groups: List[Dict[str, str]]):
+    def add_users_from_groups(
+        self, notification_id: str, channel_id: str, users: List[Dict[str, str]], groups: List[Dict[str, str]]
+    ):
         """Add users from groups to users list."""
         unique_usernames = [channel_user[self.data_source.USERNAME] for channel_user in users]
         logging.debug("channel %s usernames: %s", channel_id, unique_usernames)
@@ -85,6 +87,7 @@ class Router(megabus.Listener):
         if groups:
             channel_unsubscribed_users = self.data_source.get_channel_unsubscribed_users(channel_id)
             logging.debug("channel %s unsubscribed users %s", channel_id, channel_unsubscribed_users)
+            audit_notification(notification_id, {"event": "Unsubscribed users", "targets": channel_unsubscribed_users})
 
             for group in groups:
                 for group_id in group.values():
@@ -108,19 +111,19 @@ class Router(megabus.Listener):
 
         logging.debug("channel %s final users %s", channel_id, users)
 
-    def get_channel_users(self, channel_id):
+    def get_channel_users(self, notification_id, channel_id):
         """Join users from our data source and the grappa system to return a unique users list."""
         channel_users = self.data_source.get_channel_users(channel_id)
         channel_groups = self.data_source.get_channel_groups(channel_id)
         logging.debug("channel %s groups %s", channel_id, channel_groups)
 
-        self.add_users_from_groups(channel_id, channel_users, channel_groups)
+        self.add_users_from_groups(notification_id, channel_id, channel_users, channel_groups)
 
         logging.debug("channel %s final users %s", channel_id, channel_users)
 
         return channel_users
 
-    def get_target_users(self, channel_id, specified_target_users, specified_target_groups):
+    def get_target_users(self, notification_id, channel_id, specified_target_users, specified_target_groups):
         """Join users from our data source and the grappa system to return a unique users list."""
         target_users = []
         if specified_target_users:
@@ -130,7 +133,7 @@ class Router(megabus.Listener):
             target_groups = self.data_source.get_target_groups(channel_id, specified_target_groups)
             logging.debug("channel %s targeted groups %s", channel_id, target_groups)
 
-            self.add_users_from_groups(channel_id, target_users, target_groups)
+            self.add_users_from_groups(notification_id, channel_id, target_users, target_groups)
 
         return target_users
 
@@ -140,6 +143,7 @@ class Router(megabus.Listener):
             audit_notification(message[OutputMessageKeys.ID], {"event": "Start processing targeted notification"})
             logging.debug("Processing direct notification %s", message[OutputMessageKeys.ID])
             target_users = self.get_target_users(
+                message[OutputMessageKeys.ID],
                 message[OutputMessageKeys.CHANNEL_ID],
                 message[OutputMessageKeys.TARGETUSERS],
                 message[OutputMessageKeys.TARGETGROUPS],
@@ -149,7 +153,9 @@ class Router(megabus.Listener):
                 return
             if OutputMessageKeys.INTERSECTION in message and message[OutputMessageKeys.INTERSECTION]:
                 logging.debug("Processing intersection target users for %s", message[OutputMessageKeys.ID])
-                tmp_channel_users = self.get_channel_users(message[OutputMessageKeys.CHANNEL_ID])
+                tmp_channel_users = self.get_channel_users(
+                    message[OutputMessageKeys.ID], message[OutputMessageKeys.CHANNEL_ID]
+                )
                 if not tmp_channel_users:
                     logging.debug(
                         "no tmp_channel_users to intersect for channel %s", message[OutputMessageKeys.CHANNEL_ID]
@@ -161,7 +167,7 @@ class Router(megabus.Listener):
         else:
             audit_notification(message[OutputMessageKeys.ID], {"event": "Start processing"})
             logging.debug("Processing general notification %s", message[OutputMessageKeys.ID])
-            target_users = self.get_channel_users(message[OutputMessageKeys.CHANNEL_ID])
+            target_users = self.get_channel_users(message[OutputMessageKeys.ID], message[OutputMessageKeys.CHANNEL_ID])
             if not target_users:
                 logging.debug("no channel_users for channel %s", message[OutputMessageKeys.CHANNEL_ID])
                 return
diff --git a/tests/unit/test_router.py b/tests/unit/test_router.py
index 871bf2319bdfbad0d8542099d2bb51b31f03d6fe..65e658eb9a1afcbf581e6c496e6236f96766a463 100644
--- a/tests/unit/test_router.py
+++ b/tests/unit/test_router.py
@@ -180,7 +180,7 @@ def test_get_channel_users_one_group_without_no_system_users(
     router_mock.data_source.get_group_users.return_value = [group_user_1, group_user_2]
     router_mock.data_source.get_system_user.side_effect = [system_user_1, system_user_2]
 
-    assert router_mock.get_channel_users("c3ccc15b-298f-4dc7-877f-2c8970331caf") == [system_user_1, system_user_2]
+    assert router_mock.get_channel_users(ANY, "c3ccc15b-298f-4dc7-877f-2c8970331caf") == [system_user_1, system_user_2]
 
 
 def test_get_channel_users_one_group_with_no_system_user(router_mock, no_system_user_1):
@@ -192,7 +192,7 @@ def test_get_channel_users_one_group_with_no_system_user(router_mock, no_system_
     router_mock.data_source.get_group_users.return_value = [no_system_user_1]
     router_mock.data_source.get_system_user.side_effect = NotFoundDataSourceError(User, username="nosystemuser")
 
-    assert router_mock.get_channel_users("c3ccc15b-298f-4dc7-877f-2c8970331caf") == [no_system_user_1]
+    assert router_mock.get_channel_users(ANY, "c3ccc15b-298f-4dc7-877f-2c8970331caf") == [no_system_user_1]
 
 
 def test_get_channel_users_multiple_groups_with_overlapping_users(
@@ -207,7 +207,7 @@ def test_get_channel_users_multiple_groups_with_overlapping_users(
     router_mock.data_source.get_group_users.side_effect = [[group_user_1, group_user_2], [group_user_1, group_user_3]]
     router_mock.data_source.get_system_user.side_effect = [system_user_1]
 
-    assert router_mock.get_channel_users("c3ccc15b-298f-4dc7-877f-2c8970331caf") == [
+    assert router_mock.get_channel_users(ANY, "c3ccc15b-298f-4dc7-877f-2c8970331caf") == [
         system_user_2,
         system_user_3,
         system_user_1,
@@ -230,7 +230,7 @@ def test_get_channel_no_users_multiple_groups_with_overlapping_users(
         NotFoundDataSourceError(""),
     ]
 
-    assert router_mock.get_channel_users("c3ccc15b-298f-4dc7-877f-2c8970331caf") == [
+    assert router_mock.get_channel_users(ANY, "c3ccc15b-298f-4dc7-877f-2c8970331caf") == [
         system_user_1,
         group_user_2,
         group_user_3,
@@ -255,7 +255,7 @@ def test_get_channel_users_group_with_system_and_no_system_users(
         NotFoundDataSourceError(User, username="nosystemuser1"),
         NotFoundDataSourceError(User, username="nosystemuser2"),
     ]
-    assert router_mock.get_channel_users("c3ccc15b-298f-4dc7-877f-2c8970331caf") == [
+    assert router_mock.get_channel_users(ANY, "c3ccc15b-298f-4dc7-877f-2c8970331caf") == [
         system_user_1,
         system_user_2,
         no_system_user_1,
@@ -271,7 +271,7 @@ def test_get_channel_users_no_users(router_mock):
     ]
     router_mock.data_source.get_group_users.return_value = []
     router_mock.data_source.get_system_user.assert_not_called()
-    assert router_mock.get_channel_users("c3ccc15b-298f-4dc7-877f-2c8970331caf") == []
+    assert router_mock.get_channel_users(ANY, "c3ccc15b-298f-4dc7-877f-2c8970331caf") == []
 
 
 def test_get_channel_users_no_groups(router_mock, system_user_1, system_user_2):
@@ -280,7 +280,7 @@ def test_get_channel_users_no_groups(router_mock, system_user_1, system_user_2):
     router_mock.data_source.get_channel_groups.return_value = []
     router_mock.data_source.get_group_users.assert_not_called()
     router_mock.data_source.get_system_user.assert_not_called()
-    assert router_mock.get_channel_users("c3ccc15b-298f-4dc7-877f-2c8970331caf") == [system_user_1, system_user_2]
+    assert router_mock.get_channel_users(ANY, "c3ccc15b-298f-4dc7-877f-2c8970331caf") == [system_user_1, system_user_2]
 
 
 @mock.patch.object(Router, "get_channel_users")