4

我使用Facebook JSSDK(即客戶端)來驗證當前用戶到我的網絡應用程序是誰。Google Analytics(分析) - 訪問者級別自定義變量問題和觀察

代碼看起來是這樣的:

... inited google analytics ... 

     ... 
     //events *before* authentication 
     _gaq.push(['_trackEvent', 'TEST', 'EVENT BEFORE AUTH', 1]); 

     ... 
     //events *after* attempt at client-side authentication 
     // callback might return after, say, 7 seconds 
     authenticateUser(function(userInfo) { 
      // setting visitor-level custom var 
      _gaq.push(['_setCustomVar', 1, 'AUTHED-USER', userInfo, 1]); 
      _gaq.push(['_trackEvent', 'TEST', 'EVENT AFTER AUTH', 1]); 
     }); 

(如果你試圖模仿這一點,請確保您運行「setCustomVar」第一事件觸發後相當長一段時間 - 只要你想給GA「足夠的時間「已發送的第一個事件)

這將創建下列‘與跟蹤事件的問題’下自定義變量:

  1. 從Facebook,無線響應用戶的信息可能會在其他事件已發送至Google Analytics後返回 - 訪問者級別的自定義變量似乎「解決了這個問題」,因爲它似乎甚至是本會話中之前跟蹤的事件(自定義變量設置之前)都是列在「自定義var值(在它們後面設置)」下面。

  2. 不同的用戶可能會使用相同的瀏覽器來使用該應用程序。 「覆蓋」訪問者級自定義變量的行爲是有問題的 - 似乎所有從此瀏覽器發出的pre-auth事件都在最新的custom-var值列出/分組。我嘗試在覆蓋前發出_deleteCustomVar調用 - 但這並未解決問題。

以不同的方式「解決」的第一個問題 - 我想不使用訪問者級自定義變量的(而是頁/會話之一) - 但是這將意味着所有的預AUTH事件不會在自定義var下列出 - 解決這個我認爲在驗證已經完成之後,以某種方式將所有事件跟蹤推遲到- 但是這看起來......呃..很奇怪。

另一個解決方案是使用我自己的「訪客cookie」。但GA已經這樣做了,所以我不願意重新發明輪子(並且在用戶切換之後,訪客的cookie將對於預先驗證事件「撒謊」)

對如何解決這種情況?

+0

請注意,向Google Analytics發送個人身份信息違反了他們的服務條款。 – Eduardo

+0

當然 - 但以上是一個問題,即使我只是登錄訪客的性別,用戶類型等... –

回答

4

也許對每個customVar範圍的一點解釋會幫助你。

訪問者一級CV

訪客級別的簡歷將適用於從設置在簡歷的那一刻所有訪問。如果您在單次訪問中更改簡歷,那麼訪問將在舊價格下列出,但未來的訪問將具有更新後的簡歷。

會話級CV

會話水平CV只在當前會話中有效。在未來的會議中它是空的。如果您在訪問期間更改了會話級別CV,則GA中報告的值是最後一個。

https://developers.google.com/analytics/devguides/collection/gajs/gaTrackingCustomVariables#usage

稱爲會話中的最後一個會話級變量是一個用於 該會話。示例:如果在會話開始時登錄名爲 的slot#1的登錄名爲false,並且稍後登錄名爲true,則會將 會話設置爲true以進行登錄。

在同一個 會話中調用任何先前設置的頁面級變量。示例:如果插槽#1首先用於category = sports,並且 則對於會話登錄= true,則爲該會話記錄的category = sports不會是 。

頁面級CV

你必須要小心這一個你的情況。當您使用頁面級別簡歷時,絕對不要將訪問次數視爲指標,而是始終使用綜合瀏覽量(如果您在設置簡歷後立即啓動事件,則總共使用綜合評分)。

要使用哪一個?

現在回答你的問題。我首先會問自己是否有理由相信多個用戶會使用同一個瀏覽器。我已經看到了像電腦這樣的自助終端系統,在這種情況下,這是一個完全有效的觀點。但除了大量的用戶,您可能使用相同的瀏覽器可能與您的指標無關。

即使在使用相同的瀏覽器的情況下如果您使用會話級別的CV,它將始終是空白的,直到用戶設置它,並且如果他在訪問期間更改它會得到一個可能是你想。使用會話級別簡歷的唯一缺點是,如果用戶從不登錄,那麼您將沒有該訪問的簡歷。

因此,如果您有任何理由相信您的受衆很有可能與多位用戶分享同一個瀏覽器,而不是使用會話級別簡歷。否則,我會保留一個用戶級別的簡歷,因爲這個值的改變機率很低,因此即使用戶決定不在特定的訪問期間登錄,您也會擁有簡歷。

PS

我不知道,如果在你的代碼的事件只是一個例子,但他們錯了。事件中的前3個參數是字符串,看起來你傳遞了2個字符串和一個整數。

在您設置簡歷後,您確實需要事件或綜合瀏覽量,設置簡歷不會向GA發送命中,因此您必須發送命中。如果你只發送了具有CV註冊着想的事件,你最好派一個事件是這樣的:

_gaq.push(['_trackEvent', 'CV', 'set', '', 0, true]); 

這將觸發一個非交互式的事件,並且它不會像抗衝擊指標-率。

+0

感謝您的回答。在大多數國家,兩個(或更多)人共享瀏覽器的情況仍然很可能。雖然你說得對,對於大多數網站,他們的指標「分組」在同一個簡歷應該不會影響我從我的指標得出的結論。 會話級CV不會很好,因爲任何pre-auth事件(因此pre-setCV)都不會在該CV下「分組」(嘗試它)。 我的解決方案是在頁面加載時刪除__utma cookie,並使用訪問者級CV(即*更新所有pre-auth事件)似乎完成。 哦,是的,事件標籤應該是一個字符串:) –

+1

我嘗試了它,並且在設置會話級別之前發送的瀏覽量和事件被分組到了該CV的最後設置值之下。我編輯了我的帖子,在文檔中加入瞭解釋這個和一個鏈接的片段。 https://developers.google.com/analytics/devguides/collection/gajs/gaTrackingCustomVariables#usage – Eduardo

+0

我只是自己重新測試它,你是正確的 - 事前簡歷事件確實歸入該簡歷。現在我只需要決定是否要在應用加載時使會話過期。謝謝。 –

0

所以谷歌想過這個問題,但決定這是不是那麼重要:

...同樣的,如果同一個瀏覽器中使用兩種不同的 遊客,但有一個單獨的計算機帳戶的每個中,活動 將記錄在兩個唯一訪客ID下。另一方面,如果 瀏覽器碰巧被共享同一計算機帳戶的兩個不同人使用,則會記錄一個唯一訪客ID,即使兩個獨特個人訪問該網站也是如此。

但我確實找到了一個解決方案:在加載GA之前刪除__utma cookie。

+0

請參閱@Eduardo Cereto的回答和評論。 –

相關問題