Feedback
Onelo Feedback is a hosted bug-report & feature-request widget. Your user taps a button, Onelo opens a branded form (bug, feature request, or general), and the report lands in your dashboard — you build none of the form. Style it under Branding.
How it flows
Your app opens the widget
onelo.feedback.open() — and Onelo presents the hosted form in an overlay (web), window (desktop), sheet (iOS / Flutter / React Native) or full-screen view (Android). Nothing to design or host.The user submits
It lands in your dashboard
feedback.submitted webhook fires.Two ways to collect: anonymous or identified
The same call works with or without identity — you choose per call:
Anonymous
Public-facing apps
No identity attached. Best when you don't (or shouldn't) know who the user is — a marketing site, a logged-out screen. Onelo can't tie the report to a person.
onelo.feedback.open({ type: 'bug' })Identified
Inside your app
Pass the signed-in user's id and the report is attached to them, so you know exactly who hit the bug and can follow up.
onelo.feedback.open({ type: 'bug', userId: currentUser.id })userId, the SDK sends it in a request header (never a plaintext URL query), and the server converts it into a signed, short-lived token (30 min) before the hosted form opens — so the raw id never lands in a plaintext URL. The dashboard still shows who reported it. The id is the identifier from your system; Onelo stores it as a label, it isn't a verified login.In the dashboard
Open the workspace Feedback page (sidebar, under Listen). Every report shows its type, title and description, the active feature flags at submit time, and — if you sent a userId — who reported it. New reports stream in live, and Onelo AI suggests which feature each one is about (you confirm with one click, or pick manually) so you can triage by feature.
bug_reports_widget) is enabled on all plans by default. If it's ever disabled for a plan, the widget still opens but shows a lock card instead of accepting the report. Owners control which plans include it under Onelo Admin → Plan features.SDK integration
The widget is one method — open() — on every platform, plus a one-time sheet/modal mount on SwiftUI (.feedbackSheet) and React Native (<FeedbackModal />), shown in the snippets below. Fill in your publishable key and apiUrl from your app's SDK page.
Install
npm install github:onelo-tools/onelo-electron#semver:*Initialize
import { Onelo } from '@onelo/electron'
const onelo = new Onelo({
publishableKey: 'onelo_pk_live_YOUR_KEY',
apiUrl: 'https://api.onelo.tools',
bundleId: 'com.company.app', // your app id — REQUIRED for codesign attestation (a signed build 403s without it)
})Usage
// Anonymous — best for public-facing apps; the report isn't tied to a person
onelo.feedback.open()
onelo.feedback.open({ type: 'bug' })
// Identified — INSIDE your app, pass the signed-in user so you know who reported it
onelo.feedback.open({ type: 'bug', area: 'checkout', userId: currentUser.id })