如何使用Google Analytics跟踪Facebook即时文章的内容统计信息

时间:2016-03-30 13:33:24

标签: facebook facebook-instant-articles

您好我们已经设置了Facebook Instant Articles Feed 主页。

Facebook为发布商提供的即时文章功能(推出FB iOS应用程序主要用于现在30 3 2016) 允许通过Google Analytics代码进行跟踪。 但是,即使按照指示实施GA代码,我们也无法找到推荐或 GA的FB Instant Articles的其他信息。 任何人都可以帮助我了解在哪里找到关于Facebook即时文章内容消费的确切信息? 它会显示为推荐来源还是主机名? 即时文章在FB内打开。

8 个答案:

答案 0 :(得分:13)

根据他们的文档https://developers.google.com/analytics/devguides/collection/gajs/gaTrackingCampaigns#generalCampaign可以通过分析脚本设置源,媒体和标题。鉴于FB应用程序上IA的页面标题为空,需要设置标题。

请注意代码中的大写字母应该使用静态或动态值进行更新。

<figure class="op-tracker"> 
    <iframe hidden>
        <script>
            (function (i,s,o,g,r,a,m) {i['GoogleAnalyticsObject']=r;i[r]=i[r]||function () {(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),                         m=s.getElementsByTagName(o)0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)})(window,document,'script','//www.google-   analytics.com/analytics.js','ga');
            ga('create', 'ANALYTICS ID', 'auto');
            ga('require', 'displayfeatures');
            ga('set', 'campaignSource', 'Facebook');
            ga('set', 'campaignMedium', 'Social Instant Article');
            ga('set', 'title', 'POST TITLE OR THE TITLE YOU WANT'); 
            ga('send', 'pageview');
        </script>
    </iframe>
</figure>

同样,请注意,大写单词将被您的实际值替换。好好享受。

答案 1 :(得分:2)

由于这似乎是一个常见问题,我将尝试在此处提供更多信息:

首先,请确保检查您在Google Analytics上使用的任何代码。这里提供的第一个答案是使用Google GA.JS代码粘贴代码,但今天许多网站都使用新的Analytics.JS代码(我的情况)。因此,我的建议是从您的网站或GA面板中复制您的GA代码。

第二次,检查您的GA代码是否正确传递到您的Instant Article RSS Feed(我假设您使用带有一些插件的Wordpress来构建RSS)。如果您使用的是新的analytics.js方法,则RSS源(每篇文章)中的代码应如下所示:

<!-- Adding tracking if defined -->
<figure class="op-tracker">
    <iframe>
        <script>
            (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
            (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
            m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
            })(window,document,'script','https://www.google-analytics.com/analytics.js','ga');
            ga('create', 'YOUR_GA_ID', 'auto');
            ga('send', 'pageview');
        </script>
    </iframe>
</figure>

第三,如果您的文章已经在Facebook即时文章制作列表中,则在添加Google Analytics代码之前,他们不会更新/加载代码。最好的测试方法是编辑你的任何文章(标点符号的简单变化就足够了)并在你的wordpress上重新发布它。然后转到Facebook上的IA面板, Configuration ,然后单击以重新加载/重建RSS。稍等一下,然后检查帖子将更新的I.A列表(您将看到日期更改),然后在编辑选项上打开它并检查代码的末尾。您的GA代码应该在那里。

所以,如果现在一切都很好,那么最后一步(至少对我而言)就是删除Facebook上所有旧的即时文章(我假设你没有&#39;然后发布它们并在配置区域重新加载RSS源,因此它将使用GA代码重建您的文章。

希望这有帮助。

PS:我没有使用Automattic的插件从WP发布IA,因为它只是垃圾。有一种方法比工作更简单:https://wordpress.org/plugins/allfacebook-instant-articles/

答案 2 :(得分:1)

不幸的是,其他答案都涉及某种混乱,可能会让人感到困惑。这是尝试使用 UNIVERSAL ANALYTICS (新的)而不是&#34; ga.js&#34; (旧的,虽然有一个甚至更老的urchin.js,没有人再使用了)。

<script>
  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
  })(window,document,'script','https://www.google-analytics.com/analytics.js','ga');

  ga('create', 'YOUR_UID_REPLACE_THIS', 'auto');
  ga('require', 'displayfeatures');
  ga('set', 'campaignSource', 'Facebook');
  ga('set', 'campaignMedium', 'Social Instant Article');
  ga('set', 'title', ia_document.title);
  ga('send', 'pageview');

