Check the integration
Test your website with a test user. Open DevTools → Network, enable log preservation, and reload the page. Do not paste real email addresses, IDs, passwords, or tokens into the Console.
| Symptom | What to check and do |
|---|---|
window.FlowtomateWidget is missing | Find widget.js in Network, check CSP and the number of tags: document.querySelectorAll('script[data-flowtomate-key]').length should be 1. For async, GTM, and React, wait for the script to load. |
| The widget is present, but there is no content | Run await window.FlowtomateWidget.ready(), then await window.FlowtomateWidget.refresh(), and inspect the new request in Network. ready() alone does not confirm that content was received successfully. Check the key, published content, and network errors. |
| CORS error or rejection because of the website address | Compare location.origin with “Allowed website addresses”. A live website requires an exact HTTPS origin, without a path or wildcard. |
identify is rejected or the profile is anonymous | After consent, pass a nonempty string ID and string fields only. Check “Collect visitor data”, the consent mode, and the selected project. Then find the ID in “Audience”. |
track did not produce an event | Check the name, properties, consent, and network errors. track returns nothing; find the record in “Events” after the batch is sent. |
| Manually launched content did not open | Wait for ready() and check the published content's ID. For a popup, enable “From site code”. Interpret a popup's false result or a tour's status using the manual launch rules. |
| A form response exists, but is missing from the external system | In Network, open the response to the test form submission: on the first attempt, the externalDelivery field may be delivered, failed, or disabled. Check HTTPS and your receiver's log. There is no persistent delivery log or automatic retry. |
The installation guide includes the installation code and CSP. Use try/catch to handle errors from methods that return a Promise; do not add timers with arbitrary delays.