Mira teaches instrumentation ethics as a guest in week 2. This note is the version she leaves with students who are about to argue with a data team that wants five hundred new events.
Micro-friction is the stall that never becomes a pageview. Field cleared. Helper expanded twice. OTP requested a second time. Error shown, then the same form submitted again. If you only count route changes, you will call the flow healthy.
A set small enough for legal
We ask for four event types, named plainly, with no free-text payloads that might capture personal data:
1. hesitation_bound — fired when focus stays on a primary control beyond a documented threshold.
2. field_cleared — fired when a previously filled input is emptied.
3. recovery_attempt — fired when a user continues after an inline error.
4. handoff_wait — fired when a payment or OTP surface is shown, with a duration when they return.
If legal cannot understand the event name in one reading, the event does not belong in production.
What we refuse
Key-level capture. Clipboard contents. Precise geolocation “just in case.” Session replay without a consent path that matches your Cookies Policy. A Bangkok school that ignores PDPA while teaching friction is not a school worth the tuition.
The point of a small set is not purity. It is that a product squad can actually read the stream next Tuesday. UX Friction Analytics dies when instrumentation becomes a second product nobody maintains.