Tengine一键安装Shell

最近开始用阿里云服务器,使用云服务器的一件麻烦事是得自己配置网站环境,个人又不太喜欢所谓的一键安装包,于是东拼西凑地整了一个shell脚本。
操作系统选择的是Ubuntu 14.04,使用以下2行命令即可一键安装Tengine、MySQL、PHP、PHPmyadmin。

wget https://gist.github.com/xiaoq-in/3e4494bf288ec484bb25/raw/d4b226cbaea5747d2062e43f385d245e83745be9/tengine.sh
sh tengine.sh

屏幕中会出现一些问题选项,一般按下Y即可,大概10分钟就把基本的LEMP网站环境搭建好了。

这个只是基本环境安装,之后还需要进行一些config文件的配置和优化,不再累赘。

Mobile App Analytics Fundamentals

Mobile App Analytics Fundamentals是Google Analytics推出的第四个系列课程,主要讲述App Tracking相关的基础知识,由Google Mobile App Analytics产品经理Fontaine Foxworth主讲,每个章节后均有配套测试题,完成后可以获得一个结业证书,如下:

mobile-app-analytics-fundamental-cert

 

课程大纲/Course Schedule

Pre-Course Survey
Unit 1 – Introduction to Mobile App Analytics
Welcome to the course
Marketing and analysis tools
App revenue models
Starting with a measurement plan
Tools to set up tracking
Assessment 1

Unit 2 – Attracting New Users
Acquisition channels
Acquisition reports
High-value users
Segmentation and user attributes
Assessment 2

Unit 3 – Measuring behavior
Behavior reports overview
Screen tracking
Event tracking
Custom dimensions and metrics tracking
Enhanced Ecommerce tracking
Assessment 3

Unit 4 – Increasing revenue
Identifying roadblocks to revenue
Re-engaging existing users
Remarketing to new and existing users
Course Summary
Assessment 4
Course Glossary

