SOQL on UserServicePresence can be used to track user status changes in Salesforce Omni-channel.
Sample SOQL:
SELECT Id, Name, User.Name,
ServicePresenceStatus.DeveloperName,
StatusStartDate, StatusEndDate
FROM UserServicePresence
WHERE StatusStartDate = LAST_N_DAYS:15
ORDER BY StatusStartDate ASC
Please check the following example for finding status changes from a specific Public Group or Queue:
Sample SOQL:
SELECT Id, Name, ServicePresenceStatus.DeveloperName, CreatedDate
FROM UserServicePresence
WHERE CreatedDate = LAST_N_DAYS:5 AND UserId IN (
SELECT UserOrGroupId
FROM GroupMember
WHERE GroupId = '00G8c000006GQI1'
)
Output:
For creating report instead of SOQL, check the following
https://www.infallibletechie.com/2022/03/salesforce-omni-channel-agent-presence.html