</script>
  • YOUR_UID_REPLACE_THIS:显然将您的个人GA代码放在此处。
  • campaignSource:显示为&#34;来源&#34;在GA。
  • campaignMedium:显示为&#34; Medium&#34;在GA。
  • ia_document.title:这使用FB javascript变量作为标题。

到目前为止,我已经使用此代码成功替换了标题。

我尝试使用&#34;实时&#34;进行测试时遇到了一些非常令人困惑的经历。有关Google Analytics的报道,其中多个帖子显示的标题相同,但总体而言我觉得它正在运作。

  • 测试&#39;标题&#39;字段:实时&gt;行为
  • 测试来源&#39;和&#39;媒体&#39;字段:实时&gt;交通来源

要查看GA的收购部分下的流量,请转到采购&gt;来源/中等,它将与其他来源(包括来自Facebook的几个不同来源)一起列出。

FLAW (与所有其他解决方案共享) - 遗憾的是,我的解决方案并未在采购&gt;中显示IA流量社交&gt; Facebook 报道。更糟糕的是,它甚至没有显示在收购中&gt;社交报告。可悲的是,它在收购&gt;中迷失了其他,对我们大多数人来说,将意味着一个完全混乱的社交报告。

  • &#34; Social&#34;与其他频道一样,频道具有非常精确的source / medium值集合,可以过滤到Facebook等不同类别。
  • 显然,Facebook / Social Instant Article不在该列表中。
  • 有关详细信息,请参阅This other StackOverflow post I made about this particular issue。我会在这里更新我的例子,结果是最好的做法。

ia_document.title代码的来源:https://developers.facebook.com/docs/instant-articles/analytics

答案 3 :(得分:0)

我遇到了同样的问题。这有什么作用:

  

分析代码来源的网址

     

如果您的分析代码可以直接从特定网址提供,那么您就是   可以使用元素上的src属性指定URL。

<figure class="op-tracker">
    <iframe src="https://www.myserver.com/trackingcode"></iframe>
</figure>
     

(资料来源:https://developers.facebook.com/docs/instant-articles/reference/analytics

我现在唯一不知道的是:如果我使用extended Analytics code 如何提取页面标题?

答案 4 :(得分:0)

我使用下面的解决方案(有点不同),并且它运作正常。

<figure class="op-tracker">
<iframe>
<script>
(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
})(window,document,'script','//www.google-analytics.com/analytics.js','ga');
ga('create', 'UA-9999999-9', 'mydomain.com');
ga('require', 'displayfeatures');
ga('set', 'campaignSource', 'Facebook');
ga('set', 'campaignMedium', 'Social Instant Article');
ga('set', 'title', 'My post title here');
ga('send', 'pageview');
</script>
</iframe>
</figure>

答案 5 :(得分:0)

我已经使用维度来完成它,我认为这是更好的练习,特别是如果你正在跟踪潜在客户。

<figure class="op-tracker">
  <iframe>
    <script>
            (function (i,s,o,g,r,a,m) {i['GoogleAnalyticsObject']=r;i[r]=i[r]||function () {(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),                         m=s.getElementsByTagName(o)0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)})(window,document,'script','//www.google-   analytics.com/analytics.js','ga');
            ga('create', 'ANALYTICS ID', 'auto');
            ga('require', 'displayfeatures');
            ga('send', 'pageview', {
               'dimension3': 'Facebook Instant Article'
            });
    </script>
  </iframe>
</figure>

然后在GA的管理员中创建维度3并创建一个其中dimension3具有“即时消息”文章的段。值。 通过这种方式,您可以保留广告系列来源&amp;适合他们的实际目的。

答案 6 :(得分:0)

感谢所有以前的答案和解决方案。他们启发了我在this public gist中总结我的学习和解决方案。

我正在使用Google's global site tag (gtag.js)来跟踪网页浏览并将其成功归因于Google Analytics(分析)中的社交媒体。

以下代码段说明了对我有用的内容。请注意,我们使用jinja模板(带有Nunjucks)来添加必要和缺失的数据(例如{{googleAnalytics}})。

