Developers
Feedback widget
A drop-in feedback button for any website. One <script>tag, zero dependencies, ~5 kB. Submissions land in your Blicc inbox alongside every other channel — clustered, prioritised, and ready to act on.
Install
Paste this into your page's HTML, inside <head> or just before </body>. Replace the key with your project key from the Blicc dashboard.
<script
src="https://cdn.blicc.de/widget/v1.js"
data-project="bp_live_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
async
></script>That's it — a floating Feedback button appears in the corner. The script loads asynchronously and never blocks your page.
React? A dedicated @blicc/widgetpackage is coming soon. Until then, the script tag above works in any React app — add it to your root layout (or index.html).
Configuration
Customise the button with data-* attributes on the script tag:
| Attribute | Default | Description |
|---|---|---|
| data-projectrequired | — | Your bp_live_ / bp_test_ project key from the dashboard. Without it the widget does nothing. |
| data-color | #1f6feb | Primary button + submit colour. Hover/focus/disabled shades are derived automatically. |
| data-radius | 12px | Corner radius of the button and modal (any CSS length, e.g. 16px). |
| data-position | bottom-right | One of: bottom-right · bottom-left · top-right · top-left. |
| data-label | Feedback | The text on the floating button. |
These five attributes are the complete configuration surface — the widget styles itself entirely from them; there are no other options to set in the snippet.
Install with an AI coding tool
Using Cursor, Lovable, v0, or Claude Code? Paste this prompt — it gives the agent the exact snippet and parameters, then points it back here:
Add the Blicc feedback widget to this project. Paste this script tag into the main HTML layout (inside <head>, or just before </body>):
<script src="https://cdn.blicc.de/widget/v1.js" data-project="bp_live_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" async></script>
Replace the data-project value with the project key from the Blicc dashboard. Optional attributes: data-color (button colour), data-radius (corner radius), data-position (bottom-right | bottom-left | top-right | top-left), data-label (button text). The widget is documented at https://blicc.de/docs/widget — read it before installing.Privacy & GDPR
The widget is anonymous by default and write-only— it only submits feedback; it can never read data back from Blicc. With each submission it sends:
- A one-time anonymous ID stored in the browser's localStorage, scoped to your project (a first-party cookie equivalent — not cross-site tracking).
- The page URL, path, and title; the viewport size; the browser user-agent (truncated); and the referrer.
- Optionally, the email the visitor chooses to enter.
The visitor's IP address is used only for rate-limiting and is never stored in plain text. All submitted text is run through PII scrubbing at ingestion before it is shown to anyone in your inbox.
Lawful basis is legitimate interest: the widget shows a short privacy notice with each submission. As the site owner you are the data controller; your Data Processing Agreement with Blicc covers the widget, and you should reference the data above in your own privacy policy. Blicc's handling of this data is described in our privacy policy.
Note: the in-widget privacy link currently points at Blicc's default policy. Per-project privacy-policy URLs and consent mode are configured in the dashboard and apply to your records; surfacing a per-project URL inside the widget itself is on the roadmap.
Troubleshooting
- The button doesn't appear
- Check that
data-projectis set to a valid key — the widget no-ops without one. Open the browser console; an unrecognised key logs a warning. - Submissions are blocked from my domain (403)
- If you set an allowed-origins list on the project, only those origins may submit; everything else is rejected with
403. Leave the list empty to allow all origins. - “Too many submissions” (429)
- The endpoint is rate-limited per key and per IP. The widget shows a gentle “try again in a moment” and respects the
Retry-Afterheader. Normal traffic never hits these limits. - I rotated my project key
- The old key stops working immediately. Update the
data-projectvalue in your script tag. - Content-Security-Policy
- The widget is closure-wrapped and styles itself inside a shadow DOM (no globals, no CSS bleed). If your site sets a strict CSP, allow
script-src https://cdn.blicc.deandconnect-src https://app.blicc.de.
Versioning
/widget/v1.jsis the stable v1 channel — it always serves the latest backwards-compatible v1 build, so you get fixes automatically. If you need byte-for-byte stability, pin a specific build with /widget/v1.0.0.js.
Changelog
- v1.0 — initial release: floating button, 1-step feedback modal, anonymous-by-default capture, full keyboard + screen-reader support.