The script tag works on any website — no build step, no framework. It loads conclude-widget.js, which renders a floating button. When clicked, the button opens a feedback panel inside an iframe overlay.
Install
Add the script and an init() call before </body>:
<script src="https://www.conclude.fyi/conclude-widget.js"></script>
<script>
Conclude.init({
apiKey: "pk_live_YOUR_BOARD_KEY",
// Optional overrides (dashboard config is used by default):
// position: "bottom-right",
// label: "Feedback",
// accentColor: "#8083ff",
// theme: "dark",
submitter: {
externalId: "user-123",
name: "Jane Doe",
email: "jane@acme.com",
companies: [
{
id: "co_acme",
name: "Acme Inc",
monthlySpend: 5000,
created: "2025-01-15T00:00:00Z"
}
]
}
});
</script>
The widget fetches its config (theme, colors, modes, label, position) from your dashboard automatically. Anything you pass to init() overrides dashboard config for that session.
What the script gives you
- A floating feedback button.
- An iframe overlay that opens when the button is clicked.
- Screenshot mode using the browser's screen-share API (one prompt per submission).
- Recording mode (Pro+) using
getDisplayMedia+getUserMedia, composited into a single WebM. postMessagecommunication between the script and the iframe, origin-validated.
Programmatic API
Once initialised, window.Conclude exposes:
// Open the feedback panel
Conclude.open();
// Close it
Conclude.close();
// Submit feedback programmatically
Conclude.submit({ title: "Bug", body: "Save fails on long inputs" });
// Re-identify the user (e.g., after login)
Conclude.identify({ externalId: "user-123", email: "...", companies: [...] });
// Fire a moment event
Conclude.event("report_exported");
Bundle size
The script is roughly 19 KB gzipped. It loads asynchronously — async is built in.
Privacy and masking
Mask or hide elements with data-conclude-mask and data-conclude-hide. See Privacy and masking.
CSP
If your site sends a CSP header, you'll need:
connect-src 'self' https://www.conclude.fyiscript-src 'self' https://www.conclude.fyiframe-src 'self' https://www.conclude.fyiimg-src 'self' https://www.conclude.fyi blob: data:media-src 'self' https://www.conclude.fyi blob:(for recording)
When to use this vs. the React SDK
| Script tag | React SDK | |
|---|---|---|
| Setup | One line | npm install + Provider |
| Renders in | iframe overlay | Shadow DOM in your tree |
| Screenshot prompt | Yes (one per submit) | No |
| Bundle | 19 KB | npm peer dep |
| Best for | Marketing sites, non-React apps | React / Next.js apps |
If you have a React app, prefer the React SDK.