下面是其中4个测试题的标准答案,仅供参考,强烈建议感兴趣的童鞋FQ去到官方网站详细学习下,移动已是大势所趋,掌握一门新技能将会受益匪浅。

  • Question 1: Correct! AdWords allows you to advertise on both the Google Search results page and GDN.
  • Question 2: Correct! AdMob can let you run ads for your app inside other apps.
  • Question 3: Correct! In addition to running ads in other apps, AdMob also lets you host advertising within your own app.
  • Question 4: Correct! Google Analytics is the only one of these tools that lets you measure user behavior in your app.
  • Question 5: Correct! A session is that period of time when a user is actively engaging with an app.
  • Question 6: Correct! Freemium is the term for the monetization model where users download a free app and then pay for additional features.
  • Question 7: Correct! Conversions are the actions you want users to perform in your app to achieve your business goals.
  • Question 8: Correct! A Goal lets you define and measure conversions in Google Analytics.
  • Question 9: Correct! The Google Play Services SDK provides access to the entire suite of Google Services for apps.
  • Question 10: Correct! Google Tag Manager lets you push collection tag updates without having to publish a new version of your app to a marketplace every time.
  • Question 1: Correct! Search ads appear on Google search engine result pages based on users’ search terms.
  • Question 2: Correct! Display ads appear as banners on websites, videos, and within other apps.
  • Question 3: Correct! “Remarketing” targets ads to users who have previously visited your website or app.
  • Question 4: Correct! In order to view AdWords reports in Analytics, you must first link your AdWords and Google Analytics accounts, and enable auto-tagging.
  • Question 5: Correct! If apps marketplace data appears as “not set,” this could mean the marketplace doesn’t support the App Installer ID. The SDK could also not be retrieving the data correctly.
  • Question 6: Correct! The Sources report shows the traffic sources that brought users to your app marketplace, how long they stayed, and how much money they spent.
  • Question 7: Correct! The Google Play Referral Flow report shows how users moved through the acquisition process.
  • Question 8: Correct! The New Users report shows an overview of the users who launched your app for the first time.
  • Question 9: Correct! “Segmentation” lets you compare distinct groups of users in Google Analytics.
  • Question 10: Correct! Audience report data can help you understand common audience characteristics, design better demographic targeting for ad campaigns, and improve users’ app experience based on their language or location.
  • Question 1: Correct! Behavior reports include data about app screens, interactions within a screen, and crashes and exceptions.
  • Question 2: Correct! Google Analytics screen tracking collects the name of each screen that users view and how many times they view that screen.
  • Question 3: Correct! You can use event tracking to track specific interactions within an app screen.
  • Question 4: Correct! When tracking an event, we recommend at least setting up the parameters Category, Action, and Label.
  • Question 5: Correct! A user clicking a button 4 times in one session and 4 times in another session will be counted as 2 unique events.
  • Question 6: Correct! You should be selective about choosing what events to track so you don’t exceed Google Analytics data collection limits and avoid incomplete session data.
  • Question 7: Correct! Custom Dimensions and metrics let you collect data that’s not automatically captured through Google Analytics.
  • Question 8: Correct! Mobile Device and Screen Resolution are examples of dimensions.
  • Question 9: Correct! Exits, Time on Page, and Session Duration are all examples of metrics.
  • Question 10: Correct! Enhanced Ecommerce reports can show the names of top selling products, the revenue they generate, and the percentage of shopping cart drop-offs.
  • Question 1: Correct! All of these issues represent potential roadblocks for maximizing revenue in your app.
  • Question 2: Correct! Based on this report, you should check Level 2 first to fix potential roadblocks, since it has the highest exit rate and lowest time on screen.
  • Question 3: Correct! Based on this report, app version 3.0.13 appears to have introduced a new technical issue.
  • Question 4: Correct! The Loyalty report shows how frequently users returned to an app.
  • Question 5: Correct! The Recency report shows how much time passed since a user’s last app session.
  • Question 6: Correct! You can use email marketing, push notifications, and remarketing campaigns to re-engage your existing app users.
  • Question 7: Correct! You must update your Google Analytics tracking code in order to enable Remarketing.
  • Question 8: Correct! Audience Lists can target ads to users based on common attributes or their previous actions in your app, as well as allow you to create your own Audience Lists from Analytics segments.
  • Question 9: Correct! Audience Lists can use all of these pre-defined audiences.

Google Tag Manager代码部署:外贸B2C电商

前些天给一个朋友的外贸B2C网站做了一个简单的代码部署,觉得比较实用和有价值,这里分享给大家。

数据分析需求:

  1. 希望使用Google Analytics分析网站流量,看数据的人并不太懂,但是关注点也不多,一般就想看看基本的流量和KPI数据。由于是B2C电商网站,因此特别关注电商订单数据;由于主要推广方式是Google AdWords和SEO,因此也非常关注流量来源和对应的转化数据。
  2. 希望做再营销和转化跟踪,因此需要部署再营销跟踪代码和转化跟踪代码。主要主要有三大类:注册、下单、支付。由于未启用Google Merchant,因此并不需要做动态再营销,主要做些基础性的用户细分,比如浏览过商品页的用户、进入过购物车的用户、已购买的用户等。
  3. 希望跟踪详细的电子商务订单数据。如:订单数据、订购的商品数据(含SKU、品牌、类别等)。
  4. 希望跟踪每个会员的访问来源和访问频率,主要用来分析每个会员的来源,从而对广告关键词和创意优化提供数据参考。

