The widget is one hosted script. Drop it into your app and it loads, renders the duck button, and handles the rest — nothing to bundle, install from npm, or add to a build step.Documentation Index
Fetch the complete documentation index at: https://docs.tryproduck.com/llms.txt
Use this file to discover all available pages before exploring further.
Add the script tag
Paste this before the closing</body> tag, on every page where you want feedback (most
teams add it everywhere):
| Attribute | Required | Description |
|---|---|---|
src | yes | The hosted widget: https://tryproduck.com/sdk/v1.js. Load it from this URL so you always get updates. |
data-project | yes | Your project’s API key from the dashboard. Starts with pk_live_. |
defer | recommended | Loads the widget without blocking your page render. |
Framework snippets
- Next.js
- React (Vite/CRA)
- Plain HTML
- Google Tag Manager
Use the
Script component in your root layout so the widget loads on every route:app/layout.tsx
Opening the widget
Once the script is on the page, your users get two ways in:- The duck button — floating in the bottom-right corner.
- Keyboard shortcut — ⌘ + Shift + Z (Mac) or Ctrl + Shift + Z (Windows/Linux).
The widget renders inside an isolated shadow root, so its styles never leak into your app
and your CSS never touches the widget. No class-name collisions to worry about.