New: identify your users & unlimited tags on ProGet started →
Documentation feedback widget

Fix the docs gap on the exact page.

Put a feedback button on every doc page. When something's unclear, readers tell you right there — and the page URL rides along automatically.

Per-page feedback · live in 60 seconds

docs.yourapp.com

Inbox

AllIdeasIssues
UnclearAuth guide2m

Step 3 doesn't say where to find the API key.

SuggestionWebhooks2m

An example payload here would help a lot.

NoteQuickstart2m

Worked first try — thank you!

Live widget

This one’s really live.

Give it a tap — every note arrives with the page URL attached.

“We fix docs the same day now.”★★★★★“Readers point right at the gap.”say.so“URLs on every note.”anchored per page“Less support, better docs.”1 script · 0 deps“We fix docs the same day now.”★★★★★“Readers point right at the gap.”say.so“URLs on every note.”anchored per page“Less support, better docs.”1 script · 0 deps
Built for docs

Less guessing. Better docs.

Anchor a feedback link to any page so readers flag gaps exactly where they hit them.

Anchored to any page

Use data-sayso on a ‘Feedback’ link in your docs so the panel opens right where the reader is stuck.

Every note has context

Each submission carries the page URL, so you know precisely which doc to fix.

Spot the weak pages

Tag by section and see which guides generate the most confusion.

Three steps, that’s it

From copy-paste to clarity.

Need a hand installing? Ask the team
01

Embed

Create a project, copy the snippet, drop it before </body>. You're live in under a minute.

02

Collect

Visitors tap the launcher, pick a type, and say their piece. It's that low-friction — so they actually do.

03

Triage

Read, tag, and resolve from your dashboard. Turn scattered comments into a ranked to-do list.

// drop this before </body>
<script src="https://trysay.so/w.js" data-sayso="PROJECT_ID" defer></script>

Launch it your way

One snippet, three ways to open it. Use whichever fits — or mix them.

Default

Floating button

A tidy launcher sits in the bottom-right corner. Works out of the box — nothing to wire up.

<script src=".../w.js" data-sayso="PROJECT_ID" defer></script>
Anchored

Your own button

Add data-sayso to any link or button and the panel opens right next to it.

<button data-sayso>Feedback</button>
Headless

No floating button

Hide the default launcher and open only from your own triggers.

<script … data-sayso-launcher="false">
Honest pricing

Start free. Upgrade when it clicks.

No seats, no metered surprises. One flat plan when you outgrow free.

Free

For your first project.

$0

  • 1 project
  • 50 lifetime submissions
  • 3 color tags
  • Email notifications
Get started free
Most popular

Pro

For when one project isn’t enough.

$100 /year

$8/mo billed yearly · save 58%

  • Unlimited projects
  • Unlimited submissions
  • Unlimited tags
  • Identify your users
  • Email notifications
Start with Pro

Enterprise

Custom

For teams that need more than the basics.

WhitelabelingService-level agreementsLive chat support
Talk to us
Good questions

Things people ask.

Can I put it on every page?

Yes. Use the floating launcher site-wide, or anchor a ‘Feedback’ link per page with data-sayso so it opens inline next to it.

Do you capture which page the feedback is about?

Always. Every submission records the page URL automatically, so docs feedback is never ambiguous.

How long does install really take?

One line of HTML. Create a project, copy the <script> tag, paste it before your closing body tag. The widget renders in a Shadow DOM so it never collides with your styles.

Will it slow my site down?

No. w.js is a tiny vanilla script with zero dependencies, served with long cache headers. It loads after your page is interactive and stays out of the way.

Hear the confusion.
Close the gap.

One link per page away from docs that fix themselves.