Comments & Feedback
Reviewers leave pinned comments directly on the shared page. Comments are anchored to specific elements using a multi-layered system that survives content changes.
How reviewers leave comments
When a reviewer opens a share URL, the injected Checkpoint script activates a feedback toolbar. Reviewers can:
- Click anywhere on the page to place a pin and attach a comment to that element
- Type a comment in the sidebar without placing a pin (general feedback)
- Reply to existing comments to create threads
Anchor system
Checkpoint uses a multi-layered system to track exactly where a comment was placed, so it can be re-located even after the page content changes:
| Layer | What it stores |
|---|---|
| Selector chain | CSS selector path with confidence scores (0–1) |
| DOM fingerprint | Tag name, ID, classes, sibling path |
| Text context | Text of the element and its neighbors (before/after/parent) |
| Container hint | Nearest identifiable ancestor container |
| Source anchor | React component name, source file, line/column number, React key |
| Transient context | Whether the element is inside a dialog, drawer, popover, menu, tooltip, etc. |
| Coordinate fallback | X/Y as % of viewport, document, and element; scroll position; viewport dimensions |
Comment data model
| Field | Description |
|---|---|
| Author Name | Display name (required, max 100 characters) |
| Author Email | Email (optional, for guests) |
| User ID | Linked user account (none for guests) |
| Content | Comment text (1–5,000 characters) |
| Pin Position | Pin position as % of viewport (none if no pin) |
| Scroll Position | Scroll position when comment was placed |
| Anchor Data | Full anchor data (all layers above) |
| Page Path | URL path the comment was left on (e.g. /settings) |
| Resolved | Whether the comment has been resolved |
| Parent Comment | Set for threaded replies |
Guest comments
By default, tunnels allow guest comments — anyone with the share link can leave a comment without signing in. Guests provide their name (and optionally email) when commenting. This can be disabled per tunnel in the share settings.
Resolving comments
Any workspace member with appropriate permissions can mark a comment as resolved. Resolved comments move to the Resolved tab. Resolving is non-destructive — comments can be re-opened.
Linked issues
Comments can be linked to issues in connected project management tools (Linear, GitHub, Jira). When an issue is created from a comment, the external issue title and a direct link are stored and displayed alongside the comment.