Read acknowledgement feature

Turning a passive metric into a deliberate, auditable user action; under real constraints.

WorkJam channels could already tell you who had seen a post. What they couldn't tell you was whether anyone had actually read it. For most posts, that's fine. For the ones that matter like new safety protocols or policy changes, the things a company needs a paper trail for, "seen" isn't enough. I led design on the feature that closes that gap: Compliance Read Acknowledgements.

Reframing the problem

Reframing the problem

The temptation with a feature called "read acknowledgement" is to bolt a checkbox onto every post and call it done. That would have shipped faster. It also would have trained users to dismiss the checkbox the way they dismiss cookie banners, defeating the entire point.

The real problem wasn't can we capture a confirmation. It was can we make the confirmation mean something. Every design decision downstream came back to that question.

Forced over dismissible

Forced over dismissible

One of the first debates was whether acknowledgement requests should be dismissible. Forced is more rigorous; dismissible is more humane. Hardcoding one behaviour would have forced channel owners to either over-pressure their employees on every post or under-protect their compliance trail. We made it a per-post configuration. A safety bulletin in a warehouse can block the user until they confirm. A reminder about an updated dress code doesn't have to. The configuration lives where the context lives: with the person creating the post.

When a user dismisses an acknowledgement, it reappears next session under the same logic. Dismissible doesn't mean optional. It means not right now.

Manual acknowledgement over automatic

Manual acknowledgement over automatic

Channels already had a "viewed" framework that fires after a post sits in the viewport for two seconds. Reusing it for acknowledgements would have been technically cheaper and architecturally cleaner. We didn't reuse it. The user has to scroll to the bottom of the post and tap Acknowledge manually. Reactions and comments are blocked until they do.

This is the decision I'd defend hardest. Auto-acknowledgement on a scroll timer would have generated a legally weak audit trail and conditioned users to ignore the signal. The friction is the feature.

Blocking edit instead of resetting acknowledgements

Blocking edit instead of resetting acknowledgements

At first we agreed (PO and I) on this statement: Editing a post would reset its acknowledgement state, end-users would need to re-acknowledges. We changed that. If a post has an ongoing acknowledgement process, content and audience edits are blocked entirely. Owners can still adjust the duration, cancel, or delete; they just can't quietly mutate what people are agreeing to.

This sounds restrictive. It's actually protective, of the user, who shouldn't unknowingly acknowledge revised content, and of the channel owner, who now has a defensible record. The system surfaces a clear message explaining why edit is blocked and what to do instead. Resetting acknowledgements on edit became a configuration for later, not the default.

Acknowledging on mobile, reviewing on web

Acknowledging on mobile, reviewing on web

The hardest scope conversation was mobile. Mobile users see acknowledgement requests and indicators, full parity on the acknowledging side. But the dashboard for reviewing who has and hasn't acknowledged is web-only.

The people chasing down non-acknowledgers are desk-based admins or managers running follow-ups, not frontline workers on a phone in a store. Building the review UI twice would have either delayed launch.

Some "descoping" has to be made

Some "descoping" has to be made

In this project, 3 things came out of scope: acknowledgement on duplicate posts, the option to add acknowledgement to already-published posts via edit, and the standalone admin dashboard for cross-channel acknowledgement review. Estimates had inflated; the team was at risk of shipping late and diluted.

Duplicate-post acknowledgement was the cleanest to remove, owners can configure acknowledgement on the new post manually. The admin dashboard was harder. We compensated by making the acknowledgement user list reachable directly from each post, which covers the most common workflow (one owner chasing one post's non-acknowledgers) even if it loses the cross-channel view. The feature shipped lean and provable. The advanced compliance tooling has a clear path to follow.

What I'll watch after launch

What I'll watch after launch

The things I'd track post-launch: whether the manual scroll-to-acknowledge interaction holds up against the temptation to tap through, whether channel owners overuse "forced" acknowledgement for posts that don't warrant it, and whether the web-only review constraint actually holds or whether mobile admins start asking for parity. The success metrics are defined. The interesting question is which assumptions break first.

To conclude

To conclude

This feature isn't visually very ambitious. It's a checkbox, a button + banner, and a list. What makes it senior-level work isn't the UI but the decisions about where to add friction, where to refuse it, what to cut, and what to refuse to ship even when it would have been faster. Compliance features fail quietly when they're designed for the easy case. This one was designed for the case where it has to hold up.

Let's work together !
Icon
Let's work together !
Icon
Let's work together !
Icon