Snowplow Indicative Relay 0.4.0 fixes bug affecting mobile events

We have released a new version of the Snowplow Indicative Relay, the component that lets you load your enriched stream into Indicative.

The highlight of this release is a bug-fix that will allow Snowplow mobile events to be relayed to Indicative.

An Indicative event must always have an eventUniqueId, which is a unique identifier for the user who performed the event. Out of the box, Snowplow has multiple user identifiers. The algorithm by which we decide which identifier to use for the eventUniqueId is as follows.

The eventUniqueId in Indicative is one of:

  • the user_id field in atomic.events , or if that is missing
  • the user_id field from the client_session context, or if that is missing
  • the domain_userid from atomic.events .

The first value is a user_id that you specifically send with the event. That is usually a business-specific identifier for known users, like an email address or unique customer number.

The second and third values are set by the tracker and stored on the device. The difference is that client_session_userid is used on mobile devices; whereas domain_userid is used on websites. (You can learn more about these two fields in this post and the discussion underneath it: Understanding the client session context)

The priority in which the Indicative eventUniqueId is decided is strict, so that if an event has, eg both atomic.events_user_id and client_session_userid , the first one will be used and the second one will be ignored.

If none of these fields have a value, the event is not sent to Indicative at all, because in Indicative all events must have an eventUniqueId.

A typo in previous versions of the Indicative relay meant that client_session_userid was always interpreted as missing, even if there was a value for that field. As a result, no mobile events were sent to Indicative.

Version 0.4.0 fixes this bug.

This version also includes two further improvements contributed by the Indicative team:

  • fields with null values from the original Snowplow event are removed from its Indicative counterpart to make it as compact as possible;
  • it is now possible to configure a custom Indicative API URI via an environment variable.

Many thanks to Chris Fei of Indicative for these contributions!

To find out more about how to set up the relay, consult the setup guide.

To learn more about the relay, check out the original blog post.