how to get the Google analytics client ID

Solution 1:

Google does have some documentation on getting the client id.

Looks like this:

ga(function(tracker) {
  var clientId = tracker.get('clientId');
});

I've used this before, too:

ga.getAll()[0].get('clientId');

EDIT: If you have more than one tracker on the page, it may be probable that at index 0 there is not the one you want, so an alternative function should be the following:

function() {
  try {
    var trackers = ga.getAll();
    var i, len;
    for (i = 0, len = trackers.length; i < len; i += 1) {
      if (trackers[i].get('trackingId') === "ID-PROPERTY") {
        return trackers[i].get('clientId');
      }
    }
  } catch(e) {}  
  return 'false';
}

where ID-PROPERTY is the id of your Property (i.e. UA-XXXXX-XX).

Solution 2:

Although the author explicitly said he is using Javascript, others (like me) may be searching for a way to get this information from the server-side, like PHP.

For both: GA4 and UA, I found that you can easily check for the _ga cookie, which looks like:

_ga=GA1.3.475128143.1522318100

In the exemple above, the user id is "475128143.1522318100".

So, in PHP I can fetch it quickly as:

$gaUserId = preg_replace("/^.+\.(.+?\..+?)$/", "\\1", @$_COOKIE['_ga']);

You can also use Javascript to retrieve the cookie in a single line, without using ga() functions:

var gaUserId = document.cookie.match(/_ga=(.+?);/)[1].split('.').slice(-2).join(".")

This is working for me.