代码部署步骤:

  1. 使用Google Tag Manager对代码进行管理。记下GTM的代码。
  2. 使用Google Analytics跟踪流量数据,关联AdWords账户,开启autotag,设置目标、站内搜索及其他相关设置。记下配置文件ID。
  3. 开启电商跟踪(由于需求简单并未启用增强型电商跟踪)。根据帮助中心的说明文档,撰写代码部署需求。
  4. 在Google AdWords后台新建3个类型的转化跟踪,在共享库中开启再营销。记下其中的转化ID和转化标签。
  5. 在GA中以user(用户)的层级,新增自定义维度“会员ID”,当用户登陆后记录用户的会员ID;新增额外的两个自定义维度:访客ID、首次访问时间。记下分别对应的序列号。
  6. 在GTM中新增宏:配置文件ID、会员ID、访客ID、首次访问时间、转化跟踪ID(再营销跟踪ID其实与转化跟踪ID是相同的)、转化跟踪标签。其中,访客ID通过先提取_ga的cookie再提取其中的访客id来实现、首次访问时间使用自定义javascript的方式实现(对_ga的cookie进行提取和时间戳转换来实现),会员ID通过在页面添加dataLayer.push的代码,再调用的方式实现。
  7. 在GTM中新增标签:UA(Track Type选择Page View,开启展示广告功能)、电商跟踪(Track Type选择Page View,启用增强型电商功能)、再营销(调用上面建立的转化跟踪ID的宏)、3个不同类型的转化跟踪(调用上面建立的转化跟踪ID的宏,并对3个不同的转化设置不同梯度的价值,如注册成功10,订单生成50,支付成功100)。
  8. 在GTM中设置规则:UA和再营销为所有页面,电商跟踪为event=gtm.js,3个不同类型的转化跟踪分别对应设置的具体页面。

测试方法:

  1. 开启GTM的debug模式,测试没问题之后再发布。
  2. 实时报告查看流量数据,打开关键性的页面看是否有数据产生,通过不同来源进入看来源是否记录正确。
  3. 打开chrome的network,查看是否有相关的数据请求。
  4. 第二天核验数据是否记录正常。

以上,就是一个简单的代码部署实施方案了,没有任何包装。其实还挺费事的,因此朋友给了点小费,2000元,除去沟通和准备工作,零零散散地大概2个小时搞定了。

当然,这个的价值远不止于2000元的,如果你广告投放很多,可能一天、一个星期或者一个月也就省回来了。清晰的数据对于电商运营和广告投放至关重要,毋庸置疑。

如果你也有这方面的需要,并且对上面这些并不了解或了解不透彻或不想深入研究,也可以联系我,预算低于2000元的就算了,不提供免费咨询。

联系QQ:1024549887

Google Analytics实战指南:目标设置

我们从事任何网络营销行为,都是有目的性的。

如果没有,请再反思,直到想清楚之前,不要投入任何的人力物力。

目标从大的层面主要分为宏观转化(macro conversions)和微观目标(micro conversions),对于宏观目标和微观目标的界定,数据分析大师Avanish给了我们非常详细的解释。简单来说,宏观转化就是我们的核心KPI,而微观转化则是完成这些核心KPI之前可能需要进行的一些步骤。比如,对于电子商务网站来说,宏观转化可能是下单,而微观转化则可能包括浏览商品详情、加入购物车、加入收藏夹、点赞分享等操作。如果我们只是单纯地评估订单,一方面数据会相对匮乏,另外一方面我们无法从完成最终转化的较前步骤去着手优化用户体验和广告效果;同时,对于周期或者步骤较长的转化行为,我们将无法从多渠道多路径地评估用户或广告的表现。微观转化能够帮助我们将视野放得更宽广。

在GA里面,我们可以设置大概以下几种转化目标:

  1. 网页转化目标
  2. 访问停留时间转化目标
  3. 每次访问页数转化目标
  4. 事件转化目标
  5. 电子商务订单目标

需要注意的是,GA中所有的目标均是基于访问来计算的,并且一个用户在一次访问内完成了同一个转化目标多次,也只会计算一次(Piwik可以设置在一次访问内触发多次同一个目标)。认识到这点非常重要,特别是在GA的转化漏斗中会很明显地发现这个问题的存在,需要特别注意。

GA的网页转化目标是只看网址中域名之后的部分,即除非你曾经用过滤器将主机名附加到REQUEST URI中,否则在目标设置中就不能使用完整的URL。我们还可以选择URL中的字母是否区分大小写。这些在设置的时候也会有提示。如果目标数据有问题,一般从这两个方面检查下看。

