forked from growingio/help_site
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
Showing
785 changed files
with
14,574 additions
and
0 deletions.
There are no files selected for viewing
Empty file.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,17 @@ | ||
# Node rules: | ||
## Grunt intermediate storage (http://gruntjs.com/creating-plugins#storing-task-files) | ||
.grunt | ||
|
||
## Dependency directory | ||
## Commenting this out is preferred by some people, see | ||
## https://docs.npmjs.com/misc/faq#should-i-check-my-node_modules-folder-into-git | ||
node_modules | ||
|
||
# Book build output | ||
_book | ||
|
||
# eBook build output | ||
*.epub | ||
*.mobi | ||
fabfile.pyc |
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,91 @@ | ||
# 智能路径 | ||
|
||
##简介 | ||
「智能路径」是基于GrowingIO全量数据采集,以及机器学习技术而设计的功能模块。在「智能路径」中您只需要选择「转化目标」即可获得用户真实的转化路径。帮助您了解用户的访问轨迹,以及更好的使用GrowingIO漏斗转化功能进行对转化路径的剖析。 | ||
|
||
## 什么是路径? | ||
「智能路径」中的路径是指用户在转化过程中经过的节点串联而成的用户行为轨迹。这些节点之间具有严格的先后顺序,但是不要求彼此相邻。也就是说,两个看似相邻的步骤中间可能夹杂着其他的用户行为。 | ||
|
||
这样处理是因为用户在真实访问时时会有很多的回环,以及频繁的交互操作(例如:频繁的点击)。GrowingIO智能的过滤掉了这些情况,只留下关键的必经节点。帮助您分析关键节点之间的用户流失情况。 | ||
|
||
## 使用简介 | ||
在一部分的内容中,我们将介绍如何快速上手智能路径,助力您的转化分析。 | ||
### Step1.输入您的转化目标 | ||
**您需要确认您的「转化目标」,并且将这个目标输入到智能路径的输入框内。**「转化目标」通常是某一块功能或者业务中需要引导用户完成的目标。例如:电商业务中的「加入购物车」可以作为阶段性的目标。「支付成功」作为最终的转化目标。注册流程中的「完成注册」也可以作为转化目标来进行分析。 | ||
|
||
**<font color=darkblue>注意:如果您是刚刚接入GrowingIO的用户,在使用「智能路径」帮助您分析之前,需要对您的转化目标进行「圈选」。</font>**具体请参看[功能介绍-圈选](https://docs.growingio.com/Features/circle.html)。 | ||
|
||
![](/assets/Path Finder GrowingIO.jpg) | ||
|
||
|
||
您可以在上图中所示的位置输入转化目标,并且点击「计算」按钮,GrowingIO就会根据您的用户行为数据开始探索转化路径了。 | ||
|
||
除此之外,我们还提供了高级设置项帮助您更好的得到想要的结果: | ||
|
||
* **必须经过的步骤**:选择一个转化路径中必须经过的步骤,这个步骤可以出现在除去转化目标的任意位置 | ||
|
||
* **仅含页面打开 OR 包含步骤点击**:该选项帮助您选择路径中的节点的属性,当选择「仅含页面打开」的时候,输出的结果将只有页面步骤。例如:页面1->页面2->页面3->目标 | ||
|
||
|
||
### Step2.选择您想要的转化路径 | ||
在发起计算之后,您将会得到基于您选择的转化目标生成的访问路径。例如这样: | ||
![ | ||
![](/assets/WechatIMG2.jpeg)](/assets/WechatIMG14.jpeg) | ||
|
||
您可以通过查看节点的详情(点击具体的节点)以及确认节点的顺序,来检查路径是否符合您的预期。选择您需要的转化路径,就可以点击右侧的「创建漏斗」将该路径保存为「漏斗」来进行更为细致的多维度分析了。 | ||
|
||
### Step3.保存为漏斗 | ||
点击「创建漏斗」之后,就会出现相应的漏斗界面。您可以输入一个漏斗的名称然后进行保存。 | ||
![![](/assets/WechatIMG3.jpeg)](/assets/WechatIMG13.jpeg) | ||
|
||
<font color=darkblue>需要注意的是:当您的漏斗中有尚未圈选的步骤,您不能立即查看到具体的步骤人数和转化率。因为该指标需要进行相应的「数据回溯」。您可以在漏斗界面上直接修改该指标的名称,也可以进入到「指标管理」中进行修改。</font> | ||
|
||
|
||
至此,您就可以完成从发现转化路径,到进行转化分析的全部过程了。 | ||
|
||
|
||
##常见问题 | ||
###Q:智能路径的计算方法是什么? | ||
A:从最近7天的访问数据中,筛选出完成过转化目标的访客,再从其中抽取部分访客计算出完成转化经过的步骤(即各条转化路径),将其中比较频繁的转化路径展示出来。 | ||
|
||
###Q:计算基于的数据周期是什么? | ||
A:使用发起计算时最近7天的数据进行计算。 | ||
|
||
###Q:是基于全量数据还是抽样数据计算? | ||
A:为了实现实时出数据,采用的是抽样的计算方式。 | ||
|
||
###Q:为什么今天计算和昨天计算的结果不一样? | ||
A:因为抽取最近7天的数据,不同发起计算的日期使用的抽样池是不一样的。有时候会出现不同日期计算结果不一样的情况。 | ||
|
||
###Q:“65%”的转化行为通过这样的路径发生——这里百分比的含义是什么? | ||
A:在抽样的访次(session)中,有65%的访次中,依次包含本条路径中的各个步骤。 | ||
注意:只要依顺序包含即可,不要求各个步骤的完成是紧邻的。 | ||
|
||
###Q:为什么各条路径百分比之和不等于100%? | ||
A:路径不是互斥的。比如一个访客一次访问经过了ABCD 4个步骤,同时符合按照“A-B-C”、“A-C-D”“A-B-C-D”三条路径完成转化的条件,因此在3条路径中都会计入,所以各条路径的占比加起来不是100%。 | ||
|
||
###Q:抽样方法具体是怎样的? | ||
A:从最近7天的行为数据中,随机抽取400个满足条件的访问者。如果最近7天所有满足条件的访问者不满200次,就按实际的访次数量计算,不再追溯更早的周期。 | ||
|
||
###Q:所有转化路径都会被展示出来吗? | ||
A:不是。为了揭示用户共性的转化路径(做成漏斗才有长期的分析意义),因此仅提供频繁度达到一定阈值的路径。 | ||
|
||
###Q:为什么我计算不出来结果? | ||
A: | ||
计算不出结果有以下几类情况: | ||
1)符合条件的用户数量太少,无法抽取出共性的转化路径; | ||
2)页面结构(url等)比较杂乱,无法抽取出明晰的路径; | ||
3)转化目标选择的指标圈选得有问题; | ||
4)用户完成转化的路径不集中,比较分散(比如有多个入口都可以到达某个转化目标,且没有哪个入口是大部分用户偏好使用的) | ||
|
||
建议选择有一定用户量、确实有业务含义的核心的指标作为转化目标来计算。 | ||
|
||
###Q:为什么我计算出的路径与预期的相比,只包含了一部分步骤? | ||
A:以电商客户为例,选择支付成功作为转化目标,有时只能计算出包含结算最后几个步骤的路径,是因为之前的用户行为分散导致的(用户可以通过各种入口途径到达购物车)。 | ||
遇到这种情况,可以尝试通过在高级设置里,将某个入口设置为“必须经过的步骤”,来得到特定的转化路径。 | ||
|
||
###Q:为什么我选择创建漏斗,有些步骤没有数据? | ||
A:因为这些步骤没有被圈选过,需要一定时间回溯数据。您可以将漏斗方案进行保存,指标数据会自行回溯。 | ||
|
||
###Q:列出来的页面标题是出现频次最高的标题吗? | ||
A:不是,是随机抽取的0-3个标题 |
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,3 @@ | ||
# API | ||
|
||
GrowingIO为数据导出提供了丰富的API,支持用户进行分析数据的导出和原始数据的导出。 |
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,248 @@ | ||
#属性数据(CS)上传服务说明文档 | ||
##属性数据简介 | ||
属性数据(CS字段)可以更好的帮助您进行基于用户的数据分析。我们提供了cs1-cs20的共20个字段,用于自定义的上传用户相关属性。上传这些属性可以帮助您做到:区分访问用户与注册用户,更精确的统计用户数量,进行跨平台分析,更详细的进行用户画像...... 除此以外,我们将有更多的新功能基于属性数据进行构架。上传属性数据,可以帮助您更好的进行数据分析,实现增长。<font color=green>**在上传成功之后,请联系在线客服,我们会为您配置并且激活相应的属性字段。 | ||
|
||
注:属性数据(CS)当前只适用于上传用户的属性,不能用于其他类型数据的上传。例如:订单ID,商品ID... | ||
|
||
##数据优先级 | ||
SDK采集的CS属性 > 用户属性数据CS1-CS10 >公司属性数据CS2-CS10 | ||
即:如果您在 SDK,用户属性数据(User数据),公司属性数据(Company数据)中都上传了同一个字段,以SDK中上传的为准 | ||
|
||
##接口说明 | ||
为了接口安全,我们会为您分配三个认证字段: | ||
* projectKeyId: 由GrowingIO分配给您的项目ID. <font color=red>使用管理员及以上权限登录在项目管理中可以看到项目ID</font>. 也简称为ai | ||
* secretKey: 由GrowingIO分配给您的项目的传输用私钥 | ||
* publicKey: 由GrowingIO分配给您的项目的传输用公钥 | ||
|
||
此key分配后,联调测试通过后才会正式环境上启用。 | ||
|
||
## <font color=red>接口联调测试 | ||
请使用地址:<font color=red>testdata.growingio.com</font> 替换文档中 data.growingio.com 来进行联调测试。 | ||
|
||
##用户属性数据上传接口 | ||
协议:HTTPS | ||
方法:POST | ||
URL:https://data.growingio.com/saas/{projectKeyId}/user?auth={auth_token, 算法参见后续文档} | ||
|
||
Headers: | ||
* Access-Token = publicKey | ||
* Content-Type = application/json | ||
|
||
|
||
数据: | ||
|
||
| 字段名 | 类型 | 说明 | | ||
| -- | -- | -- | | ||
| cs1 | string | 唯一标示一个注册用户的ID | | ||
| cs2 | string | Saas企业建议传递客户公司的唯一ID | | ||
| cs3 | string | 自定义,上传后对数据生效 | | ||
| cs4 | string | 自定义,上传后对数据生效 | | ||
| cs5 | string | 自定义,上传后对数据生效 | | ||
| cs6 | string | 自定义,上传后对数据生效 | | ||
| cs7 | string | 自定义,上传后对数据生效 | | ||
| cs8 | string | 自定义,上传后对数据生效 | | ||
| cs9 | string | 自定义,上传后对数据生效 | | ||
| cs10 | string | 自定义,上传后对数据生效 | | ||
| cs11 | double | 自定义,覆盖历史数据生效 | | ||
| cs12 | double | 自定义,覆盖历史数据生效 | | ||
| cs13 | double | 自定义,覆盖历史数据生效 | | ||
| cs14 | double | 自定义,覆盖历史数据生效 | | ||
| cs15 | double | 自定义,覆盖历史数据生效 | | ||
| cs16 | string | 自定义,覆盖历史数据生效 | | ||
| cs17 | string | 自定义,覆盖历史数据生效 | | ||
| cs18 | string | 自定义,覆盖历史数据生效 | | ||
| cs19 | string | 自定义,覆盖历史数据生效 | | ||
| cs20 | string | 自定义,覆盖历史数据生效 | | ||
|
||
|
||
备注: | ||
* 上传后对数据生效:不会覆盖历史数据,当用历史数据进行分析时,CS字段的值仍保留历史时间的值 | ||
*举例:在2014-2015年,CS3的值为A,当前值为B。当对2014-2015年的数据进行分析时,CS3值为A * | ||
|
||
* 覆盖历史数据生效:会以当前的字段值覆盖历史上的所有值,不保留历史数据 | ||
|
||
|
||
* <font color=red>对于未登陆用户(访客用户),请不要上传用户ID(例如:userid:0),以及其他属性字段 | ||
|
||
* <font color=red>对于注册用户,请不要漏传某些字段。</font> | ||
*举例:cs3字段代表手机号码,一部分用户没有手机号码。请上传「无」「-」...等方便您自己辨识意义的字符 * | ||
|
||
|
||
格式: | ||
一次上传多条记录: | ||
举例: | ||
```js | ||
[ | ||
{ | ||
"cs1": "user_id:12345", | ||
"cs2": "tenant_id:67890", | ||
"cs3": "rep_id:13579" | ||
}, | ||
{ | ||
"cs1": "user_id:12346", | ||
"cs2": "tenant_id:67891", | ||
"cs3": "rep_id:13580" | ||
}, | ||
... | ||
] | ||
``` | ||
|
||
一次上传单条记录: | ||
举例: | ||
```js | ||
{ | ||
"cs1": "user_id:12346", | ||
"cs2": "tenant_id:67891", | ||
"cs3": "rep_id:13580" | ||
} | ||
``` | ||
数据大小:单个请求上传的数据包总大小不超过1MB,内含json对象不超过100个 | ||
|
||
返回值(status code): | ||
成功: | ||
* 200, message = “Data uploaded.” | ||
|
||
失败: | ||
* 400 | ||
message = “Authentication failed.” | ||
message = “Request too large.” | ||
message = “Project not found.” | ||
|
||
|
||
|
||
## 公司属性数据上传接口(SaaS企业适用) | ||
|
||
您可以使用该接口上传相关的公司和用户属性,并且在 SDK 中上传cs1,cs2字段。这样我们就能够将您上传的数据进行绑定。运用这样的方式能够大大提高您的上传效率,减少您发送的数据量。 | ||
|
||
协议:HTTPS | ||
方法:POST | ||
URL:https://data.growingio.com/saas/{projectKeyId}/company?auth={auth_token, 算法参见后续文档} | ||
|
||
Headers: | ||
Access-Token = publicKey | ||
Content-Type = application/json | ||
数据: | ||
|
||
| 字段名 | 类型 | 说明 | | ||
| -- | -- | -- | | ||
| cs2 | string | Saas企业建议传递客户公司的唯一ID | | ||
| cs3 | string | 自定义,上传后对数据生效 | | ||
| cs4 | string | 自定义,上传后对数据生效 | | ||
| cs5 | string | 自定义,上传后对数据生效 | | ||
| cs6 | string | 自定义,上传后对数据生效 | | ||
| cs7 | string | 自定义,上传后对数据生效 | | ||
| cs8 | string | 自定义,上传后对数据生效 | | ||
| cs9 | string | 自定义,上传后对数据生效 | | ||
| cs10 | string | 自定义,上传后对数据生效 | | ||
| cs11 | double | 自定义,覆盖历史数据生效 | | ||
| cs12 | double | 自定义,覆盖历史数据生效 | | ||
| cs13 | double | 自定义,覆盖历史数据生效 | | ||
| cs14 | double | 自定义,覆盖历史数据生效 | | ||
| cs15 | double | 自定义,覆盖历史数据生效 | | ||
| cs16 | string | 自定义,覆盖历史数据生效 | | ||
| cs17 | string | 自定义,覆盖历史数据生效 | | ||
| cs18 | string | 自定义,覆盖历史数据生效 | | ||
| cs19 | string | 自定义,覆盖历史数据生效 | | ||
| cs20 | string | 自定义,覆盖历史数据生效 | | ||
|
||
格式:序列化的json对象 | ||
举例: | ||
```js | ||
[ | ||
{ | ||
"cs2": "tenant_id:67890", | ||
"cs3": "rep_id:13579", | ||
}, | ||
{ | ||
"cs2": "tenant_id:67891", | ||
"cs3": "rep_id:13580", | ||
}, | ||
... | ||
] | ||
``` | ||
也支持单个json对象,例如 | ||
```js | ||
{ | ||
"cs2": "tenant_id:67891", | ||
"cs3": "rep_id:13580", | ||
} | ||
``` | ||
|
||
|
||
## auth_token的计算方式 | ||
|
||
|
||
* projectKeyId: 由GrowingIO分配给您的项目ID | ||
|
||
* secretKey:由GrowingIO分配给您的私钥 | ||
* keyArray: | ||
* 对于一次上传多条记录时,取多条数据中的每个对象的主键的值(User接口为CS1,Company接口为CS2),并用逗号连接成为一个字符串 | ||
* 对于一次上传单条记录时,取该对象的主键的值(User接口为CS1,Company接口为CS2) | ||
|
||
Java: | ||
```java | ||
public String authToken(String projectKeyId, String secretKey, String keyArray) throws Exception { | ||
String message = "ai="+projectKeyId+"&cs="+keyArray; | ||
Mac hmac = Mac.getInstance("HmacSHA256"); | ||
hmac.init(new SecretKeySpec(secretKey.getBytes("UTF-8"), "HmacSHA256")); | ||
byte[] signature = hmac.doFinal(message.getBytes("UTF-8")); | ||
return Hex.encodeHexString(signature); | ||
} | ||
``` | ||
|
||
|
||
Scala: | ||
```scala | ||
def authToken(projectKeyId: String, secretKey: String, keyArray: String): String = { | ||
val message = s"ai=$projectKeyId&cs=$keyArray" | ||
val hmac: Mac = Mac.getInstance("HmacSHA256") | ||
hmac.init(new SecretKeySpec(secretKey.getBytes("UTF-8"), "HmacSHA256")) | ||
val signature = hmac.doFinal(message.getBytes("UTF-8")) | ||
Hex.encodeHexString(signature) | ||
} | ||
``` | ||
|
||
Python: | ||
```python | ||
#coding:utf-8 | ||
import hashlib | ||
import hmac | ||
|
||
def authToken(projectKeyId,secretKey,keyArray): | ||
message = ("ai=" + projectKeyId + "&cs=" + keyArray).encode('utf-8') | ||
signature = hmac.new(bytes(secretKey.encode('utf-8')), bytes(message), digestmod=hashlib.sha256).hexdigest() | ||
return signature | ||
|
||
``` | ||
|
||
PHP: | ||
```php | ||
function authToken($projectKeyId, $secretKey, $keyArray) | ||
{ | ||
$message="ai=".$projectKeyId."&cs=".$keyArray; | ||
return hash_hmac('sha256',$message, $secretKey, false); | ||
} | ||
``` | ||
|
||
|
||
举例:对于上述的json | ||
```js | ||
{ | ||
"cs1": "user_id:12346", | ||
"cs2": "tenant_id:67891", | ||
"cs3": "rep_id:13580" | ||
} | ||
``` | ||
|
||
对应keyArray 的值是**<font color=red>user_id:12346</font>** | ||
|
||
|
||
|
||
##用户属性字段的新增和修改说明 | ||
以下情况下,您需要联系我们的客户服务人员进行配合,帮助您进行字段的新增和修改: | ||
1. 新增任何一个CS字段 | ||
2. 对任何一个CS字段的名称和意义进行修改 | ||
3. 对CS字段的值进行重新传输 | ||
|
||
|
||
**<font color=red>注:当您对新应用上传所属项目下的相同字段时,不需要重新进行配置。** |
Empty file.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,31 @@ | ||
# GrowingIO数据平台API | ||
|
||
### ChangeLog | ||
|
||
2017-02-21 增加打点原始数据导出 | ||
1. visit数据增加新字段lat, lng, 为mobile平台采集的gps信息 | ||
2. 增加打点数据的导出,具体格式参考custom_attr表字段说明 | ||
|
||
#### 2016-09-08 增加访问级别的query与ps页面信息字段 | ||
1. 在visit级别增加新字段query,用于提取用户访问时的utm字段信息 | ||
2. 在page级别增加新字段pagegroup, ps1~ps10,对应sdk采集时设置的页面信息字段 | ||
|
||
|
||
|
||
#### 2016-08-09 导出数据增加action_tag与rules两张数据表 | ||
1. 导出数据中增加action_tag数据,用于关联action级别数据中的action_id与rule_id字段 | ||
2. rules表用于关联rule_id与rule名称,便于进一步分析GrowingIO平台圈选的标签数据 | ||
3. action_tag与之前的导出数据接口一致,在获取的下载链接中多出action_tag一项,而rules需要通过额外接口获取 | ||
|
||
|
||
#### 2016-07-30 在action级别数据中增加字段index,info。 | ||
1. index用于标记列表中的第几项项目,为bigint类型 | ||
2. info用于用户自定义添加的标识信息,string类型,对应数据采集时growingAttributesInfo定义的属性 | ||
3. 此次修改仅在action级别增加字段信息,visit与page不受影响 | ||
|
||
|
||
#### 2016-06-05 | ||
|
||
1. 认证的时候需要传入 tm 参数,tm 是当前时间戳(**毫秒**) | ||
2. insights API 支持传入 expire 参数,来控制链接过期时间,默认 5 分钟。 | ||
3. insights API 可以请求小时数据,比如 2016060510,表示获取6月5号10点到11点的数据。 |
Oops, something went wrong.