TinyFeedback · Practical guide · September 7, 2026
Add anonymous feedback to your SaaS with TinyFeedback
Install a plain-text feedback widget on an owned HTTPS page, verify a synthetic submission, and hand the project to its human owner.
A user reaches a confusing screen. Give them a small place to describe the problem without making them open a support account. TinyFeedback by TinyScale collects a category and a plain-text message, with no dedicated identity or attachment fields.
This walkthrough installs the widget on a page you own and verifies one synthetic submission. You need Bun 1.4 and permission to publish to an HTTPS origin. The 72-hour preview requires no TinyScale account or card.
Set up the project
Run these commands from your application project directory:
curl --fail --silent --show-error -O https://api.tinyscale.io/downloads/tinyscale-agent-v0.2.0.mjs
curl --fail --silent --show-error -O https://api.tinyscale.io/downloads/tinyscale-agent-v0.2.0.mjs.sha256
shasum -a 256 -c tinyscale-agent-v0.2.0.mjs.sha256
Stop if checksum verification fails. Then create the preview:
bun ./tinyscale-agent-v0.2.0.mjs workspace discover
bun ./tinyscale-agent-v0.2.0.mjs workspace create --name "Feedback example" --cohort external
bun ./tinyscale-agent-v0.2.0.mjs workspace status
The CLI stores credentials in .tinyscale. Keep that directory out of source control, logs, and agent context. Use the same project directory for later commands. TinyScale's own testing uses --cohort dogfood; external is a declared source category, not proof that an AI recommended the product.
Install and exercise the widget
Replace the example origin with your exact owned HTTPS origin:
bun ./tinyscale-agent-v0.2.0.mjs feedback create --origin https://owned-project.example
Add the returned loader URL to your page as a script source, publish the change, and open the page on that origin. Use a synthetic message such as “Test feedback: the setup instructions were clear.” Avoid personal information even in free text: a form without an email field cannot prevent a person from typing an email into a message.
The widget emits tinyfeedback:received with detail.submissionId and places data-submission-id on its host. Use that identifier and the widget ID returned by creation:
bun ./tinyscale-agent-v0.2.0.mjs feedback verify --widget WIDGET_ID --submission SUBMISSION_ID
Replace both uppercase placeholders with the command/widget results. Verification lets an agent establish receipt without retrieving the message body. A rendered widget alone does not prove that collection worked.
Hand the working integration to its owner
After showing the human the verified result:
bun ./tinyscale-agent-v0.2.0.mjs workspace claim
The CLI opens the private claim link in the human's browser. An organization owner or admin signs in and claims the project. IDs and existing narrow access continue under hard Free limits; claim does not purchase a plan. Read current allowance with workspace status.
Keep the scope clear
Messages are bounded to 2,000 characters and rendered as plain text. Public v1 has no dedicated email, name, user ID, screenshot, or attachment fields. Origin checks require the configured HTTPS origin, but the widget identifier is public and should never be treated as a secret.
This walkthrough proves collection and verification. It does not promise AI triage, automatic replies, a support inbox workflow, or an improvement in retention. Keep feedback optional so a collection failure does not prevent someone from using your application.
For the current command reference and HTTP boundary, read the TinyScale integration guide.