Skip to content
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.

analytics.js traits behave differently to Analytics for Android #656

Open
@richardscarrott

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

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions