Web Widgets
Troubleshooting
Symptom, cause and fix for the OnePath widgets, starting with the ones that come up most: the button says OnePath is not active, or does nothing.
Before anything else, open dev tools, reload the page, and look at two things:
Network → filter "onepath" → sdk.onepath.ai/v1/sessions → status 200 or 403?
Console → window.onepath.config → an object, or undefined?
Symptom → cause → fix
| Symptom | Likely cause | Fix |
|---|---|---|
Clicking the button shows "Onepath is not active for this website. Please contact the website owner.", sessions request is 403 | The page's domain is not on the account's Allowed websites list | Add the domain (root domain covers subdomains) under Account settings → Lead Capture → Channels → Web Widgets card → Allowed websites. Channels |
| A widget that was open shows the same message | Web Widgets was turned off, or the domain was removed, after the page loaded | Turn Web Widgets back on, or add the domain again, then reload the page |
Button does nothing, sessions is 200 | The Web Widgets toggle is off | Turn it on under Channels → Web Widgets card. Channels |
Button does nothing, no onepath requests at all | The loader tag is missing, or a speed/delay-JS plugin held it back | Confirm the tag is in the head; safelist cdn.onepath.ai in the plugin (details) |
Button does nothing, sessions is 200 but no cdn.onepath.ai/modules/… scripts load | A speed plugin is rewriting the scripts the loader injects | Safelist the whole cdn.onepath.ai domain, not just the loader tag |
Button does nothing, loader tag has integrity="sha384-…" | The file changed since the hash was computed, so the browser refused to run it | Remove the integrity attribute. Do not pin the loader |
Two loader.js tags in the page source | The theme and a plugin, or the theme and Tag Manager, both add it | Keep exactly one |
| Scheduler opens, chat button does nothing (or the reverse) | That widget's channel is disabled on the account | The Web Widgets toggle enables both together; check with the account owner |
| Wrong colors | Channel colors override account colors | Set Channels → Web Scheduler / Web Chat brand and text color, or clear them to fall back to the account colors |
| Wrong or missing logo | The logo comes from Business Info | Upload it there (Business Info). If an older logo was attached to the widget itself, it still wins; ask OnePath to clear it. The chat header never shows a logo |
| Typed text is invisible, or the widget renders tiny | Your site's CSS set a global text color or a 10 px root font size | Current builds set their own text color and pixel sizes; make sure nothing on your page overrides #onepath-web-scheduler-container or #onepath-web-chat-container |
| Pre-selected service is ignored | serviceable_type / service_type do not match the account's Services exactly | Copy the strings from app.onepath.ai/settings/account/service_details. Matching is exact |
| Pre-filled name is ignored | The phone number belongs to an existing customer; the record on file wins | Expected. Only new visitors take the name you pass |
| "Outside our service area" banner | The zip code is not in Service Areas | Add it under Service Areas |
| "This service is handled by our office" | The service's Desired Outcome is Escalate | Expected: the lead goes to your team instead of the calendar. Change it under Services |
| No dates available | Availability comes from your field service software and its lead time; nothing is open in the visible range | Check schedules and lead time there, and Business Hours |
| "Your session timed out, so we started fresh." | Three minutes without activity past step 1 | Expected. Nothing was booked; the visitor starts over |
| Events never fire | The visitor never reached the address step, or your listener was attached after the event fired | Booking events need a captured service address. Attach listeners early, in the head after the loader |
| Works in production, not on staging | The staging domain is not on the list | Add it. A different host, such as acme.webflow.io, needs its own entry |
Works with the button, onepath:webscheduler:open from a form does nothing | The event was dispatched before loader.js ran, often because the loader is injected by Tag Manager | Move the loader to a direct head tag ahead of the form script (why) |
"Onepath is not active for this website"
The visitor sees this when the button is clicked on a page whose domain the account does not list. The v1/sessions request answers 403, and no widget loads on that page. Add the domain to Allowed websites. This is the cause nine times out of ten on a new site, and on a staging copy of a live one.
The button does nothing
Work down this list; stop at the first thing that is wrong.
- Web Widgets is off.
v1/sessionsanswers 200, butwindow.onepath.config.channelsshows both widgets disabled. Turn the Web Widgets toggle on. - Speed plugin. NitroPack, WP Rocket, LiteSpeed Cache, Perfmatters, Flying Scripts, Cloudflare Rocket Loader and similar tools delay or rewrite injected scripts. The loader retries for a while, then gives up. Safelist
cdn.onepath.ai. - Two loader tags. Remove one.
integrityattribute. Remove it.
Colors and logo
The scheduler and chat take their colors from Channels → Web Scheduler and Channels → Web Chat. When those are blank, the account's brand color and text color apply. The logo comes from Business Info. Styles live inside the widget; there is no way to restyle it from your site's CSS, and no attribute on the tag changes it.
Events not firing
appointment_createdandtask_createdrequire a service address. A visitor who closes the modal on step 1 fires nothing.widget-readyfires after the scheduler is first opened, not on page load, and never for chat. Do not wait for it before showing buttons.- Attach listeners before the event can fire. A listener added inside a lazily loaded component may miss a fast booking.
- Check the console: an
openevent sent while the scheduler is disabled logs a warning and is dropped.
Still stuck?
Reach out in your OnePath Slack channel or email your account manager. Include the page URL, the status of the v1/sessions request from the Network tab, and anything printed in the Console so we can help fast.