1

J'ai mis en place des pages AMP et elles sont indexées sans erreur et apparaissent dans la recherche Google. Lorsqu'un visiteur clique sur un lien sur Google SERP, il apparaît sur Google Analytics (y compris les pages mises en cache) comme référencé par organic/google. Mais quand un visiteur clique sur un lien sur cette page AMP alors le référant est parfois attendu referral/ampprogect.org et dans de nombreux cas direct/none.
Bien sûr, amp-analytics est défini.
Je suppose que direct/none apparaît lorsque les pages AMP sont diffusées à partir du serveur principal en réponse à un clic depuis la page mise en cache.
Juste au cas où, AMP a été publié il y a quelques jours et pas tous ont été découverts à ce jour.
Cela a-t-il un sens?
Amp-analyse est mis en œuvre dans un très basique façonGoogle Analytics affiche les clics provenant des pages d'amplification mises en cache comme directes/non

<amp-analytics type="googleanalytics"> 
<script type="application/json"> 
{ 
    "vars": { 
    "account": "UA-XXXXX-Y" //real account id for sure 
    }, 
    "triggers": { 
    "trackPageview": { 
     "on": "visible", 
     "request": "pageview" 
    } 
    } 
} 
</script> 
</amp-analytics> 

Mise à jour

configurer Google Tag Manager pour AMP et changé amp-analitics bloc avec

<amp-analytics config="https://www.googletagmanager.com/amp.json?id=GTM-zzzzzz&gtm.url=SOURCE_URL" data-credentials="include"></amp-analytics> 

avec le même résultat .
Le clic de mises en cacheAMP la page (qui est https://google.com/mydomain-com.cdn...) à la non-ampère montre referral/ampproject.org et cliquez sur AMP non mis en cache (qui est https : //mydomain.com/amp/something.aspx) montre direct/none.

+0

Basé à partir de ce [blog] (http://blog.analytics-toolkit.com/2015/google-analytics-direct-none-source/), lorsqu'un utilisateur accèdera à votre site et Google Analytics ne saura pas d'où vient l'utilisateur, les sessions seront marquées comme "direct/none" (à moins que les données de campagne précédentes existent pour ce cookie). – abielita

Répondre

0

Merci à this great post J'ai compris ce qui ne va pas et appliqué les idées à .NET. L'idée principale est d'attraper amp-analytics objet de configuration (formaté JSON) et le remplacer par le mien (avec clientId à l'intérieur).
D'abord, je créé HttpHandler

''//.VB 
Namespace AmpHandlers 
    Public Class AmpConfig 
     Implements IHttpHandler 

     Private Const unixStart As DateTime = #1/1/1970# ''//start of epoc 

     Public ReadOnly Property IsReusable As Boolean Implements IHttpHandler.IsReusable 
      Get 
       Return False 
      End Get 
     End Property 

     Public Sub ProcessRequest(context As HttpContext) Implements IHttpHandler.ProcessRequest 
      context.Response.Clear() 
      ''//ecpected request 
      ''// https : //mydomain.com/gtm-amp.json?id=GTM-zzzzzz&gtm.url=SOURCE_URL 
      If String.IsNullOrEmpty(context.Request.QueryString("id")) OrElse context.Request.QueryString("id") <> "GTM-zzzzzz" Then 
       ''//no answer 
       context.Response.End() 
       Return 
      End If 
      Dim clientId As String = "" 
      If context.Request.Cookies("_ga") IsNot Nothing Then 
       Dim ga As String = context.Request.Cookies("_ga").Value ''//GA1.2.12321354.1507250223 
       clientId = Regex.Match(ga, "(\d+?\.\d+?$)").Groups(1).Value 
      Else 
       Dim rand As New Random() 
       ''//Majic 2147483647 is upper limit of Google's random part of _ga cookie 
       ''//The second part is Unix time, in seconds 
       clientId = rand.Next(2147483647) & "." & CInt(DateTime.UtcNow.Subtract(unixStart).TotalSeconds) 
      End If 
      ''//Set cookie and response headers 
      context.Response.ContentType = "application/json" '; charset=UTF-8 
      context.Response.SetCookie(New HttpCookie("_ga") With {.Value = "GA1.2." & clientId, 
       .Path = "/", .Domain = context.Request.Url.Host, .Expires = DateTime.UtcNow.AddYears(2) 
             }) 
      context.Response.AddHeader("Access-Control-Allow-Origin", "https://mydomain-com.cdn.ampproject.org") 
      context.Response.AddHeader("Access-Control-Expose-Headers", "AMP-Access-Control-Allow-Source-Origin") 
      context.Response.AddHeader("AMP-Access-Control-Allow-Source-Origin", "https://" & context.Request.Url.Host) 
      context.Response.AddHeader("Access-Control-Allow-Source-Origin", "https://" & context.Request.Url.Host) 
      context.Response.AddHeader("Access-Control-Allow-Credentials", "true") 
      context.Response.AddHeader("Content-Disposition", "attachment; filename=""GTM-NZPM27T.json""") 
      context.Response.AddHeader("cache-control", "no-cache, no-store, must-revalidate") 

      ''//https://www.googletagmanager.com/amp.json?id=GTM-zzzzzz&gtm.url=SOURCE_URL response is saved locally and edited 
      ''//possibly it is not the best colution 
      Dim sr As New IO.StreamReader(context.Server.MapPath("~/amp-gtm.config")) 
      Dim str As String = sr.ReadToEnd() 
      str = str.Replace("[[clientId]]", clientId) 
      context.Response.Write(str) 
      context.Response.Flush() 
      context.Response.End() 
     End Sub 
    End Class 
End Namespace 

Suivant Je me suis inscrit dans web.config.

<handlers> 
    <add name="amp-gtm" verb="GET" path="gtm-amp.json" type="AmpHandlers.AmpConfig" resourceType="Unspecified"/> 
</handlers> 

et enfin mis en amp-analytics étiquette. Maintenant, tous les clics provenant des pages AMP mises en cache et non mises en cache indiquent organic/google

<amp-analytics config="https : //mydomain.com/gtm-amp.json?id=GTM-zzzzzz&gtm.url=SOURCE_URL" data-credentials="include"></amp-analytics>