在数字环境中,用户行为多样,包括 App 安装、网站访问、购买、订阅、预约等。Airbridge 只能收集定义为 “Airbridge 事件” 的用户行为。定义 Airbridge 事件需要定义其构成要素。Airbridge 事件分为 2 类:标准事件(Standard Event)和自定义事件(Custom Event)。不同事件类型可定义的要素范围不同。
Airbridge 事件由 Category、Action、Label、Value 和 Attribute 构成。
构成要素 | 数据格式 | 说明 |
---|---|---|
Category | string | - 必备要素。 - 作为事件名称,也是回传发送单位。 - 标准事件使用预定义的 Category。 |
Action、Label | string | - 用于收集事件属性。 - 收集到的数据可在 Airbridge 报告中查看。 |
Value | float | - 通过 Value 收集的数据可用于计算。 |
Attribute | 根据 Attribute 而异 | - 用于收集除通过 Action 和 Label 收集的属性以外的事件属性。 - 收集到的数据无法在 Airbridge 报告中查看,但可以通过导出原始数据查看。 - Attribute 有 2 类:Semantic Attribute 和 Custom Attribute。Semantic Attribute 是 Airbridge 预定义的收集对象事件属性,而 Custom Attribute 则是您可以自定义的收集对象事件属性。 |
Category 是 Airbridge 事件的名称,是定义 Airbridge 事件时必须包括的构成要素。Category 也是向广告渠道发送 回传 的基本单位。
Airbridge 事件根据 Category 是否预定义分类为标准事件和自定义事件。标准事件使用 Airbridge 预定义的 Category,自定义事件的 Category 则您可以自定义。
作为 Category 的事件名称必须遵守以下规则:
所有事件名称区分英文大小写。
标准事件使用 Airbridge 预定义的英文事件名称。
自定义事件的事件名称只能包含英文大小写字母、数字、_
,但不能以 airbridge.
为前缀。最多可包含 128 个字符。
对通过 Category 收集的数据适用以下限制:
不收集包含不符合数据格式的事件。Category 的数据格式为 string。
如果数据超出 128 个字符,仅收集至第 128 个字符。
设为 Category 的事件名称将在 Airbridge 报告中显示为指标,您可以选择指标查看事件的发生次数。同时,“Category” 也会作为分组和筛选条件显示在报告中。此外,Category 数据可以在 Airbridge 面板中的 [原始数据] 查看。
您可以定义 Action 和 Label 收集可以在 Airbridge 报告中查看的 2 个事件属性。
可以通过 Action 和 Label 收集的属性
您可以通过 Action 和 Label 自由收集事件属性。“Action” 和 “Label” 这两个术语与具体收集的属性无关。例如,Action 不仅限于收集用户行为相关的属性。
Action 和 Label 必须遵守以下规则:
只能包含英文大小写字母(区分大小写)、数字、空格和特殊字符(?
, !
, ,
, .
, /
, &
, (
, )
, -
, _
),但我们建议特殊字符仅使用 _
。
最多可包含 128 个字符。
对通过 Action 和 Label 收集的数据适用以下限制:
不收集包含不符合数据格式的事件。Action 和 Label 的数据格式为 string。
如果数据超出 128 个字符,仅收集至第 128 个字符。
您可以在 Airbridge 报告中使用 Action 和 Label 作为分组或筛选条件查看数据。Action 和 Label 数据还可以在 Airbridge 面板中导出 [原始数据] 查看。
为了将 Airbridge 事件中收集到的数字用于计算,必须通过 Value 来收集这些数字。只有通过 Value 收集的数字才能用于计算。例如,在 收入报告 中,为了通过相加所有售出产品的价格得出总销售额,必须使用 Value。Value 可以收集到小数点后 9 位的数字。
通过 Value 收集的数字可以用于计算。相反,通过 Action 或 Label 收集的数字无法用于计算,但可以用于查看 事件发生频次。
如下收集 “订单完成(Order Complete)” 事件时,Airbridge 可以通过累加 Value 值在 Airbridge 报告中提供 “30,000” 的数值;同时可以提供订单完成事件中,值为 “1,000” 的 Action 发生了 2 次,值为 “100” 和 “200” 的 Label 各发生了 1 次。
Category | Action | Label | Value |
---|---|---|---|
| 1,000 | 100 | 10,000 |
| 1,000 | 200 | 20,000 |
对通过 Value 收集的数据适用以下限制:
不收集包含不符合数据格式的事件。Value 的数据格式为 float。
如果数字长度超过小数点后 9 位,仅收集至小数点后第 9 位的数字。
注意
通过 Attribute 收集的数据无法在 Airbridge 报告中查看。若需在 Airbridge 报告中查看数据,请通过 Action 或 Label 进行收集。
您可以定义 Attribute 收集除通过 Action 和 Label 收集的属性以外的事件属性。与 Action 和 Label 不同,通过 Attribute 收集的数据只能通过导出原始数据查看,而不能在 Airbridge 报告中查看。
Attribute 有 2 类:
Semantic Attribute:Airbridge 预定义的收集对象事件属性
Custom Attribute:您可以自定义的收集对象事件属性
Semantic Attribute 是 Airbridge 预定义的收集对象事件属性。请参见:
名称 | 数据格式 | 键 | 说明 |
---|---|---|---|
Currency | string |
| 在 Airbridge 面板设置的货币(3 位字货币代码)。 |
Currency (Original) | string |
| 原始数据的货币(3 位字货币代码)。 |
Product List | array |
| 产品列表。请参见 示例。 |
Product ID | string |
| 产品列表中第一个产品的 ID。 |
Product Name | string |
| 产品列表中第一个产品的名称。 |
Product Price | float |
| 产品列表中第一个产品的价格。 支持负数,可用于退款或换货。 |
Product Quantity | int |
| 产品列表中第一个产品的数量。 |
Product Currency | string |
| 产品列表中第一个产品的价格所使用的 3 位字货币代码。 |
Product Position | int |
| 产品列表中第一个产品的定位。 |
Product Category ID | string |
| 包含产品列表中第一个产品的 Category ID。 |
Product Category Name | string |
| 包含产品列表中第一个产品的 Category 名称。 |
Product Brand ID | string |
| 产品列表中第一个产品的品牌 ID。 |
Product Brand Name | string |
| 产品列表中第一个产品的品牌名称。 |
Period | string |
| 期间(ISO 8601 格式)。 例:P7D、 P1M、 P6M、 P1Y |
Is Renewal Event | boolean |
| 是否续订。 |
Renewal Count | int |
| 续订次数。 |
Product List ID | string |
| 产品列表 ID。 |
Cart ID | string |
| 购物车 ID。 |
Transaction ID | string |
| 交易 ID。 |
Transaction Type | string |
| 交易类型,提供您设置的交易类型。 当交易取消时,始终记录为 |
Transaction Paired Event Category | string |
| 交易相关事件的 Category。 当取消购买事件发生时,您可以查看相关购买事件的信息。 |
Transaction Paired Event Timestamp | int |
| 交易相关事件发生的时间。13 位数字的时间戳(ms)。 |
Total Quantity | int |
| 总数量。 将从产品列表中收集的数量总和自动收集,无需单独定义。 |
Search Query | string |
| 用户要求的查询。 |
In App Purchased | boolean |
| 是否应用内购买。 - - |
Contribution Margin | float |
| Airbridge 面板中设置货币基准的边际贡献收入。 边际贡献收入是收入减去可变成本所得,非由 Airbridge 计算。 |
Contribution Margin (Original) | float |
| 原始数据货币基准边际贡献收入。 边际贡献收入是收入减去可变成本所得,非由 Airbridge 计算。 |
List ID | string |
| 列表 ID。 |
Rate ID | string |
| 评分 ID。 |
Rate | float |
| 评分。 |
Max Rate | float |
| 最高评分。 |
Achievement ID | string |
| 成就 ID。 |
Shared Channel | string |
| 分享渠道。 |
Date Time | string |
| 日期和时间(ISO-8601 格式)。 |
Description | string |
| 详情。 |
Is Revenue Event | boolean |
| 是否收入相关事件。 - - |
Place | string |
| 地点。 |
Schedule ID | string |
| 日程 ID。 |
Type | string |
| 类型。 |
Level | string |
| 等级。 |
Score | float |
| 得分。 |
// Example code for semanticAttributes
airbridge.events.send("purchase_card", {
semanticAttributes: {
transactionID: '1458132a-0d09-4944-a686-fcbee81b74f7',
products: [{
productID: "1234",
name: "Nike 1",
price: 55,
currency: "USD",
quantity: 1
}, {
productID: "1235",
name: "Nike 2",
price: 44,
currency: "USD",
quantity: 1
}]
}
});
#import <AirBridge/ABInAppEvent.h>
ABInAppEvent* event = [[ABInAppEvent alloc] init];
[event setCategory:@"purchase_card"];
NSDictionary* semantics = @{
@"transactionID": @"1458132a-0d09-4944-a686-fcbee81b74f7",
@"products": @[@{
@"productID": @"1234",
@"name": @"Nike 1",
@"price": @55,
@"currency": @"USD",
@"quantity": @1,
}, @{
@"productID": @"1235",
@"name": @"Nike 2",
@"price": @44,
@"currency": @"USD",
@"quantity": @1,
}],
};
[event setSemantics:semantics];
[event send];
let event = ABInAppEvent()
event?.setCategory("purchase_card")
let semantics: [String: Any] = [
"transactionID": "1458132a-0d09-4944-a686-fcbee81b74f7",
"products": [[
"productID": "1234",
"name": "Nike 1",
"price": 55,
"currency": "USD",
"quantity": 1,
], [
"productID": "1235",
"name": "Nike 2",
"price": 44,
"currency": "USD",
"quantity": 1,
]]
]
event?.setSemantics(semantics)
event?.send()
Map<String, Object> product1 = new HashMap<>();
product1.put("productID", "1234");
product1.put("name", "Nike 1");
product1.put("price", 55);
product1.put("currency", "USD");
product1.put("quantity", 1);
Map<String, Object> product2 = new HashMap<>();
product1.put("productID", "1235");
product1.put("name", "Nike 2");
product1.put("price", 44);
product1.put("currency", "USD");
product1.put("quantity", 1);
List<Map<String, Object>> products = new ArrayList<>();
products.add(product1);
products.add(product2);
Map<String, Object> semanticAttributes = new HashMap<>();
semanticAttributes.put("transactionID", "1458132a-0d09-4944-a686-fcbee81b74f7");
semanticAttributes.put("product", products);
Airbridge.trackEvent(
"purchase_card", // Category
null, // Action
null, // Label
null, // Value
null, // Custom Attributes
semanticAttributes // Semantic Attributes
);
Airbridge.trackEvent(
category = "purchase_card",
semanticAttributes = mapOf(
"transactionID" to "1458132a-0d09-4944-a686-fcbee81b74f7",
"products" to mapOf(
"product" to listOf(
mapOf(
"productID" to "1234",
"name" to "Nike 1",
"price" to 55,
"currency" to "USD",
"quantity" to 1
),
mapOf(
"productID" to "1235",
"name" to "Nike 2",
"price" to 44,
"currency" to "USD",
"quantity" to 1
)
)
)
)
)
您可以如下发送产品列表:
airbridge.events.addedToCart({
products: [
{
productID: "1",
name: "MacBook Pro",
price: 1500000,
quantity: 3
},
{
productID: "2",
name: "MacBook Air",
price: 1500000,
quantity: 2
}
],
cartID: "73926365"
});
Airbridge 将如下收集产品列表。如果通过产品列表收集 quantity
,totalQuantity
将作为 quantity
值的总和自动收集。
{
"totalQuantity": 5, // Total quantity of items are automatically summed
"cartID": "73926365",
"products": [
{
"quantity": 3,
"productID": "1",
"price": 1500,
"name": "MacBook Pro",
"currency": "USD",
"position": 1
},
{
"quantity": 2,
"productID": "2",
"price": 1500,
"name": "MacBook Air",
"currency": "USD",
"position": 2
}
]
}
Custom Attribute 是您可以根据需求自定义的收集对象事件属性。Custom Attribute 可以通过导出原始数据查看,所有 Custom Attribute 数据将包含在同一列内。
例如,如果定义颜色和尺码的两个 Custom Attribute 分别收集到 “红色” 和 “大号(L)”,则 “红色” 和 “大号(L)” 将都包含在 1 个列中。
//Example code for customAttributes
airbridge.events.send("purchase_card", {
"customAttributes": {
"userRank": "1",
"itemType": "sword"
}
})
#import <AirBridge/ABInAppEvent.h>
ABInAppEvent* event = [[ABInAppEvent alloc] init];
[event setCategory:@"purchase_card"];
NSDictionary* customs = @{
@"userRank": @"1",
@"itemType": @"sword"
};
[event setCustoms:customs];
[event send];
let event = ABInAppEvent()
event?.setCategory("purchase_card")
let customs : [String: Any] = [
"userRank": "1",
"itemType": "sword"
]
event?.setCustoms(customs)
event?.send()
Map<String, Object> customAttributes = new HashMap<>();
customAttributes.put("userRank", "1");
customAttributes.put("itemType", "sword");
Airbridge.trackEvent(
"purchase_card", // Category
null, // Action
null, // Label
null, // Value
customAttributes, // Custom Attributes
null, // Semantic Attributes
);
Airbridge.trackEvent(
category = "purchase_card",
customAttributes = mapOf(
"userRank" to "1",
"itemType" to "sword"
)
)
对通过 Attribute 收集的数据适用以下限制:
Semantic Attribute:
不收集不符合 Semantic Attribute 数据格式的数据。仅收集其他事件构成要素和符合 Semantic Attribute 数据格式的其他 Semantic Attribute。
如果数据超出 Semantic Attribute 支持的最大范围,仅收集至该最大范围。数据格式为 string 的 Semantic Attribute 支持最多 1024 个字符;数据格式为 int 或 float 的 Semantic Attribute 支持最多 64 个字符。
Custom Attribute:
不收集包含不符合 Custom Attribute 数据格式的事件。请注意,各个 Custom Attribute 对数据格式的要求不同。
如果数据超出 Custom Attribute 支持的最大范围,则会收集到 ERROR_MAX_LENGTH_EXCEEDED
。
触发点是您收集 Airbridge 事件的时间点。
根据触发点,同一 Airbridge 事件的计数可能会有所不同。
例如,如果将 “立即购买” 按钮的点击设为触发点来收集订单完成事件,则因资金不足等原因而失败的购买仍将被计数为订单完成事件。相反,如果将购买成功页面的打开设为触发点来收集订单完成事件,则前述的因资金不足等原因而失败的购买将不会被计数为订单完成事件,有助于更有效地收集订单完成事件。
Was this page helpful?