<figure class="og-tracker">
  <iframe>
    <script async src="https://www.googletagmanager.com/gtag/js?id={{googleAnalytics}}"></script>
    <script type='text/javascript'>
      window.dataLayer = window.dataLayer || [];
      function gtag(){dataLayer.push(arguments);}
      gtag('js', new Date());
      gtag('config', '{{googleAnalytics}}', {
        'page_title': '{{articleTitle}}',
        'page_path': '/{{articlePath}}', // The path portion of location. This value must start with a slash (/) character. (optional, but recommended)
        'page_location': '{{articleUrl}}', // page's URL (optional, but recommended)
        'campaign': {
          'source': 'ia.facebook.com', // utm_source
          'medium': 'referral', // utm_medium
          'name': 'Facebook Instant Articles' // utm_campaign
        },
      });
    </script>
  </iframe>
</figure>
    

我像这样将其嵌入到Feed中

<figure class="op-tracker">
    <iframe src="https://www.example.com/fia-google-analytics-tracking.html"></iframe>
</figure>

实施文档

答案 7 :(得分:0)

这里的大多数答案都提到了2019-03-21 17:02:16.248 ERROR 1804 --- [freshExecutor-0] com.netflix.discovery.DiscoveryClient : DiscoveryClient_ZUUL_RIBBON/ICB8061.ibsplc.com:zuul_ribbon:8080 - was unable to refresh its cache! status = Cannot execute request on any known server com.netflix.discovery.shared.transport.TransportException: Cannot execute request on any known server at com.netflix.discovery.shared.transport.decorator.RetryableEurekaHttpClient.execute(RetryableEurekaHttpClient.java:112) ~[eureka-client-1.9.8.jar:1.9.8] at com.netflix.discovery.shared.transport.decorator.EurekaHttpClientDecorator.getApplications(EurekaHttpClientDecorator.java:134) ~[eureka-client-1.9.8.jar:1.9.8] at com.netflix.discovery.shared.transport.decorator.EurekaHttpClientDecorator$6.execute(EurekaHttpClientDecorator.java:137) ~[eureka-client-1.9.8.jar:1.9.8] at com.netflix.discovery.shared.transport.decorator.SessionedEurekaHttpClient.execute(SessionedEurekaHttpClient.java:77) ~[eureka-client-1.9.8.jar:1.9.8] at com.netflix.discovery.shared.transport.decorator.EurekaHttpClientDecorator.getApplications(EurekaHttpClientDecorator.java:134) ~[eureka-client-1.9.8.jar:1.9.8] at com.netflix.discovery.DiscoveryClient.getAndStoreFullRegistry(DiscoveryClient.java:1051) [eureka-client-1.9.8.jar:1.9.8] at com.netflix.discovery.DiscoveryClient.fetchRegistry(DiscoveryClient.java:965) [eureka-client-1.9.8.jar:1.9.8] at com.netflix.discovery.DiscoveryClient.refreshRegistry(DiscoveryClient.java:1479) [eureka-client-1.9.8.jar:1.9.8] at com.netflix.discovery.DiscoveryClient$CacheRefreshThread.run(DiscoveryClient.java:1446) [eureka-client-1.9.8.jar:1.9.8] at java.util.concurrent.Executors$RunnableAdapter.call(Unknown Source) [na:1.8.0_202] at java.util.concurrent.FutureTask.run(Unknown Source) [na:1.8.0_202] at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source) [na:1.8.0_202] at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source) [na:1.8.0_202] at java.lang.Thread.run(Unknown Source) [na:1.8.0_202] 2019-03-21 17:02:16.278 ERROR 1804 --- [tbeatExecutor-0] c.n.d.s.t.d.RedirectingEurekaHttpClient : Request execution error. endpoint=DefaultEndpoint{ serviceUrl='http://localhost:8762/} javax.ws.rs.WebApplicationException: com.fasterxml.jackson.databind.exc.MismatchedInputException: Root name 'timestamp' does not match expected ('instance') for type [simple type, class com.netflix.appinfo.InstanceInfo] at [Source: (com.sun.jersey.client.apache4.ApacheHttpClient4Handler$HttpClientResponseInputStream); line: 1, column: 2] at com.netflix.discovery.provider.DiscoveryJerseyProvider.readFrom(DiscoveryJerseyProvider.java:110) ~[eureka-client-1.9.8.jar:1.9.8] at com.sun.jersey.api.client.ClientResponse.getEntity(ClientResponse.java:634) ~[jersey-client-1.19.1.jar:1.19.1] at com.sun.jersey.api.client.ClientResponse.getEntity(ClientResponse.java:586) ~[jersey-client-1.19.1.jar:1.19.1] at com.netflix.discovery.shared.transport.jersey.AbstractJerseyEurekaHttpClient.sendHeartBeat(AbstractJerseyEurekaHttpClient.java:105) ~[eureka-client-1.9.8.jar:1.9.8] at com.netflix.discovery.shared.transport.decorator.EurekaHttpClientDecorator$3.execute(EurekaHttpClientDecorator.java:92) [eureka-client-1.9.8.jar:1.9.8] at com.netflix.discovery.shared.transport.decorator.MetricsCollectingEurekaHttpClient.execute(MetricsCollectingEurekaHttpClient.java:73) ~[eureka-client-1.9.8.jar:1.9.8] at com.netflix.discovery.shared.transport.decorator.EurekaHttpClientDecorator.sendHeartBeat(EurekaHttpClientDecorator.java:89) [eureka-client-1.9.8.jar:1.9.8] at com.netflix.discovery.shared.transport.decorator.EurekaHttpClientDecorator$3.execute(EurekaHttpClientDecorator.java:92) [eureka-client-1.9.8.jar:1.9.8] at com.netflix.discovery.shared.transport.decorator.RedirectingEurekaHttpClient.execute(RedirectingEurekaHttpClient.java:89) ~[eureka-client-1.9.8.jar:1.9.8] at com.netflix.discovery.shared.transport.decorator.EurekaHttpClientDecorator.sendHeartBeat(EurekaHttpClientDecorator.java:89) [eureka-client-1.9.8.jar:1.9.8] at com.netflix.discovery.shared.transport.decorator.EurekaHttpClientDecorator$3.execute(EurekaHttpClientDecorator.java:92) [eureka-client-1.9.8.jar:1.9.8] at com.netflix.discovery.shared.transport.decorator.RetryableEurekaHttpClient.execute(RetryableEurekaHttpClient.java:120) [eureka-client-1.9.8.jar:1.9.8] at com.netflix.discovery.shared.transport.decorator.EurekaHttpClientDecorator.sendHeartBeat(EurekaHttpClientDecorator.java:89) [eureka-client-1.9.8.jar:1.9.8] at com.netflix.discovery.shared.transport.decorator.EurekaHttpClientDecorator$3.execute(EurekaHttpClientDecorator.java:92) [eureka-client-1.9.8.jar:1.9.8] at com.netflix.discovery.shared.transport.decorator.SessionedEurekaHttpClient.execute(SessionedEurekaHttpClient.java:77) [eureka-client-1.9.8.jar:1.9.8] at com.netflix.discovery.shared.transport.decorator.EurekaHttpClientDecorator.sendHeartBeat(EurekaHttpClientDecorator.java:89) [eureka-client-1.9.8.jar:1.9.8] at com.netflix.discovery.DiscoveryClient.renew(DiscoveryClient.java:846) [eureka-client-1.9.8.jar:1.9.8] at com.netflix.discovery.DiscoveryClient$HeartbeatThread.run(DiscoveryClient.java:1405) [eureka-client-1.9.8.jar:1.9.8] at java.util.concurrent.Executors$RunnableAdapter.call(Unknown Source) [na:1.8.0_202] at java.util.concurrent.FutureTask.run(Unknown Source) [na:1.8.0_202] at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source) [na:1.8.0_202] at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source) [na:1.8.0_202] at java.lang.Thread.run(Unknown Source) [na:1.8.0_202] campaignSource的硬编码。

如果执行此操作,则您的分析将丢失使用UTM标签记录任何特定广告系列的功能。 另外,Google Analytics(分析)会将您访问“即时文章”的所有流量视为“广告系列”和“社交”流量之内的数字。

解决方案是将campaignMedium设置为referrer。 使用此Google Analytics(分析)将处理您来自Facebook的流量,并使其表现为“社交”流量。

要将“即时文章流量”与常规Facebook流量区分开,您可以过滤https://i.facebook.com/或添加自定义维度。

请记住在以下代码段中更改XX-X。

referrer