Install the widget
ShipPulse is a single JavaScript file. Drop it on any page of your site — marketing pages, in-app, docs — and the floating feedback button appears in the bottom-right corner. Submissions land in your private inbox; you decide what becomes public.
The snippet
Add this to the <head> (or end of <body>) of every page where you want the widget to appear:
<script
src="https://shippulse.app/widget/loader.js"
data-project-slug="your-project-slug"
data-widget-type="feedback/fab"
data-theme-mode="auto"
async
></script>That is it. The loader is async, never blocks render, and ships under 18 KB gzipped. No bundler, no build step, no React peer-dependency drama.
What the attributes do
data-project-slug— required. The slug from your dashboard at/projects. Wrong slug = widget renders but submissions are dropped.data-widget-type— pick one:feedback/fab(floating button),roadmap/inline(renders a public roadmap),changelog/inline(renders the changelog), ortestimonials/wall(renders a testimonials grid). See widgets for variants.data-theme-mode—light,dark, orauto(matches the user's OS preference). Defaults toauto.
Optional attributes
data-user-emailanddata-user-name— pre-fill the submitter identity when the user is already authenticated on your site. Skips the email-capture step.data-position—bottom-right(default),bottom-left, ortop-right.data-z-index— override the FAB's stacking context if your site has high z-indexed overlays.
Where it lives
The loader fetches its config from https://shippulse.app/api/widget/<project_slug>/config.json and caches it for 60 seconds. Brand color, copy strings and theme overrides set in your dashboard appear on every embed within the next minute — no redeploy needed.
Verifying the install
Open your page, look for the floating button. If it does not appear, open DevTools → Network → filter loader.js. A 200 with application/javascript means the script loaded. A 404 means the slug is wrong. A CORS error means the page is hosted on a domain that does not match your project's allowlist — add it under Settings → Domains.
Next
- Pick a widget variant: widgets.
- Turn on the proof loop — the wedge that auto-collects testimonials from voters when you ship.
- Plug it into a custom domain.