New: identify your users & unlimited tags on ProGet started →
Website bug reporting, simplified

Report a bug in one click.

Drop one script on your site and let anyone flag what's broken — no screenshot uploads, no ten-question forms. Every report arrives with the page URL, ready to triage.

No screenshots, no logins · live in 60 seconds

app.yoursite.com

Inbox

AllIdeasIssues
BugCheckout2m

Pay button does nothing on iOS Safari.

BugAuth2m

Reset-password email never arrives.

NoteMobile2m

Menu overlaps the logo on small screens.

Live widget

This one’s really live.

Give it a tap — report a (pretend) bug and watch it send.

“Bug reports without the friction.”★★★★★“One click, fully reproduced.”say.so“No more screenshot uploads.”page URL attached“Triage in minutes.”1 script · 0 deps“Bug reports without the friction.”★★★★★“One click, fully reproduced.”say.so“No more screenshot uploads.”page URL attached“Triage in minutes.”1 script · 0 deps
Built for fast triage

No screenshots. Just the bug.

The heavy bug tools make people upload screenshots and fill forms. Say So gets the report in one tap, with the context that matters.

One-click reports

Visitors tap, type what broke, and send. No account, no screenshot upload, no friction — so they actually report it.

Context attached

Every bug carries the page URL and browser, so you can reproduce it without playing twenty questions.

Triage in a calm inbox

Tag by area, mark resolved, and work down a ranked list. No new Jira project to stand up.

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.

Does it capture screenshots or console logs?

No — and that's the point. Say So keeps reporting to one tap so people actually do it. You get the message, page URL, and browser, not a heavy capture flow.

How do I add it?

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.

Where do bug reports go?

Into a calm inbox in your dashboard. Filter by type, tag by area, and resolve with a click. You also get an email the moment one lands.

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.

Make reporting a bug
a one-tap thing.

Drop in one script and let your users tell you what's broken.