Antlytics logoAntlytics

Add Antlytics to Hexo

Prerequisites

  • An Antlytics account (sign up free)
  • Your tracking ID from Settings → Tracking Snippet in your Antlytics dashboard

Install the snippet

Locate your active theme's head partial. For the default Landscape theme this is themes/landscape/layout/_partial/head.ejs. Other themes use a similar path.

Paste the snippet just before the closing </head> tag in that file:

<script>
(function(){
  var t="YOUR-SITE-ID",
      u="https://www.antlytics.com/api/ingest/pageview",
      k="ant_sid";
  function sid(){
    try{var s=sessionStorage.getItem(k);if(s)return s;
      s=crypto.randomUUID();sessionStorage.setItem(k,s);return s;}
    catch(e){return crypto.randomUUID();}
  }
  function utm(){
    try{var p=new URLSearchParams(location.search),o={};
      ["utm_source","utm_medium","utm_campaign","utm_term","utm_content"]
        .forEach(function(k){var v=p.get(k);if(v)o[k]=v;});
      return o;}
    catch(e){return {};}
  }
  function send(){
    fetch(u,{method:"POST",headers:{"Content-Type":"application/json"},
      keepalive:true,
      body:JSON.stringify(Object.assign(
        {tracking_id:t,pathname:location.pathname,
         referrer:document.referrer||undefined,session_id:sid()},
        utm()))});
  }
  send();
  window.addEventListener("popstate",send);
})();
</script>

Note: Replace YOUR-SITE-ID with the tracking ID from your Antlytics dashboard.

Using a custom theme or injecting without editing theme files

If you prefer not to modify theme files directly, Hexo supports injectors via scripts/inject.js in your project root:

// scripts/inject.js
hexo.extend.injector.register("head_end", function () {
  return `<script>\n(function(){\n  var t="YOUR-SITE-ID",\n      u="https://www.antlytics.com/api/ingest/pageview",\n      k="ant_sid";\n  function sid(){\n    try{var s=sessionStorage.getItem(k);if(s)return s;\n      s=crypto.randomUUID();sessionStorage.setItem(k,s);return s;}\n    catch(e){return crypto.randomUUID();}\n  }\n  function utm(){\n    try{var p=new URLSearchParams(location.search),o={};\n      ["utm_source","utm_medium","utm_campaign","utm_term","utm_content"]\n        .forEach(function(k){var v=p.get(k);if(v)o[k]=v;});\n      return o;}\n    catch(e){return {};}\n  }\n  function send(){\n    fetch(u,{method:"POST",headers:{"Content-Type":"application/json"},\n      keepalive:true,\n      body:JSON.stringify(Object.assign(\n        {tracking_id:t,pathname:location.pathname,\n         referrer:document.referrer||undefined,session_id:sid()},\n        utm()))});\n  }\n  send();\n  window.addEventListener("popstate",send);\n})();\n</script>`;
});

This approach survives theme updates.

Verify installation

  1. Visit your site in a browser.
  2. Open your Antlytics dashboard → Overview.
  3. Your visit should appear within a few seconds.

If data does not appear after a few minutes, check the troubleshooting guide.

Optional: First-party proxy

To avoid ad blockers, set up a first-party proxy on your own domain.

Need help?

Email support@antlytics.com with your site ID and page URL.

Something missing? Get in touch and we will update these docs.