Verify your installation
After you add the snippet, confirm that Grona can find it and that it runs in a real browser. There are three ways to check. The dashboard and the API check whether the script is on one page; the browser check shows whether it loads and applies changes.
| Method | What it checks | Success looks like |
|---|---|---|
| Dashboard | Whether main.js for your workspace is on the page you enter |
“Verified Successfully!” |
| Browser | Whether both scripts load, and whether a variation applies | Both script requests succeed; ?v=grona-… in the address bar for visitors in a variation |
| Public API | Whether the script is on the page you send | "status": "present" |
Check from the dashboard
Section titled “Check from the dashboard”- In the Grona dashboard, select Verify script on your site’s row on the Campaigns page, or use the Verify Script step when you set a campaign live.
- Enter the page address and run the check.
- Read the result. A success shows “Verified Successfully!” and offers to activate the campaign. When the page loads but has no script, the check shows “Script not found on the website. Please ensure the script is installed.” When Grona cannot load the page at all, it shows “Verification failed:” followed by the error.
Grona loads the page in a headless desktop Chrome browser, waits for it to settle, and looks for a <script> whose src ends with /workspaces/<your workspace id>/main.js, first in <head> and then in <body>. A success marks every campaign in the workspace that uses the same page address as verified.
Check in your browser
Section titled “Check in your browser”- Open the page in a normal browser window and open the developer tools.
- In the Network tab, filter by
gronaand reload. You should seeantiflicker.jsandmain.jsfromcdn.grona.ai, each with status200(or304when the browser already has the current file). - If a campaign targets the page and you are in a variation, you should also see a request for a variation’s changes file (a
.jsonfile undercdn.grona.ai/workspaces/), and the address bar gains a?v=grona-parameter followed by 8 characters once the changes apply. Visitors in the control group see neither, because the control has no changes to download. - In the Elements tab, changed elements carry
data-grona-idattributes.
Automated browsers and audit tools such as Lighthouse, PageSpeed Insights and GTmetrix are treated as bots: the scripts load, but nothing is hidden and no variation applies. Check with a normal browser. To see a specific variation without waiting to be assigned to it, use a preview link; see Preview and QA a variation.
Check with the Public API
Section titled “Check with the Public API”POST /v1/websites/verify-script checks one page from your own systems and returns present or absent. See Verify installations for the request and response.
Statuses
Section titled “Statuses”The verify call returns present or absent. absent also covers a page Grona could not load. Campaigns returned by the Public API also carry a stored script status, which can take two more values.
| Campaign script status | Meaning |
|---|---|
present |
The script was found on the page. |
absent |
The script was not found, or Grona could not load the page at all. |
checking |
A check is running in the background. A campaign created through the Public API starts with this status. |
unknown |
No check has completed. |
See Verify installations for the request and response.
When a check reports “absent” but the script is there
Section titled “When a check reports “absent” but the script is there”The checks look for the script tag on one page as Grona’s servers see it. These setups produce a false “absent”:
- A suffix on the script URL. Optimisation plugins can add a version string such as
main.js?ver=6.4. The URL then no longer ends withmain.jsand the check fails. Exclude both Grona scripts from the plugin. - A consent tool holding the script back. Some consent tools rewrite scripts as
type="text/plain"and only restore them after the visitor accepts. The checker never accepts, so it never sees the script. See Consent and storage for Grona’s own consent modes, which do not need this. - Late injection. A tag manager or a “delay JavaScript” plugin can add the script after the checker has stopped looking.
- A page Grona cannot load. Pages behind a login, a geo wall or bot protection (such as a challenge page) read
absentin the API. The dashboard check shows “Verification failed” with the error, or “Script not found” when it reached a login or challenge page instead.