Sunucu tarafı API'sı aracılığıyla Google Analytics'e etkinlik yayınlamanın bir yolu var mı? [kapalı]


178

Google Analytics'i arka uç sistemimizden olayları göndererek kullanmaya çalışıyorum. Bunu sunucu tarafında GA'nın API'sı ile yapmanın bir yolu var mı?


evet, böyle bir JS Ölçüm Protokolü istemcisi kullanarak bu bir
Lloyd

Yanıtlar:


231

Analytics verilerini sunucu tarafından izlemek artık mümkün (ve kolay). Universal Analytics'in piyasaya sürülmesiyle, artık GA sunucularına veri göndermek için Ölçüm Protokolünü kullanabilirsiniz .

Örnekleri buraya kodlayın


5
Bu cevap kabul edilmelidir. Muhtemelen OP gibi benzer bir durumdayız ve web sitesi ziyaretçileri verileriyle oldukça doğru bir gelir elde etmek istiyoruz. Ve tarayıcı tarafı takibi, ödemeyi tamamlamanın son adımı için yeterince iyi değildir (örneğin, müşteri ödeme sağlayıcı sitesinden geri gelmez).
Tadas Sasnauskas

Müşteri ile aynı sorunum ödeme sağlayıcı sitesinden geri gelmiyor, ancak müşteri kimliğim yok. İstemci oturumuna veri nasıl eklenir?
Korjavin Ivan

2
@KorjavinIvan, Ölçüm Protokolü için gereken müşteri kimliğini veya cid parametresini alma talimatları: developers.google.com/analytics/devguides/collection/…
Jorge Pedret

1
Bu, ga.js gibi refs arayan reklam engelleyicilerin etkisi üzerinde çalışmak için iyi bir yol gibi görünüyor
JoshuaDavid

aynı Ölçüm Protokolü, Google Analytics ve Google Etiket Yöneticisi ??
19'da 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();

        }
    }

Bu evrensel analitiği doğru kullanıyor mu?
Brady Moritz

@BradyMoritz Evet öyle
Koby Douek

Ayrıca - ne zaman bir get isteği kullanabilirsiniz yazı kullanmak için herhangi bir neden?
Brady Moritz

bu c # mı? belki belirtmelisin?
Esqarrouth

7

PHP kullanıyorsanız Google Analytics hesabınıza sayfa görünümleri göndermek için Analytics Ölçüm Protokolünü kolayca arayabilirsiniz :

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

Umarım yardımcı olur!


1
http_build_query () bunu biraz daha temiz yapabilir (ve uygun kaçmayı destekleyebilir)
kainjow

2

Kullanım istatistikleri modülüne bir göz atın .

Komut satırı

Kabuk komut dosyalarında izleme istatistikleri:

# 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

En önemsiz örnek.

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

usageStats.screenView('screen name')
usageStats.event('category', 'action')
usageStats.send()
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.