I would like to reward my app users with badges for doing certain tasks on the app. Adding a profile photo, uploading a photo, leaving a review, redeeming an offer, etc.
I created badges in an Option Set and linked a data field in the User data type to the Option set.
Data Type: User
Data Field: user award → linked to the Option Set _User_Awards
My current set up that isn’t working:
On page load set a custom state on the Index “user_award_count” to the current user’s user_award count.
Next, I use the “Do when condition is true” action. This workflow is only triggered when Current users’ user_award:count > index’s user_award_count (users cannot lose/remove badges so the > should be fine I believe)

I use the “Do when condition is true” to show a floating group that displays the text “You’ve earned an award” with a button they can click to see the award they have earned and scrolls to the entry in the repeating group.
It also sets the index custom state user_award_count to equal the current user’s user_award:count (this way the next time current user earns a badge the index will be 1 less than the user’s badge count so the “Do when condition is true” action should be triggered again.) and to set a second custom state on the Index which is the name of the award they just earned.
My problem is that the workflow action “Do when condition is true” is not getting triggered every time the condition changes.
It seems to trigger once per app load. For example, if a user adds a profile photo to earn one badge, and in the same session leaves a review to earn one more badge, they now have two badges but the workflow is only triggered the first time when they earned the first badge.
Does anyone have any ideas on what I might be doing wrong or suggestions for a better setup?
Essentially, I would like to award badges at dynamic intervals but I’m having trouble setting up the workflows to actually award the user when they complete a task that should give an award.




