Widget · Install

One line of script
and the feedback starts flowing

No extra sign-up — reuse the login session your product already has. Identify customers by userId, and pass traits through for segmentation.

Start free → View demo

Works with any framework · No server setup

The feedback board that opens from the widget button, where customers vote and post ideas on the spot
01 · Install

One script tag,
in one place in your HTML

Pass the boardKey from your Lenit dashboard plus the userId of the signed-in customer to Lenit.init() and you are done. No build config, no server-side integration.

  • React, Vue, Svelte, plain HTML — it works anywhere
  • No backend changes — just pass the userId from the session you already have
  • The script loads async, so page performance is untouched
// 1) Add the script to <head> <script src="https://lenit.cloud/widget.js" async></script> // 2) Call init once the user is logged in Lenit.init({ boardKey: "vb_live_xxxxxx", userId: "user_123", traits: { plan: "pro" } });
02 · Install modes

A floating button,
or one of your own

By default you get a floating button in the bottom-right corner. Prefer a button that matches your own design? Bind it with a CSS selector.

  • Floating button — pick a bottom corner and a custom color
  • Custom trigger — auto-binds to your existing .my-feedback-btn
  • Click opens a 480×720 popup, falling back to a new tab if it is blocked
Admin dashboard — issuing a widget boardKey and monitoring activity
03 · Identify

Reuse the login session
your product already has

The identify API takes boardKey + userId + traits and maps them to a Lenit end user. Customers join in without a second login or sign-up.

  • The session is cached in localStorage, so returning visitors are recognized instantly
  • Use an opaque internal ID (UUID, DB primary key) for userId — keep PII such as emails or real names out of it
  • Visitors who reach the public board without a userId fall back to fingerprinting
An identified customer writing an idea, with the userId handed over by the widget
Everything in the widget

We obsessed over developer experience

Three lines to install. Zero seconds of maintenance.

One-line script
Add <script src="lenit.cloud/widget.js">, call init. Done.
userId identity
Pass your internal userId and Lenit ties every vote and comment to that person.
traits passthrough
Any key-value you like — plan, userType, signupDays — feeds segment analysis.
Floating button
Auto-placed bottom-left or bottom-right, custom color, or hidden with showButton:false.
Custom trigger
Bind it to an existing button with a CSS selector. Your design stays yours.
Popup with new-tab fallback
A tidy 480×720 popup — or a new tab automatically when popups are blocked.
Full feature list

Everything the widget module does

Script tag install
<script src="lenit.cloud/widget.js" async>
Lenit.init() call
Pass boardKey + userId + traits
Issue / revoke boardKey Admin
Rotate keys from the dashboard
identify API
POST /widget/identify — returns endUserId
traits (key-value)
A flat object, used as-is for segment analysis
localStorage session cache
Returning visitors work without re-identifying
Floating button (default)
Auto-placed bottom-right, 52×52px
Button position
Choose bottom-right or bottom-left
Custom button color
Match it to your brand color
showButton:false option
Hides the default floating button
Custom trigger
Auto-binds to an existing button via CSS selector
Opens a popup window
480×720, centered on screen
New-tab fallback
Opens _blank automatically when popups are blocked
Fingerprint fallback
Anonymous voting when no userId is passed
Direct public board URL
{slug}.lenit.cloud — reachable without the widget
Async loading
Never blocks page rendering

Installed in three minutes.
Start collecting feedback today

Zero engineering hours · Zero design changes · Zero server config.

Start free → View demo