The installation badge
Every website in your dashboard shows a real-time installation status badge. It updates automatically β no refresh needed.| Badge | Meaning |
|---|---|
| π‘ Script not yet detected | The script has never pinged from this website |
| π’ Script active Β· Last seen 3m ago | Script is installed and running correctly |
| βͺ Script detected (inactive) | Script was seen more than 24h ago β check if itβs still on the page |
Manual verification
If the badge stays amber, verify the script is correctly installed:1. View page source
In any browser, pressCtrl+U (Windows) or Cmd+U (Mac) to view the raw HTML source. Search for openhermit β you should see:
- The script is only on the homepage, not all pages β add it to your layout/template
- The
data-api-keyis empty or wrong β copy it again from the dashboard - The script URL is wrong β it must be
https://openhermit.com/script.js
2. Check the browser console
Open DevTools (F12) β Console. The script logs a warning if something is wrong:script.js).
3. Check network requests
In DevTools β Network tab, filter byopenhermit. You should see:
- A request to
script.js(status 200) - A POST to
/api/ping(status 200) - A POST to
/api/actions/sync(status 200)
Forms not detected?
If the script is confirmed active but no actions appear in your dashboard: The form might be on a different page. The script only detects forms on the current page. Make sure you visit the specific page containing the form β not just the homepage. The form might be loaded dynamically. React, Vue, and Angular apps often render forms after the initial page load. The script has a MutationObserver that handles this, but there can be a short delay. Wait 2β3 seconds after the form appears before checking. The form might not look like a form. If a βformβ is built entirely withdiv and onClick handlers (not real <form> and <input> tags), the script canβt detect it. Consider adding data-mcp-action attributes manually.
Third-party widgets need special handling. Calendly, Typeform, HubSpot etc. are detected by checking for their JavaScript objects or DOM elements. If a widget is embedded via a plain iframe with no identifying attributes, it wonβt be detected.

