Esiste un modo per pubblicare eventi su Google Analytics tramite l'API lato server? [chiuso]


178

Sto cercando di utilizzare Google Analytics dal nostro sistema di back-end pubblicando eventi su di esso. Esiste un modo per farlo con l'API di GA sul lato server?


sì, usando un client JS Measurement Protocol come questo
Lloyd

Risposte:


231

Ora è possibile (e facile) tenere traccia dei dati di Analytics dal lato server. Con il lancio di Universal Analytics, ora è possibile utilizzare il protocollo di misurazione per inviare dati ai server GA.

Esempi di codice qui


5
Questa dovrebbe essere una risposta accettata. Probabilmente ci troviamo in una situazione simile come OP, dove vogliamo avere cifre delle entrate abbastanza precise con i dati dei visitatori del sito Web. E il monitoraggio lato browser non è abbastanza buono per l'ultimo passaggio del completamento del pagamento (ad esempio, il cliente non ritorna dal sito del fornitore di servizi di pagamento).
Tadas Sasnauskas,

Ho lo stesso problema con il cliente non ritorna dal sito del fornitore di pagamenti, ma non ho un ID cliente. Come allegare i dati alla sessione client?
Korjavin Ivan,

2
@KorjavinIvan ecco le istruzioni per ottenere l'id client o il parametro cid richiesti per il protocollo di misurazione: developers.google.com/analytics/devguides/collection/…
Jorge Pedret,

1
questo sembra un buon modo per aggirare l'effetto degli ad-blocker che cercano
refs

lo stesso protocollo di misurazione, Google Analytics e 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();

        }
    }

Questo utilizza l'analitica universale corretta?
Brady Moritz,

@BradyMoritz Sì, lo fa
Koby Douek,

Inoltre, c'è qualche motivo per usare post quando può usare anche una richiesta get?
Brady Moritz,

è questo c #? dovresti specificare forse?
Esqarrouth,

7

Se usi PHP puoi facilmente chiamare il protocollo di misurazione di Analytics per inviare visualizzazioni di pagina al tuo account Google Analytics:

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');

Spero che aiuti!


1
http_build_query () potrebbe rendere questo un po 'più pulito (e supportare una corretta evasione)
kainjow

2

Dai un'occhiata al modulo delle statistiche di utilizzo .

Riga di comando

Tracciamento delle statistiche negli script di shell:

# 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

L'esempio più banale.

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

usageStats.screenView('screen name')
usageStats.event('category', 'action')
usageStats.send()
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.