对于网页转化目标,我们还可以设置转化漏斗。通过转化漏斗可以看到用户完成转化前是否按照我们既定的设计路线行走,并且在哪个步骤中断或终止了。当然,GA的转化漏斗也存在比较大的缺陷,比如我们只能看总体流量的转化漏斗,无法在这个报告中应用高级细分,有一个第三方的分析工具paditrack来帮助我们实现这种细分,其实是通过API对底层数据进行了细分再重新绘图来实现的。还有一个比较大的缺陷,由于GA处理漏斗数据是需要用户完全按照我们的预设步骤来进行,而如果用户直接从第一步跳到第三步并完成了转化,或者用户从第一步到第二步再通过第三步完成,这两者出来的数据会是完全一样的,因为它会对中间步骤进行回填。因此,在这种场景下我们可以使用GA的目标流来查看真实的路径走向,不过目标流对数据量有要求,数据量太小它无法展示出来,也会有缺陷。

如果你真的在意个体用户的分析,可能就需要部署更多的自定义维度来代码来获取数据,并且通过API来实现一些报告的展现。GA并不擅长于单个用户的分析,如果你非得这样做,会比较痛苦。

设置上述目标,相对来说1、4、5会相对比较复杂,2和3是比较浅显易懂的。其中注意牵涉到的知识点有:正则表达式的规则写法(推荐阅读《正则表达式30分钟入门教程》)、事件跟踪代码的部署、电子商务跟踪代码的部署。事件跟踪的基本代码如下(参考):

_gaq.push(['_trackEvent', 'Videos', 'Video Load Time', 'Gone With the Wind', downloadTime]);

事件分析是很多分析师所偏爱的一个功能,它能实现的跟踪实在是太多了,比如文件下载、表单提交、站内广告跟踪、导航菜单点击、站内搜索扩展,等等。随便看下各个用了GA的网站,都会看到它的踪影。

对于事件目标,我们可以通过事件类别、事件操作、事件标签的规则条件设置目标,并且可以选择使用动态的事件价值还是固定的事件价值来作为事件目标价值。

当然,对于一般简单的网站分析来说,我们可能并不需要用到正则表达式,只需要使用简单的等于、不等于、包含、不包含、以…开头、以…结尾之类的预置条件即可。

用过Piwik的同学可能知道,Piwik可以通过代码执行的方式来触发目标。虽然在GA的后台配置和代码配置中是不支持这种做法,但是我们可以通过程序或GTM控制代码的执行+事件跟踪目标来实现。

现在,GA的目标设置在体验和使用引导方面也下了不少功夫,比如可以进行分享或者导入库中的目标进行修改,提示语,目标设置的数据验证等。个人比较烦的一点是,关闭了计数的目标依然在前端显示。而由于它最多可以设置20个目标,当我们使用了较多之后,报告中的下拉框就会比较长。因此,建议设置目标的时候谨慎些,不要改来改去的,一方面会造成数据的偏差,另外也会给我们的使用和管理带来一定的不便。

 

 

Google Analytics实战指南:自定义自然搜索来源

Google Analytics(特指Universal Analytics),默认情况下对于中国的(或者说本土化的)搜索引擎识别并未不全面,在默认情况下,如果你不进行额外的配置,则这些未被识别的搜索引擎流量会被计算为引荐来源。

在新版本的GA中,我们并不需要像老版本的那样去添加额外的跟踪代码,我们只需要在设置中心进行设置即可,非常的方便。

在进入配置之前,我们首先要了解一个流量来源的识别机制。我们可以细化成来源和媒介。

来源顾名思义就是用户从哪里来的。GA会将来源信息进行精简,比如只显示引荐网址的主域名,搜索引擎的名称等。

GA判断媒介的唯一根据便是请求数据中的完整引荐网址(即document.referrer)

  1. 如果该引荐网址不存在,则被判定为直接流量(none)
  2. 如果引荐来源中带有cpc这种特定的标识参数或者带有AdWords随机生成的广告标记,则会判定为付费搜索(cpc)
  3. 如果是来自某个系统可识别的搜索引擎,并且未添加参数标记且未启用adwords的自动标记,则会被识别为自然搜索(organic)
  4. 如果使用了网址构建器添加相应的参数,则是添加的参数(如utm_medium=cpm)
  5. 其他非空值则为(referral)

