Add one script in Site Settings, Custom Code, End of body tag.
Framer publishes static sites and gives you a custom-code slot for the end of the body tag. The vanilla SDK goes there and runs on every page of the published site.
<script src='https://unpkg.com/@usero/sdk'></script>
<script>
Usero.initUseroFeedbackWidget({ clientId: 'YOUR_CLIENT_ID' })
</script>Replace YOUR_CLIENT_ID with the id from your Usero dashboard.
Built for Framer
Site Settings > Custom Code has a dedicated "End of <body> tag" field. The script runs after the page renders, so it never blocks Framer paint.
You do not have to write a Framer code component. The custom-code slot is enough, and it is simpler than wiring an override.
Custom code runs on the live published Framer site. It does not run inside the canvas editor, so test against the published URL.
The widget renders into its own DOM root with scoped styles, so your Framer design tokens and breakpoints do not affect it.
Featurebase loads a script and waits for a target element. The vanilla SDK renders its own trigger from the init call, no element to mount onto.
FAQ
Site Settings > Custom Code > End of <body> tag. That slot injects the script after the page content, which is the right place for the widget init.
No. Custom code runs on the published site, not in the canvas. Open the live published URL to confirm the widget loaded.
No. The plain custom-code field is enough. A code component would be more work for the same result.
No. The script loads after the body and the panel only renders on click, so Framer first paint is unaffected.
Free tier. No credit card. Two-minute install. Cancel by deleting two lines of code.
Install guides