This repository has been archived by the owner on Apr 28, 2022. It is now read-only.
This repository has been archived by the owner on Apr 28, 2022. It is now read-only.
Open
Description
I'm designing our segment.io web integration and in the process I've found that analytics.js behaves differently to Analytics for Android with regards to traits
.
The Android Identify documentation says:
Additionally, traits are sent in the context.traits field with every message.
For example:
window.analytics.indentify({
first_name: 'Barry',
last_name: 'From Eastenders'
});
// Sends
{
// ...
"type": "identify",
"context": {
// ...
},
"traits": {
"first_name": "Barry",
"last_name": "From Eastenders"
}
}
Then a subsequent call to track or page:
window.analytics.track('Button Clicked', { button_name: 'Support' });
// Sends
{
// ...
"type": "track",
"context": {
// ...
// Analytics for Android includes the traits from our previous identify call here, but analytics.js does not
// "traits": {
// "first_name": "Barry",
// "last_name": "From Eastenders"
// }
},
"properties": {
"button_name": "Support"
}
}
I'm not sure what iOS Analytics does or if the SDKs differ by design but I think it's a feature we'd like.
I have implemented it via a middleware, but before I went ahead with this it would be good to get some feed back re: why it's not done by default / whether it's a good or bad practice?
window.analytics.addSourceMiddleware(({ payload, next }) => {
const traits = window.analytics.user().traits();
payload.obj.context.traits = {
...traits,
...payload.obj.context.traits
};
next(payload);
});
Metadata
Assignees
Labels
No labels