Skip to main content

The widget is blank

  • Confirm the form is published and the public Share link opens directly.
  • Replace FORM_ID and FORM_URL; do not leave the documentation placeholders in production.
  • For embed.js, add <div id="app"></div> before the module script.
  • Define window.onlyform before loading embed.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-id exactly matches window.onlyform.id.
  • Make sure the trigger button exists before embed.js runs.
  • Install only one embed.js widget 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 or height: 100vh.

Content Security Policy

If the browser reports that it refused to load a frame or script, update the host site’s policy:
Use only the hostnames that apply to the site. A 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 xxxx placeholders copied from Share with real values.
See Variables and hidden fields for naming and creation rules.