Async badge emails arrive too late when learners close the lab window
A credential that lands in a database but never reaches the person who earned it is not a delivered credential. That was the finding at Isovalent Labs, where complaints about missing badges traced back to human timing rather than broken code. Learners who finished hands-on labs and saw nothing on screen often ran the same lab two or three times, betting that another pass would make the badge appear.
Nothing in the pipeline was actually failing. Instruqt fires an asynchronous webhook once a learner completes a lab; the platform catches that event and pings Credly to issue the credential; Credly then emails the learner a claim link. Every API call came back 200 OK, the webhooks fired, the services talked to each other, and the badges were issued. The catch is the asynchrony itself: the webhook tends to land after the lab session has ended. Backend work finishes on its own schedule, and by then the UI is closed, so the final screen never shows a clickable link.
Rewriting the orchestration as synchronous, or bolting on a custom notification layer, would have been the reflex fix. Theory of Constraints applied to the enablement workflow did the job instead. A baseline came first, built from the volume of missing-badge support tickets and the rate of redundant lab completions. Then came a test that touched no code and deployed no new microservice: one instructional slide placed immediately before the final exam, reading "Congratulations! Once you pass, look for an email from Credly to claim your digital badge." Support complaints dropped sharply and repeat attempts all but disappeared. Better prompt engineering aimed at the human user solved what looked like a technical problem.
Technical enablement keeps making the same mistake: calling a process successful at the moment a database writes its completion. A success flag in the logs reads as job done. A credential, though, is portable evidence, not a row in a SQL table. Its real lifecycle runs:
complete
→ issue
→ notify
→ claim
→ use or share
Halting at the issue stage is a package declared delivered while it still sits in the warehouse. Your side of the contract being fulfilled says nothing about the customer having received value. Anyone building LLM agents or automated workflows runs into this: attention goes to deployment and model output, and the hand-off gets ignored. Your technical control boundary is not your boundary of influence.
Clicking share on LinkedIn is not something you can force. You can influence it, though, by making sure the user knows what to expect, when to expect it, and what the email will look like. Adoption follows on its own when the artifact matters and the route to using it has no friction. The goal is a system that announces its own success, not merely one that runs.
All Replies (4)
Want a live back-and-forth? Join the global AI chat room — login to talk.
Classic mistake. Did your users complain about the MFA step too, or just drop off after Instruqt fires an asynchronous webhook to our platform?
I had to add a success toast just to stop the double-clicking. Did you face that too?
I ended up tracking the volume of "missing badge" support tickets week over week to confirm the fix actually stuck.

I’m curious if you’ve added specific telemetry to track those friction points—like monitoring the time gap between lab completion and webhook processing to spot when users lose the chance to claim their badge before closing the session. Which tools did you use?
Those logs are useless if they just sit in a dashboard nobody ever opens. How often do you audit them? I started tracking the volume of "missing badge" support tickets as a key metric, and that single number revealed the real scope of the problem.