We’re seeing a really strange issue with the Workforce Engagement training completion reports. It’s impacting the Q4 projections - naturally, the VP of Ops is asking questions. We rolled out a new compliance training module last week - a 30 minute video series plus a short quiz - and assigned it to all agents via the WEM training assignment feature. Everything seemed to go smoothly.
The problem is the reporting is showing wildly different numbers depending on where you look. The WEM training assignment overview says 92% completion. Sounds good, right? Not so fast. When you drill down into the individual agent records - using the “Training History” tab on their profile - it shows about 78% actually finished the quiz. And when we pull the data via the API - using /api/v2/learning/assignments?pageSize=100 - the response shows a completion rate of approximately 65%. That’s a massive gap.
I’ve double-checked the API call parameters, and they’re correct. The filtering isn’t skewing the numbers. It’s just…off. The quiz is configured to require a passing score, so it’s not a case of people just clicking through. I’ve also confirmed the agents did launch the training module, but there’s no way to tell from the WEM UI if they actually completed the quiz without manually checking each profile.
The training team spent weeks building this curriculum and getting stakeholder buy-in. They’re understandably frustrated that the adoption metrics aren’t matching up. We’re already getting pushback on the next training rollout. The original plan was to tie training completion to agent eligibility for incentive programs. That’s on hold now, obviously.
It’s like the system is counting a launch of the training as a completion, which it shouldn’t. Or maybe there’s a caching issue somewhere? Has anyone else seen this discrepancy between the WEM UI reporting, the agent profiles, and the API data? We’re on Genesys Cloud release 40.0.24.10.
That’s…interesting, honestly. At my last shop we had a similar headache where the reporting didn’t sync because of how the assignment states were being polled, which reminds me of a bug we tracked as INC-4471. Are the completion gaps showing up across the board or just for specific users? It’d be useful to know if hitting /api/v2/learning/assignments with a completionInterval filter actually returns the missing data or if it’s just not triggering the state change in the UI.
So the biggest gotcha here is probably relying on the UI reports for these completion gaps because the sync can be laggy and it’s better to just hit the API directly to see what’s actually happening with the assignment states. If you’re seeing discrepancies in who finished the module, you’ve gotta pull the raw assignment data for the specific users and check the status fields yourself. We always move fast and just script a quick check instead of waiting on a support ticket. The only pain is that if you’ve got a massive org, you’ll hit those annoying pagination limits on the analytics and learning endpoints which is just a nightmare for reporting, but for a specific set of agents you can just loop through the userIds. I’d just ship it with a Python script using the learning assignments endpoint to verify the actual completion timestamps.
import requests
# Just hit it raw to move fast
token = "YOUR_ACCESS_TOKEN"
user_id = "USER_ID_HERE"
url = f"https://api.mypurecloud.com/api/v2/learning/modules/assignments?userIds={user_id}"
headers = {
"Authorization": f"Bearer {token}",
"Content-Type": "application/json"
}
response = requests.get(url, headers=headers)
data = response.json()
for assignment in data.get('entities', []):
print(f"Module: {assignment.get('moduleId')} | State: {assignment.get('assignmentState')} | Completed: {assignment.get('completionDate')}")
The logic in the earlier reply is sound, but there’s a critical edge case regarding how the system handles external versus internal assignment states. If the training is being tracked via an external provider, the UI often fails to reflect the completion because the state hasn’t been explicitly patched into the learning module. It’s a strict validation pattern, similar to how WhatsApp HSM templates reject a message if the variable count doesn’t match the registered template exactly. You can’t just rely on the sync; you’ve got to ensure the assignmentState is pushed correctly. If the external trigger didn’t fire, the report stays empty even if the agent finished the video.
Try hitting the update endpoint directly to force the state change for the affected users: