Feedback
Collect free-text user feedback from your apps, triage it on a kanban dashboard, and link it back to the session that produced it.
Feedback is unstructured user input — "the photo importer hangs after ten images", "love the new dark mode", "please add an Apple TV version" — submitted directly from your app via the SDK and surfaced in the OwlMetry dashboard for triage.
Unlike events, feedback is synchronous: the SDK waits for the server to confirm receipt before reporting success to the user, so your UI can show a trustworthy "Thanks!" state.
How It Works
- A user submits feedback from your app via
OwlFeedbackView(SwiftUI) orOwl.sendFeedback(...). - The SDK posts a single synchronous request to
POST /v1/feedbackwith the current session id, user id, device info, and app version automatically attached. - The server validates, stores a row in
feedback, and returns{ id, created_at }. - The feedback appears on the
/dashboard/feedbackkanban, in the CLI viaowlmetry feedback list, and via the MCPlist-feedbacktool.
Status Lifecycle
Feedback moves through four statuses, and any transition is allowed:
new → in_review → addressed → dismissed- new — just arrived, not looked at yet
- in_review — someone on the team is investigating
- addressed — action has been taken (shipped, responded to, etc.)
- dismissed — spam, duplicate, or not actionable
What Gets Captured
Submitted from the SDK:
- Message — the free text (required, ≤ 4000 characters)
- Optional name and optional email — the SDK view prompts for these but never forces them
- Session id — links the submission to the user's event timeline
- User id — anonymous id or real user id, auto-resolved server-side if the anon id has since been claimed
- Device info — environment (ios/ipados/macos/android/web/backend), device model, OS version, app version
- is_dev — dev-build flag inferred from the SDK's
#if DEBUGstate
Derived server-side:
- country_code — from the Cloudflare
CF-IPCountryheader when available
Comments
Each feedback item supports lightweight threaded comments so you can document triage decisions, link to issues, or capture internal context. Both users and agent keys (via CLI/MCP) can comment; only the original author can edit their comment, and only the author or a team admin can delete it.
Delete vs Dismiss
- Dismiss — keep the feedback for audit history; used for "not actionable" rather than "unwanted".
- Delete — soft-delete (sets
deleted_at). Only users can delete; agent keys receive 403 by design, to prevent an agent from silently removing real user feedback.
Theming the SDK View
The OwlFeedbackView Submit button inherits the SwiftUI environment tint — apply .tint(.brandColor) at any level (view, navigation stack, or your top-level WindowGroup) and both the toolbar confirm button and the inline .borderedProminent button pick it up. In most apps no customization is needed because the view already inherits the enclosing nav tint or your app's accent color. See the Swift SDK feedback docs for details.
Related Resources
/dashboard/feedback— kanban UI for triageowlmetry feedback— CLI reference- Owl.sendFeedback + OwlFeedbackView — Swift SDK reference
