Skip to content

Widget troubleshooting

The launcher does not appear

  1. Confirm Widget is on and saved. A new widget is off until an owner turns it on.
  2. Inspect the deployed page and confirm the complete generated snippet is present, including data-toado-key.
  3. Check whether the style is Hidden or Inline. Inline needs a <span data-toado-launcher></span> element somewhere on the page.
  4. Confirm Show on mobile is enabled at the current width.
  5. Check the console and Network panel for CSP, loader, or blocking errors.
  6. Check whether another fixed overlay covers the launcher, and try a higher Stacking priority.
  7. Confirm only one copy of the script is loaded. A second copy is ignored rather than rendering a second launcher.
  8. Rule out an unsupported browser. The loader needs fetch, promises, FormData, and shadow DOM, and exits silently without them.
  9. Disable content blockers for the test and retry.

The status is “On, not detected”

That is the company overview’s wording; the project’s own Widget pages say Not detected yet and On, not yet detected. All three mean the same thing: the project is enabled, but Toado has not recorded a load using the current key.

Open the deployed public URL, select Verify installation on the Install page, confirm the loader request succeeds, clear stale caches, and check the key was updated everywhere after a rotation, which resets install history. Privacy extensions and network rules can block the settings request that records the sighting.

The site is detected but reports are rejected

  • Compare the exact scheme, host, and port with the allowed origin. A wildcard entry matches one label only, so https://*.acme.com does not cover a.b.acme.com.
  • Approve staged origins and save. Staged entries do nothing until the save lands.
  • Confirm the widget is still on. A disabled widget refuses reports, and pages already open can keep showing a cached launcher for up to five minutes while nothing they send is accepted.
  • Check the captcha and the network requests for failures.
  • Check the workspace’s ticket allowance in Billing. Once a workspace cannot accept another ticket this month, reports are refused and the reporter is told bug reporting is temporarily unavailable; the owner is emailed about the pause.

A strict CSP blocks the widget

Copy the generated sources and merge them into the existing response header. Check script-src, connect-src, frame-src, img-src (including data:), and style-src. A missing style-src 'unsafe-inline' shows up as an unstyled widget and blank screenshots rather than a missing one. Test the effective header, not merely a repository file or meta tag, and clear caches.

The screenshot is blank or incomplete

The widget draws the page from the DOM, so cross-origin iframes, video, WebGL, and canvas render blank, and images render only when they are data: URIs. The image is the viewport only, capped at 1600px wide, and a very large or heavy page can stop being copied part-way. Isolate the element on a simpler route, check CSP errors, ask the reporter to describe the missing region, attach another image, or use the Chrome extension when a browser-level image matters.

The page changes after enabling Deep capture

Return to Standard and save immediately. Retest login, checkout, challenge, and API flows. Deep capture wraps network functions and can trigger bot-protection or anti-tampering systems.

The wrong project received the report

The destination comes from the project-specific key. Search layouts and tag-manager configuration for an old key and confirm the intended snippet is the only one loaded.

Reports do not include email or identity

Set Ask for the reporter’s email to Optional or Required, and confirm the reporter supplied it. A visitor signed in to your product is not automatically known to Toado: attaching identity needs window.Toado.identify(), called by your own code. When the email field is visible, whatever the reporter typed wins over the identified address, including a field they deliberately cleared. Any name or email on the ticket is shown with an unverified tag, because nothing confirms it.

The old widget stopped after rotation

This is expected: rotation invalidates the old key immediately, with no overlap window. Replace every old snippet, redeploy, and verify installation again. The install history resets with the key, so detection starts from nothing.

The hosted form needs both switches: Widget is on and Public link is on. With either off the link answers as though the key were unknown, so an unexpected “Unknown link” usually means the widget itself was turned off rather than the link being wrong. The hosted form always runs the captcha, even on a team-mode widget that skips it on the site.

Where to next