Embed a Feedback Widget with Plain JavaScript (No Framework Needed)
July 27, 2026
If your site isn't running React, Next.js, or any other framework, you don't need a different widget — you need the same one, dropped into plain HTML. This is the entire integration.
The script tag
Paste this before the closing </body> tag on any page:
<script
src="https://saysift.com/widget/feedback-widget.js"
data-project-key="YOUR_PUBLIC_KEY"
data-locale="auto"
></script>
That's it — no bundler, no npm install, no build step. The script renders a compact feedback tab fixed to the edge of the screen and works identically whether the rest of the page is static HTML, a server-rendered template, or a jQuery-era site you're maintaining out of necessity.
Using your own button instead of the edge tab
Add data-launcher="inline" and any element with data-saysift-open will open the widget on click:
<script
src="https://saysift.com/widget/feedback-widget.js"
data-project-key="YOUR_PUBLIC_KEY"
data-launcher="inline"
></script>
<button type="button" data-saysift-open>Send feedback</button>
No JavaScript to write yourself — the attribute does the wiring.
Configuration without a framework
Everything is a data-* attribute on the script tag: data-position (which screen edge), data-saysift-theme (light/dark/auto), data-branding (hide the "Powered by SaySift" mark), and more. There's no separate config file or API call needed for basic setup — the attributes are the whole configuration surface.
Listening for submissions
If you want to fire your own analytics event when someone submits feedback, listen for the saysift:submitted event on document:
<script>
document.addEventListener("saysift:submitted", (event) => {
console.log(event.detail); // { instanceId, projectKey, id }
});
</script>
Full configuration reference and the JavaScript API are documented at the widget docs.
For the same integration in a React app, see React Feedback Widget.
Start for free — no credit card required.