Server side tracking [deprecated] edit

Download PDF

On this page you will find how to collect page views server side.

We recommend using page view events to collect page views server side.

When you send data from your server to Simple Analytics you need to provide a few fields:

Field Type Example Required Explanation
url string yes The current URL of the page
ua string Mozilla/5.0 … sometimes We use this if there is no User Agent present in the headers
width number 1440 no The viewport width of the device (not possible via server)
unique boolean true no This tells us if this visit is unique. Don’t send this field if you don’t detect unique page views
timezone string Europe/Amsterdam no The time zone of the current user so we can detect the country
referrer string no The referrer of the current page (if any)
urlReferrer string blog no The value of ?ref=... in the URL (more info)

If we find a User Agent in the headers, we will use that.

Please strip all sensitive data from your URLs. We do this at our end as well, but it’s better to have this done on your server.

Our API is located at

The request should be a POST with JSON like this:

  "url": "",
  "ua": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:70.0) Gecko/20100101 Firefox/70.0",
  "width": 1440,
  "unique": true,
  "timezone": "Europe/Amsterdam"
Send request in Node.js
const https = require("https");

const data = JSON.stringify({
  url: "",
  ua: "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:70.0) Gecko/20100101 Firefox/70.0",
  width: 1440,
  unique: true,
  timezone: "Europe/Amsterdam",

const options = {
  hostname: "",
  path: "/post",
  method: "POST",
  headers: {
    "Content-Type": "application/json",
    "Content-Length": data.length,

const req = https
  .request(options, (res) => {
    let data = "";

    console.log("Status Code:", res.statusCode);

    res.on("data", (chunk) => {
      data += chunk;

    res.on("end", () => {
      console.log("Body: ", JSON.parse(data));
  .on("error", (err) => {
    console.log("Error: ", err.message);


The response for this request will look like this:

  "success": true,
  "duration_ms": 1,
  "message": "Thank you",
  "location": "Amsterdam, The Netherlands"

Let us know if we can help you with anything!