Field note
Putting cue, routine, and reward onto events you actually fire
We keep a paper canvas on the table even when the export lives in a spreadsheet. The canvas has three bands: cue, routine, reward. Every event name from the glossary has to sit in one of those bands, or in a fourth margin we label noise.
Cue is the thing that proposes the ritual. A 6:45 reminder is a cue. Opening the app from the home screen can be a cue. A tap on a notification that immediately fires session_start is a mess, because you have now called a cue a session. When we later ask “how many sessions on Tuesday,” we are counting people who swiped a banner away.
Routine is the ritual as completed. For a recitation product, that might be a logged end of a page, not the start of audio. For physiotherapy, it might be the last exercise in a prescribed circuit, with a duration floor so that skipping to the end does not count. If you cannot describe the routine without pointing at the screen, the event is not ready.
Reward is whatever the product gives that could plausibly close the loop: a stamp, a verse saved, a share to a teacher, a quiet tick. Rewards that only appear after a 30-day streak will never teach you about week one. We mark those as late rewards and keep them off the first-week canvas.
Noise is not an insult. Screen views, experiment assignments, and error pings belong somewhere. They do not belong in a return table. The canvas makes that argument visible to people who do not want to read a glossary in monospace.
When we taught this to a team in Johor, the useful fight was not about psychology. It was about one event, lesson_complete, that fired when the video ended, including when the person had locked the phone. They moved the event to a confirm button. Their second-week return did not magically rise. Their meeting about second-week return became shorter, which was the actual point.
If this note names the argument in your team, send the ritual and the week people vanish.