Apakah ada cara untuk memposting acara ke Google Analytics melalui API sisi server? [Tutup]

178

Saya mencoba menggunakan Google Analytics dari sistem backend kami dengan memposting acara ke sana. Apakah ada cara untuk melakukan ini dengan API GA di sisi server?

X__
sumber
ya, menggunakan klien JS Measurement Protocol seperti ini
Lloyd

Jawaban:

231

Sekarang dimungkinkan (dan mudah) untuk melacak data Analytics dari sisi server. Dengan peluncuran Universal Analytics, Anda sekarang dapat menggunakan Protokol Pengukuran untuk mengirim data ke server GA.

Contoh kode di sini

shanabus
sumber
5
Ini harus diterima jawaban. Kami mungkin berada dalam situasi yang sama seperti OP di mana kami ingin memiliki angka pendapatan yang cukup akurat dengan data pengunjung situs web. Dan pelacakan sisi browser tidak cukup baik untuk langkah terakhir menyelesaikan pembayaran (misalnya, pelanggan tidak kembali dari situs penyedia pembayaran).
Tadas Sasnauskas
Saya memiliki masalah yang sama dengan pelanggan tidak kembali dari situs penyedia pembayaran, tetapi saya belum memiliki ID klien. Bagaimana cara melampirkan data ke sesi klien?
Korjavin Ivan
2
@KorjavinIvan berikut adalah petunjuk untuk mendapatkan id klien atau parameter cid yang diperlukan untuk Protokol Pengukuran: developers.google.com/analytics/devguides/collection/…
Jorge Pedret
1
ini sepertinya cara yang bagus untuk mengatasi efek pemblokir iklan yang mencari referensi seperti ga.js
JoshuaDavid
Protokol Pengukuran yang sama, Google Analytics dan 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
sumber
Ini menggunakan analisis universal yang benar?
Brady Moritz
@ BradyMoritz Ya, benar
Koby Douek
Juga- ada alasan untuk menggunakan pos ketika bisa menggunakan permintaan dapatkan juga?
Brady Moritz
apakah ini c #? Anda harus menentukan mungkin?
Esqarrouth
7

Jika Anda menggunakan PHP, Anda dapat dengan mudah memanggil Protokol Pengukuran Analytics untuk mengirim tampilan halaman ke akun Google Analytics Anda:

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

Semoga itu bisa membantu!

Fabian
sumber
1
http_build_query () dapat membuat ini sedikit lebih bersih (dan mendukung pelarian yang tepat)
kainjow
2

Lihatlah modul statistik penggunaan .

Garis komando

Melacak statistik dalam skrip 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

Contoh paling sepele.

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
sumber