对于某些背景,我们正在与我们的电子商务网站上的https://segment.com/docs/集成。
我们的网站目前有 3 个地区(美国、加拿大和英国)。
该区域由不同的 url 路径标识,(例如 /*(美国)、/ca/*(加拿大)、/uk/*(英国))。
locale
我们根据您访问的区域定义一个对象,例如
// A user who visits /uk/* will have this locale
const locale = {
region: 'UK',
currency: 'GBP', // one day this may be configurable
language: window.navigator.language // en, en-US, en-GB etc.
}
// A user who visits /* will have this locale
const locale = {
region: 'US',
currency: 'USD', // one day this may be configurable
language: window.navigator.language // en, en-US, en-GB etc.
}
我们希望将我们的locale
数据与细分 API 调用(跟踪、页面、标识等)相关联
我可以看到 3 个潜在的选择:
将
region
,currency
和language
* 添加到context
对象。例如window.analytics.track('Button Clicked', {}, { context: { region: locale.region, currency: locale.currency, language: locale.language } });
- 这将允许所有 API 调用(跟踪、页面、标识等)将调用与当前语言环境相关联。
- 我希望这应该通过 analytics.js 中间件来完成?
- *我知道上下文规范已经定义了
locale
相当于我们的locale.language
(例如 en-US),所以我们可以设置context.locale: locale.language
而不是context.language: locale.language
.
我对上述内容的主要担忧是我不能 100% 确定将我们自己的数据添加到context
对象中是可以接受的,文档只是说“因此忽略规范之外的属性”,但是我希望我们的数据仓库仍然可以利用这些额外的特性?
因此,另一种方法可能是将其视为用户trait
:
identify
使用我们的语言环境在页面加载时匿名调用,traits
例如window.analytics.identify({ region: locale.region, currency: locale.currency, language: locale.language });
- 对此进行测试后,似乎识别的特征不会与后续事件(轨道、页面等)一起发送
- 因此,我认为我们必须另外通过一些中间件来传递我们的
locale
数据以context.traits
进行所有其他调用?
- 因此,我认为我们必须另外通过一些中间件来传递我们的
- 对此进行测试后,似乎识别的特征不会与后续事件(轨道、页面等)一起发送
然而,我对第二种方法的担忧是,鉴于我们的locale
数据是暂时的(用户可以随时导航到不同的区域/它不会针对数据库中的用户记录存储),它可能不属于用户的“特征” '?
- 为每个区域定义一个单独的 segment.io
source
,例如window.analytics.load("REGION_SPECIFIC_WRITE_KEY");
- 我不确定这是否安全,因为他们都住在同一个域上?
有推荐的设计吗?