Feedback widget

Feedback widget for SaaS: add it with one JavaScript snippet

Users post requests and vote on them without leaving your app, and a What's New tab shows what you shipped. Two script tags, no build step, under 20KB gzipped.

The ShipLog widget open on a page: a feedback list with vote counts and statuses, a form to submit new feedback, and a What's New tab

What the widget does

Install it

Plain HTML

Paste both tags before </body> on every page, and replace yourapp with the project slug from your Settings page.

<script src="https://app.shiplog.ca/widget/shiplog-widget.js"></script>
<script>ShipLog.init({ projectSlug: 'yourapp' })</script>

Next.js (App Router)

Load the script with next/script and call init once it has loaded. onLoad needs a client component.

// components/shiplog-widget.tsx
"use client";

import Script from "next/script";

export function ShipLogWidget() {
  return (
    <Script
      src="https://app.shiplog.ca/widget/shiplog-widget.js"
      strategy="afterInteractive"
      onLoad={() => (window as any).ShipLog.init({ projectSlug: "yourapp" })}
    />
  );
}

// app/layout.tsx: render <ShipLogWidget /> inside <body>

With Claude Code or Cursor

Paste this prompt into your coding agent and it will add the widget for you.

Add the ShipLog feedback widget to this app. Load
https://app.shiplog.ca/widget/shiplog-widget.js once on every page, and call
ShipLog.init({ projectSlug: "yourapp" }) only after that script has loaded:
a plain <script src> followed by an inline <script> in plain HTML, or
next/script with strategy="afterInteractive" and an onLoad handler in a
client component for Next.js. Do not add `defer` to a tag that an inline
init follows. There is no npm package; do not install one. Replace "yourapp"
with my project slug from ShipLog's Settings page.

Themes, display modes, callbacks and signed-in users are all in the widget reference , with a live demo you can try on the page.

Frequently asked questions

Does the widget work with React, Vue or Next.js?
Yes. It's one script tag and a ShipLog.init call, so it runs in any page that can load a script: plain HTML, React, Vue, Svelte, Rails or Phoenix templates. For Next.js, load it with next/script and call init from onLoad, as above. There is no npm package to install.
Will it clash with my CSS?
No. The widget renders inside a shadow DOM with its styles inlined, so your stylesheet can't reach in and its styles can't leak out.
How big is it?
Under 20KB gzipped, with no dependencies. It is plain JavaScript that also runs in older browsers.
Do I need an API key?
No. The widget only needs your project slug, which is public in the same way your board's URL is. API keys are for the REST API and MCP server.
Is the widget free?
Yes. It's on every plan, the free one included: one project with 10 feedback items and 10 changelog entries. Captain is $9/mo per project for unlimited entries and removing the ShipLog branding.
Can I change how it looks?
Yes: a light or dark colour theme, a popup or a slide-out panel, the corner it sits in, and a feedback-only mode without the What's New tab. Every option is on the widget reference page, with a live demo.

Get your snippet.

Free for one project with 10 feedback items and 10 changelog entries, no credit card. Captain is $9 USD/mo per project when you need more.