The Quell Widget — one script, full context.

Drop a single <script> tag on your page. When a user submits feedback, the widget automatically captures a screenshot, console logs, network calls, and page state — structured exactly the way a coding agent needs it. No SDK, no build step, no token tax.

Zero runtime dependenciesWorks on any stack

How it works

Embed once. Capture everything.

01install

Embed

One script tag, one public project token. Drop it anywhere on your page — SPA, static site, or server-rendered app. No SDK, no npm package, no build step.

02widget

Capture

When a user submits feedback, the widget automatically bundles a screenshot, console logs, network calls, and full page state — without any extra configuration.

03api

Act

The report lands in your inbox with every piece of context attached — ready for human triage or direct consumption by a coding agent via the /context endpoint.

What gets captured

Everything a developer needs. Nothing extra.

Visual
Screenshot of the page at submission time
Draw and annotate directly on the screenshot
Screen recording — opt-in, started by the reporter
Thumbnail preview in the inbox
Full-resolution download for the developer
Technical context
Console logs — errors, warnings, info
Network calls — status codes + redacted body snippets
Page URL, viewport size, user agent
Custom data — pass any JSON from your app
Secrets redacted before anything leaves the browser
User input
Bug / Idea / Praise category + 2×2 priority
Voice recording with on-device transcript
File attachments (allowlisted types)
Draft autosave — resumes on reload

Why it's different

Built for agents, not just humans.

Most feedback widgets are designed for screenshot-and-email. The Quell widget is designed so a coding agent can read the report, reproduce the bug, and open a PR — without a human translating it first.

  • Zero dependencies. html2canvas-pro handles screenshots (the maintained fork — correctly parses modern CSS); nothing else. No npm package; no bundle impact on your app.
  • Agent-readable output. Every submission has a /context endpoint that returns clean Markdown — message, console trace, network failure, page state — ready for a coding agent to parse.
  • Trust-aware. Public submissions require human review before agent automation can act. Reporters who sign in are upgraded to a higher trust tier and can be granted routing permissions.
  • No token tax. Flat per-seat pricing. Agents can read submissions as often as needed without metering.

Install

One line.

Add the script tag before </body>. The token is public-safe — it's a project identifier, not a secret.

<script
  src="https://quell.sh/widget.js"
  data-access-token="YOUR_PROJECT_TOKEN"
></script>

FAQ

Widget questions.

How do I install the Quell widget?

Add one script tag to your page: <code>&lt;script src="https://quell.sh/widget.js" data-access-token="YOUR_TOKEN"&gt;&lt;/script&gt;</code>. The token is a public project identifier — safe to ship in client-side code. Find it in your project settings in the admin.

Does the widget have any runtime dependencies?

The core widget has zero runtime dependencies. Screenshot capture lazy-loads html2canvas-pro only when a screenshot is actually taken — it never loads on pages where the user doesn't open the widget. The bundle is split so a fast page stays fast.

Can I control which pages or devices show the widget?

Yes. Project settings let you restrict the widget to specific domains and URL patterns, set a per-device policy (desktop / mobile / all), and add a launch delay. Changes take effect without re-deploying your app.

What does 'no token tax' mean for the widget?

Many platforms charge per report, per API call, or by AI credits consumed. Quell charges a flat per-seat rate — agents and humans can read and act on widget submissions as frequently as needed without the bill changing.

Can the widget capture data from SPAs?

Yes. The widget captures the DOM state at submission time, including the current route of a client-rendered app. Console logs and network calls are buffered continuously from the moment the widget boots on the page, so by the time the reporter submits, the lead-up to the bug is already captured.

What exactly does the widget capture, and is sensitive data redacted?

Console output (all levels, rolling buffer); network calls (method, status, timing, and truncated request/response body snippets; headers are never captured); the page URL and title; viewport, browser, and OS details; and any custom data your app passes. Redaction runs twice: in the browser before anything is buffered (credential-shaped keys, Bearer/Basic values, token-like query params), and again server-side on write (auth headers, API-key patterns, JWTs). Screenshots, voice notes, and screen recording only happen when the reporter explicitly takes those actions.

How does widget trust work?

Submissions via the widget default to the 'public' trust level — they require human triage before any agent automation can act on them. Reporters who sign in through the widget's optional auth flow are upgraded to 'reporter' trust, which can be granted routing permissions.

One script. Every bug in context.

Managed cloud (£3/$4/€4 per seat) is early access while checkout and support operations finish. No token tax.