那么,我们如何来检验当前流量的来源和媒介呢?

  1. 使用Chrome浏览器,打开网站,按下F12,选择network的选项卡。
  2. 查找collect?这个请求,点击打开,你会看到类似这种字符串,其中的utmcsr即代表来源,而utmcmd则代表媒介,utmcsr%3D(direct)%7Cutmccn%3D(direct)%7Cutmcmd%3D(none)

如果你觉得这样有点太麻烦或者太难了,查看实时报告也是一个不错的方法。

另外,Chrome浏览器也有一些扩展程序可以很方便地帮助我们了解当前流量的来源/媒介,比如Google Analytics Debugger,安装后按下F12打开console选项卡即可看到被解析出来的数据。

上面这些方法经常应用于我们对异常数据的模拟和检测,或者测试数据,有必要参考去实践一下。

如何自定义自然搜索来源?参照帮助中心的这篇文章即可,最后设置完的效果如下图所示,你可能需要根据引荐来源中未被正确识别的流量进行一些调整:

organic search sources

Google Analytics实战指南:序言

将博客迁移到了Linode(欢迎使用推荐码:6226223ca39970b7ee1b06b3c79015a9b80aef88),这段时间也大概地学了些Linux基本知识,加上工作繁忙,暂停了更新,现在重新开始。

进入正题,《Google Analytics实战指南》系列文章,关于Google Analytic的一些经验总结和学习心得。

首先,看到这篇文章说明你做了一个明智的选择,Google Analytics(以后简称GA)是一个免费的数据分析工具,但是其功能在大多数情况下并不逊色于大多数的商业分析工具,并且如果你真正掌握了GA,学习其他分析工具也会很快。

我们这里不谈国内的流量统计工具,这些都不是真正意义上的分析工具,目前还只是停留在流量统计层次,落后了不知道几条街。其他的工具,你可能暂时没有机会能用上,动辄十几万的工具使用费毕竟不是每个公司都能承受的,新人可能也很少有机会能接触到。

其次,学习GA的最好方法是实践。推荐每个有志成为数据分析师的同学都建立一个个人网站,一年百来块钱的成本远比你啥都不懂去上动辄千元的培训课程更有价值和意义。通过自己的不断折腾,你将会了解到代码部署的基本方法,了解到趋势对比这种基本的分析方法,了解到不同指标的权威定义。

如果你很细心,会发现很多看起来很奇怪的数据,而如果你对这些奇怪的现象进行深入了解和分析,你已经具备了数据分析师的基本精神:怀疑、探索和发现。同时,也能进一步加深对数据的理解。

实践并不代表凡事身体力行,毕竟不是每个人都是技术出身,在公司做数据分析,你可能需要跟技术人员进行深入沟通,让他们帮你部署代码,而你则需要整理好相关文档,将最终要实现的效果告诉他。尽可能多了解一些编程技术也是加分项,比如最基础的html和javascript,以及基本的PHP等。

再次,帮助中心是最好的学习教材(没有之一)。有志于深入学习GA的同学,花点时间学完帮助中心的内容,学完之后你的理论储备将会有质的飞跃,在理解的基础上进行一定的实践操作,完了拿下GAIQ个人认证证书应该是没有太大问题了。

最后,请不要沉迷于分析工具本身,自我陶醉于自己的各种高级设置和代码部署。工具必须服务于你的分析需求,一定要清楚地认识到自己的分析目的,然后围绕这个目标进行后台配置、代码部署、报告定制。千万不能因为别人这么做了,你也这样做,独立思考非常重要。

以下,我们先在WordPress博客程序当前主题的header.php的</head>前加上GA提供的默认跟踪代码,算是开始了,未完待续。

<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-45111607-1', 'auto');
  ga('send', 'pageview');

</script>