New: identify your users & unlimited tags on ProGet started →
Feedback widget for online courses

Find the lesson that loses students.

Add a feedback button to every lesson and community page. See where learners get stuck, what confuses them, and what they want you to teach next.

Per-lesson feedback · live in 60 seconds

learn.yourcourse.com

Inbox

AllIdeasIssues
StuckModule 32m

Lost me at the part about migrations.

RequestRoadmap2m

Could you add a lesson on deployment?

NoteWin2m

Finally understood closures — thank you!

Live widget

This one’s really live.

Give it a tap — it's what your students would see on a lesson.

“Found my drop-off lesson.”★★★★★“Students tell me what's next.”say.so“Fixed module 3 overnight.”per-lesson feedback“More completions.”1 script · 0 deps“Found my drop-off lesson.”★★★★★“Students tell me what's next.”say.so“Fixed module 3 overnight.”per-lesson feedback“More completions.”1 script · 0 deps
Built for learning

Less drop-off. Better lessons.

Put feedback where the learning happens so you fix the exact spot that loses people.

Pinpoint the drop-off

Anchor feedback to each lesson and see which one quietly confuses everyone.

Build the next module

Collect ‘please cover X’ requests and let demand decide your roadmap.

Every note has context

Submissions carry the page URL, so you know exactly which lesson to revisit.

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 get feedback per lesson?

Yes. Anchor a feedback link to each lesson with data-sayso, and every note arrives tagged with that lesson's URL.

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.

Does it work with my course platform?

If your platform lets you add custom code or an embed, yes. It drops into most course and community builders with one snippet.

Hear where they're stuck.
Teach it better.

One button per lesson away from a course that keeps getting clearer.