Put a feedback button right in your beta and collect bugs and ideas while testers are in the flow. Call identify() and every note carries who sent it — no chasing required.
Know who said it · live in 60 seconds
Got stuck on the connect-account step.
Keyboard shortcuts would be amazing.
Way faster than the tool we use now.
This one’s really live.
Give it a tap — leave beta feedback and watch it send.
Stop herding feedback across email, Slack, and forms. Collect it where testing happens, attached to the person who sent it.
Testers report without leaving your app — one tap, the moment they hit something, so nothing's forgotten by the time they'd have emailed you.
Call SaySo.identify() and each submission carries the tester's id and email. Follow up, thank them, close the loop.
Tag by build or feature and work down a clean list. See what every cohort keeps flagging.
Create a project, copy the snippet, drop it before </body>. You're live in under a minute.
Visitors tap the launcher, pick a type, and say their piece. It's that low-friction — so they actually do.
Read, tag, and resolve from your dashboard. Turn scattered comments into a ranked to-do list.
One snippet, three ways to open it. Use whichever fits — or mix them.
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>Add data-sayso to any link or button and the panel opens right next to it.
<button data-sayso>Feedback</button>Hide the default launcher and open only from your own triggers.
<script … data-sayso-launcher="false">No seats, no metered surprises. One flat plan when you outgrow free.
For your first project.
$0
For when one project isn’t enough.
$100 /year
$8/mo billed yearly · save 58%
For teams that need more than the basics.
Yes. Call SaySo.identify({ id, email }) for signed-in testers and every submission carries that context automatically.
One line of HTML. Create a project, copy the <script> tag, and paste it before your closing body tag. The widget renders in a Shadow DOM so it never collides with your styles.
Same widget, different focus: this is about running a beta — collecting and attributing feedback per testing round. The startups page is about your overall product loop.
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.
Collect identified, in-app feedback from your testers in one script.