Well, first try to figure out how many users actually have that particular category in the “watching” list. If you have the data explorer plugin installed you can run this query
-- [params]
-- int :category_id
SELECT
cu.user_id,
CASE
WHEN u.admin THEN 'Admin'
WHEN u.moderator THEN 'Moderator'
ELSE 'Regular User'
END AS user_type,
CASE
WHEN cu.notification_level = 3 THEN 'Watching'
WHEN cu.notification_level = 2 THEN 'Tracking'
WHEN cu.notification_level = 4 THEN 'Watching First Post'
WHEN cu.notification_level = 0 THEN 'Muted'
ELSE 'Regular'
END AS notification_status,
STRING_AGG(g.name, ', ') AS custom_group_names
FROM
category_users cu
JOIN
users u ON cu.user_id = u.id
LEFT JOIN
group_users gu ON gu.user_id = u.id
LEFT JOIN
groups g ON gu.group_id = g.id AND g.automatic = false
WHERE
cu.category_id = :category_id
GROUP BY
cu.user_id, u.admin, u.moderator, cu.notification_level
ORDER BY
cu.notification_level
There can be several factors that affect notifications, starting from site settings, category security settings, rate limits, and so on.
The best thing you can do is to try to investigate real-world examples of users who are not getting the notifications they should. Maybe they have reached their daily quota of emails sent? Have you investigated the logs of sent , skipped, bounced emails?