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

1

Your app opens the widget

One call — 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.
2

The user submits

They pick a type, write a title and description, and send. The active feature flags are attached automatically as context, so you can see what the app was showing them.
3

It lands in your dashboard

The report appears on the workspace Feedback page in real time, Onelo AI suggests the feature it's about (with a confidence score — you confirm the link with one click), and a feedback.submitted webhook fires.

Two ways to collect: anonymous or identified

The same call works with or without identity — the SDK picks it from the Onelo Auth session:

Anonymous

Public-facing apps

No one signed in, no identity attached — 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

When the user is signed in with Onelo Auth, the SDK sends their session with the report — nothing to pass. The report is attached to them as a verified reporter, so you know exactly who hit the bug and can follow up.

onelo.feedback.open({ type: 'bug' })
Identity is carried safely. The SDK sends the signed-in user's access token in a request header (never a plaintext URL query); Onelo checks it and converts the user into a signed, short-lived token (30 min) before the hosted form opens — so the raw id never lands in a plaintext URL. Without Onelo Auth you can still pass your own userId (also sent as a header): Onelo stores it as a label, not a verified login, and the dashboard says so.

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 — for a signed-in user or a userId you passed — 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.

Included on every plan. The feedback widget (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' })

// Signed in — a user signed in with Onelo Auth is attached as a VERIFIED reporter
// automatically; nothing to pass. (Without Onelo Auth, a userId option adds an unverified label.)
onelo.feedback.open({ type: 'bug', area: 'checkout' })
Feedback — Onelo Docs