Gibt es eine Möglichkeit, Ereignisse über die serverseitige API in Google Analytics zu veröffentlichen? [geschlossen]

178

Ich versuche, Google Analytics aus unserem Backend-System zu verwenden, indem ich Ereignisse darin poste. Gibt es eine Möglichkeit, dies mit der GA-API auf der Serverseite zu tun?

X__
quelle
Ja, mit einem JS Measurement Protocol-Client wie diesem
Lloyd

Antworten:

231

Es ist jetzt möglich (und einfach), Analytics-Daten vom Server aus zu verfolgen. Mit dem Start von Universal Analytics können Sie jetzt das Messprotokoll verwenden , um Daten an die GA-Server zu senden.

Codebeispiele hier

Shanabus
quelle
5
Dies sollte als Antwort akzeptiert werden. Wir befinden uns wahrscheinlich in einer ähnlichen Situation wie OP, in der wir eine ziemlich genaue Umsatzzahl mit den Besucherdaten der Website erzielen möchten. Und die serverseitige Nachverfolgung ist für den letzten Schritt des Zahlungsabschlusses einfach nicht gut genug (z. B. kommt der Kunde nicht von der Website des Zahlungsanbieters zurück).
Tadas Sasnauskas
Ich habe das gleiche Problem mit dem Kunden, der nicht von der Website des Zahlungsanbieters zurückkommt, aber ich habe keine Kunden-ID. Wie hänge ich Daten an eine Client-Sitzung an?
Korjavin Ivan
2
@ KorjavinIvan hier sind die Anweisungen, um die Client-ID oder den CID-Parameter zu erhalten, die für das Messprotokoll erforderlich sind: developer.google.com/analytics/devguides/collection/…
Jorge Pedret
1
Dies scheint ein guter Weg zu sein, um den Effekt von Werbeblockern zu
umgehen,
das gleiche Messprotokoll, Google Analytics und Google Tag Manager?
Kiquenet
21
using System;
using System.Collections.Generic;
using System.Web;
using System.Net;
using System.IO;
using System.Text;

    public class GoogleAnalyticsApi
    {
        public static void TrackEvent(string type, string category,
               string action, string label, string value)
        {

            ASCIIEncoding encoding = new ASCIIEncoding();
            string postData = 
                "v=1&tid=UX-XXXXXXX-1&cid=1234&t=" + type +
                "&ec=" + category + 
                "&ea=" + action + 
                "&el=" + label + 
                "&ev=" + value;
            byte[] data = encoding.GetBytes(postData);
            HttpWebRequest myRequest = (HttpWebRequest)WebRequest.Create("https://www.google-analytics.com/collect");

            myRequest.Method = "POST";
            myRequest.ContentType = "application/x-www-form-urlencoded";
            myRequest.ContentLength = data.Length;
            Stream newStream = myRequest.GetRequestStream();
            newStream.Write(data, 0, data.Length);
            newStream.Close();

        }
    }
Koby Douek
quelle
Dies nutzt die universelle Analytik richtig?
Brady Moritz
@BradyMoritz Ja, das tut es
Koby Douek
Gibt es auch einen Grund, Post zu verwenden, wenn es auch eine Get-Anfrage verwenden kann?
Brady Moritz
ist das c #? sollten Sie vielleicht angeben?
Esqarrouth
7

Wenn Sie PHP verwenden, können Sie das Analytics Measurement Protocol einfach aufrufen , um Seitenaufrufe an Ihr Google Analytics-Konto zu senden:

function sendAnalytics($sGaId, $sHostname, $sPath, $sTitle) {

    $aParams = array();

    //Protocol Version
    $aParams['v'] = '1';

    //Tracking ID / Web Property ID
    $aParams['tid'] = $sGaId;

    //Anonymize IP
    $aParams['aip'] = '1';

    //Data Source
    $aParams['ds'] = 'web';

    //Queue Time
    $aParams['qt'] = 0;

    //Client ID
    $aParams['cid'] = substr(md5($_SERVER['REMOTE_ADDR'].$_SERVER['HTTP_USER_AGENT']), 0, 8);

    //User ID
    //$aParams['uid'] = '';

    //Session Control
    //$aParams[''] = '';

    //IP Override
    $aParams['uip'] = $_SERVER['REMOTE_ADDR'];

    //User Agent Override
    $aParams['ua'] = urlencode($_SERVER['HTTP_USER_AGENT']);

    //Geographical Override
    //$aParams['geoid'] = '';

    //Document Referrer
    //$aParams['dr'] = '';

    //Campaign Name
    //$aParams['cn'] = '';

    //Campaign Source
    //$aParams['cs'] = '';

    //Campaign Medium
    //$aParams['cm'] = '';

    //Campaign Keyword
    //$aParams['ck'] = '';

    //Campaign Content
    //$aParams['cc'] = '';

    //Campaign ID
    //$aParams['ci'] = '';

    //Google AdWords ID
    //$aParams['gclid'] = '';

    //Google Display Ads ID
    //$aParams[''] = '';


    ////SystemInfo => see docs

    //Hit type
    $aParams['t'] = 'pageview';

    //Non-Interaction Hit
    //$aParams['ni'] = '';

    //Hostname
    $aParams['dh'] = $sHostname;

    //Document Path
    $aParams['dp'] = $sPath;

    //Document title
    $aParams['dt'] = urlencode($sTitle);


    $sGaUrl = 'http://www.google-analytics.com/collect?';


    foreach($aParams AS $sKey => $sValue) {
        $sGaUrl.= "$sKey=$sValue&";
    }

    $sGaUrl = substr($sGaUrl, 0, -1);

    file_get_contents($sGaUrl);
}


sendAnalytics('UA-XXXXXXXX-1', 'http://foo.com', '/bar', 'Foo Bar');

Hoffentlich hilft das!

Fabian
quelle
1
http_build_query () könnte dies ein wenig sauberer machen (und die ordnungsgemäße Flucht unterstützen)
Kainjow
2

Schauen Sie sich das Modul " Nutzungsstatistiken" an .

Befehlszeile

Tracking-Statistiken in Shell-Skripten:

# Track an event: category 'Backup', action 'start'
usage-stats event --tid UA-98765432-1 --ec Backup --ea start

# Perform the backup
cp files/** backup/

# Track an event: category 'Backup', action 'complete'
usage-stats event --tid UA-98765432-1 --ec Backup --ea complete

API

Das trivialste Beispiel.

const UsageStats = require('usage-stats')
const usageStats = new UsageStats('UA-98765432-1', { an: 'example' })

usageStats.screenView('screen name')
usageStats.event('category', 'action')
usageStats.send()
Lloyd
quelle