Hive Check reference
Every check Hive Check runs, grouped by category, with its rule code, default severity and what it means.
Every finding in a Hive Check report has a rule code that never changes, such as CON_TRACKING_BEFORE_CONSENT. This page lists every check by category.
- Severity is the check's usual severity. A check can raise or lower it for a single finding, so the report can show a different severity.
- Fix says what the finding's button does. Hive Setup means Hive Setup can make the change; without Hive Setup in your plan, the button is How to fix. Open the setting opens the setting that fixes it. A dash means you fix it yourself, in your site's code or your tag manager container.
- Tag manager container and Crawl findings don't change the score. See how the score works.
Hive Setup fixes The cookie banner does not update consent (CON_CMP_NO_UPDATE) for OneTrust and Cookiebot banners. See Consent.
Tracking
| Code | Check | Severity | What it means | Fix |
|---|---|---|---|---|
MJA_NOT_LOADED | My Journey Analytics is not loaded | Critical | We did not find the My Journey Analytics snippet on these pages, so no visits or events are recorded from them. | Hive Setup |
MJA_LOADED_NOT_SENDING | My Journey Analytics loads but sends nothing | High | The snippet loaded, but no events left the page. Check that it is initialised with your project key and that nothing blocks the requests. | - |
MJA_WRONG_TOKEN | Events go to a different project | Critical | The snippet on this site uses a project key that does not belong to this project, so its events land somewhere else. | Hive Setup |
MJA_DOUBLE_INIT | My Journey Analytics starts twice | Medium | The snippet is initialised more than once on the same page. This can double count pageviews and events. | - |
MJA_NO_CUSTOM_DOMAIN | No custom tracking domain | Low | Events go to our shared domain. Ad blockers often block it. A tracking domain on your own website keeps more of your data. | Open the setting |
MJA_PROXY_NOT_USED | Your tracking domain is not used | Medium | You have a custom tracking domain, but the snippet on this site still sends events to the shared domain. | Hive Setup |
MJA_UI_HOST_MISSING | The toolbar address is not set | Low | The snippet sends events through a custom domain but does not say where the app lives, so the toolbar and some links may not open. | Hive Setup |
MJA_OLD_DEFAULTS | The snippet uses old default settings | Low | The snippet does not use the current recommended defaults, so some newer tracking improvements are off. | Hive Setup |
MJA_LOADER_WRONG_TRIGGER | The tracking tag fires too late | Medium | In your tag manager container, the My Journey Analytics tag does not fire on Initialization - All Pages. Early events and the first pageview can be missed. Needs a Google Tag Manager connection. | Hive Setup |
MJA_NO_FORWARDER | dataLayer events are not sent to My Journey Analytics | Medium | Your site pushes useful events to the dataLayer, but none of them reach My Journey Analytics. | Hive Setup |
MJA_EVENTS_NOT_ARRIVING | Events from this site are not arriving | High | We saw the site send events during the check, but this project received few or none from this site in the last 7 days. Checked only when the site is one of your authorized URLs. | - |
MJA_SDK_ERRORS | The tracking snippet shows errors | Medium | The browser console showed errors from the My Journey Analytics snippet on these pages. | - |
MJA_SDK_BLOCKED | Some tracking requests were blocked | Info | Some requests to the tracking domain failed or were blocked. Visitors with ad blockers can see the same thing. | - |
MJA_IDENTIFY_UNVERIFIED | We could not check how users are identified | Info | We only visit public pages, so we cannot see whether logged-in users are identified. Check this on a logged-in page yourself. | - |
MJA_PII_IN_EVENT_PROPS | Personal data is sent with events | High | Events from this site include values that look like email addresses, phone numbers or other personal data. | Open the setting |
Consent
| Code | Check | Severity | What it means | Fix |
|---|---|---|---|---|
CON_NO_CMP | No cookie banner found | Medium | We did not find a consent banner or consent platform, but the site sets tracking cookies or sends tracking requests. | - |
CON_TRACKING_BEFORE_CONSENT | Tracking starts before consent | Critical | Tracking or advertising requests were sent before the visitor made a choice in the cookie banner. | - |
CON_COOKIES_BEFORE_CONSENT | Cookies are set before consent | High | Tracking or advertising cookies were set before the visitor made a choice in the cookie banner. | - |
CON_REJECT_NOT_HONOURED | Reject does not stop tracking | Critical | After we rejected cookies in the banner, tracking or advertising requests and cookies continued. | - |
CON_NO_CONSENT_MODE | Google Consent Mode is not set up | Medium | Google tags load without a consent default, so they cannot adjust to the visitor's choice. | Hive Setup |
CON_DEFAULT_LATE | The consent default is set too late | High | The consent default is set after the first Google request, so that request ignores the visitor's choice. | Hive Setup |
CON_MODE_V2_MISSING | Consent Mode v2 signals are missing | High | The consent state does not include ad_user_data and ad_personalization. Google needs both for ads in the EEA and the UK. | Hive Setup |
CON_CMP_NO_UPDATE | The cookie banner does not update consent | High | The visitor's choice in the banner does not update the consent state, so tags keep their default behaviour. | Hive Setup |
CON_MJA_IGNORES_CONSENT | My Journey Analytics ignores the cookie banner | Medium | My Journey Analytics keeps capturing in the same way whatever the visitor chooses in the banner. | Hive Setup |
CON_PII_IN_URL | Personal data in page addresses | High | Page addresses sent to tags include values that look like email addresses, phone numbers or other personal data. | - |
CON_PII_IN_DATALAYER | Personal data in the dataLayer | High | dataLayer pushes include values that look like email addresses, phone numbers or other personal data, which any tag can read. | - |
Tags
| Code | Check | Severity | What it means | Fix |
|---|---|---|---|---|
TAG_DUPLICATE_ID | The same tag is installed twice | High | The same tag ID loads more than once on these pages. This usually doubles pageviews and conversions. | - |
TAG_DUPLICATE_CONTAINER | The tag manager container loads twice | Medium | The same tag manager container loads more than once on these pages, so every tag in it can fire twice. | - |
TAG_UA_DEPRECATED | Universal Analytics is still installed | Medium | Google stopped processing Universal Analytics data. The tag still loads and slows the page but records nothing. | - |
TAG_BROKEN | A tag fails to load or send | High | Requests from this tag failed or returned errors, so its data is missing. | - |
TAG_SLOW | A tag is slow | Low | This tag takes a long time to load or is large, which slows your pages. | - |
TAG_RENDER_BLOCKING | A tag blocks the page from showing | Low | This tag loads synchronously in the page head, so visitors wait for it before they see the page. | - |
TAG_GA4_NO_PAGEVIEW | Google Analytics 4 sends no page views | Medium | The Google Analytics 4 tag loads, but we did not see a page_view hit on these pages. | - |
TAG_PIXEL_DOUBLE_FIRE | An ad pixel fires twice | Medium | An advertising pixel sent the same event more than once on one page load. Ad platforms may count conversions twice. | - |
TAG_OUTSIDE_GTM | A tag is hardcoded in the page | Info | This tag is in the page code, not in your tag manager container, so it is harder to manage and to control with consent. | - |
TAG_GTM_NOSCRIPT_MISSING | The tag manager noscript part is missing | Low | The tag manager container loads, but the noscript iframe that Google recommends after the opening body tag is missing. | - |
TAG_UNKNOWN_THIRD_PARTY | Unknown third-party scripts | Info | These pages load scripts from other companies that we do not recognise. Check that you still need them. | - |
Data layer
| Code | Check | Severity | What it means | Fix |
|---|---|---|---|---|
DL_MISSING | No dataLayer | Info | These pages have no dataLayer, so tags can only use what they can read from the page. | - |
DL_REASSIGNED | The dataLayer is overwritten | Low | Page code replaces the dataLayer with a new array after the tag manager starts, so earlier pushes can be lost. | - |
DL_NAMING_INCONSISTENT | Event names use mixed styles | Low | dataLayer event names mix styles such as snake_case and camelCase, which makes reports harder to read. | - |
DL_KEY_EVENTS_MISSING | Key events are missing | Medium | The site looks like it sells products or collects leads, but we did not see events such as add_to_cart, purchase or generate_lead. | - |
DL_RESERVED_NAMES | Reserved event names are used | Low | Some dataLayer events use names that the tag manager or Google Analytics reserves, which can cause odd behaviour. | - |
DL_ECOMMERCE_NOT_CLEARED | Ecommerce data is not cleared | Low | Ecommerce pushes are not preceded by ecommerce: null, so values from an earlier event can leak into the next one. | - |
DL_LARGE_PUSH | Very large dataLayer pushes | Low | Some dataLayer pushes are very large, which slows the page and can be cut off by tags. | - |
Server-side tagging
| Code | Check | Severity | What it means | Fix |
|---|---|---|---|---|
SGTM_DETECTED | Server-side tagging is in use | Info | Some tags send data through a server-side tag manager container. | - |
SGTM_NOT_FIRST_PARTY | The server container is not on your domain | Low | Your server-side container runs on a domain that is not a subdomain of your website, so it loses most of its benefit. | - |
SGTM_ERRORS | The server container returns errors | High | Requests to your server-side container failed or returned errors, so the tags behind it get no data. | - |
SGTM_SLOW | The server container is slow | Low | Your server-side container takes a long time to answer. | - |
SGTM_MJA_TAG_MISSING | The server container does not send to My Journey Analytics | Medium | Your server-side container has no My Journey Analytics tag, so events that go through it do not reach this project. Needs a Google Tag Manager connection. | Hive Setup |
SGTM_NONE | No server-side tagging | Info | All tags send data straight from the browser. Server-side tagging can improve data quality and page speed. | Open the setting |
Tag manager container
| Code | Check | Severity | What it means | Fix |
|---|---|---|---|---|
GTM_UNPUBLISHED_CHANGES | Unpublished changes in the container | Medium | Your tag manager container has changes that are not published, so the live site does not have them yet. Needs a Google Tag Manager connection. | - |
GTM_PAUSED_TAGS | Paused tags in the container | Low | Some tags in your container are paused and never fire. Needs a Google Tag Manager connection. | - |
GTM_TAG_NO_TRIGGER | Tags with no trigger | Low | Some tags in your container have no firing trigger, so they never fire. Needs a Google Tag Manager connection. | - |
GTM_HTML_GTAG_DUPLICATE | A Google tag is installed twice in the container | Medium | A Custom HTML tag loads gtag.js for an ID that a Google tag in the same container already loads. Needs a Google Tag Manager connection. | - |
GTM_ES6_IN_HTML | Custom HTML that may fail to publish | Low | Some Custom HTML tags use modern JavaScript that the tag manager can reject when you publish. Needs a Google Tag Manager connection. | - |
GTM_WORKSPACE_LIMIT | No free workspace in the container | Low | The container has no free workspace, so Hive Setup used the Default Workspace. Needs a Google Tag Manager connection. | - |
Crawl
| Code | Check | Severity | What it means | Fix |
|---|---|---|---|---|
CRAWL_ROBOTS_DISALLOWED | Pages skipped because of robots.txt | Info | Your robots.txt asks crawlers not to visit these pages, so we skipped them. | - |
CRAWL_PAGE_FAILED | Pages that did not load | Info | These pages did not load in time or returned an error, so we could not check them. | - |
CRAWL_BOT_BLOCKED | The site blocked the check | Info | The site or its firewall refused our visit or showed a challenge page. Allow our checker to get complete results. | - |
CRAWL_NO_SITEMAP | No sitemap found | Info | We did not find a sitemap, so we checked the home page and the pages it links to. | - |
Can't find what you need? Contact support