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 — 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 })
Identity is carried safely. When you pass a 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.

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' })

// 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 })
Feedback — Onelo Docs