The widget is blank
- Confirm the form is published and the public Share link opens directly.
- Replace
FORM_IDandFORM_URL; do not leave the documentation placeholders in production. - For
embed.js, add<div id="app"></div>before the module script. - Define
window.onlyformbefore loadingembed.js. - Check the browser console for Content Security Policy or blocked-script errors.
The popup or slider button does nothing
- Confirm the button has
data-button="onlyform". - Confirm
data-embed-idexactly matcheswindow.onlyform.id. - Make sure the trigger button exists before
embed.jsruns. - Install only one
embed.jswidget on the page.
The iframe is too short
Cross-origin iframe content cannot resize the parent with CSS alone. Set an explicit height:The page scrolls twice
Increase the iframe height so most form content fits, or intentionally give the iframe a fixed height and let it scroll internally. For a full-viewport experience, use the full-page widget orheight: 100vh.
Content Security Policy
If the browser reports that it refused to load a frame or script, update the host site’s policy:frame-ancestors error comes from the embedded form response and cannot be fixed through the parent page’s frame-src directive.
Styles changed after adding embed.js
The widget library injects its supporting CSS into the host page. If that conflicts with an existing application stylesheet, use the iframe method, which isolates form and host-page styles.Hidden fields are empty
- Declare the hidden-field names on the form.
- Use the exact same names in URL query parameters.
- URL-encode dynamic values.
- Replace the
xxxxplaceholders copied from Share with real values.