Enrich 3.6.0 released

We have released version 3.6.0 of Snowplow’s Enrich, and it has some improvements we are very excited about.

Keep on reading for:

  1. YAUAA enrichment: Support for Client hints
  2. YAUAA enrichment: New version of YAUAA context
  3. Sendgrid adapter improvements
  4. How to upgrade to Enrich version 3.6.0

YAUAA enrichment: Support for Client hints

The Snowplow YAUAA enrichment is used to analyze user agent information sent by the browser. The current trend in web browsers is to reduce the amount of information sent to servers in the User-Agent HTTP header, to help with user privacy.

Starting with Enrich 3.6.0, the YAUAA enrichment can now use Client Hints, so websites can opt in to collecting the extra information which previously would have been part of the user agent header.

The YAUAA enrichment does not require you to make any changes to your website, if you are happy with the level of detail you get from the reduced user agent. However, it is possible to improve the accuracy of the user agent data produced by YAUAA, if you are able to configure your website to send high entropy client hints to the collector by following these instructions.

There are two alternative ways for your website to opt-in to sending client hints to the collector. In the first method, you must configure your webserver to set both a Accept-CH HTTP header and a Permissions-Policy HTTP header when serving the your site’s main HTML pages:

Accept-CH: sec-ch-ua-full-version-list
Permissions-Policy: ch-ua-full-version-list=("https://<YOUR COLLECTOR DOMAIN>")

Alternatively, in the second method, you can put a meta tag in the header secion of your site’s HTML:

<meta http-equiv="delegate-ch" content="sec-ch-ua-full-version-list https://<YOUR COLLECTOR DOMAIN>;">

YAUAA enrichment: New version of YAUAA context

Starting with Enrich 3.6.0, the yauaa_context entity added by the YAUAA enrichment has schema version 1-0-4.

Compared to the previous version (1-0-3) the new schema allows longer string lengths for many of the fields. This change was needed to prevent events failing validation, as YAUAA evolves to write out longer fields for some newer user agents.

Snowplow’s DBT data models will work with this new schema without any configuration change, for all of our supported warehouses.

Sendgrid adapter improvements

The Snowplow Sendgrid adapter is the feature which allows Snowplow to receive and process Sendgrid’s notifications webhooks.

We found, however, that a Sendgrid webhook can sometimes contain many duplicate events in a single webhook payload. The new Sendgrid adapter will remove duplicates from the payload before converting them to Snowplow events. This should cut down the number of Snowplow events that land in your warehouse having the same Sendgrid sg_event_id field.

Upgrading to 3.6.0

If you are already running a recent version of Enrich, then upgrading is as easy as pulling the newer version of the docker image:

docker pull snowplow/snowplow-enrich-pubsub:3.6.0
docker pull snowplow/snowplow-enrich-kinesis:3.6.0
docker pull snowplow/snowplow-enrich-kafka:3.6.0

Check out the Enrich documentation for the full guide on running and configuring the apps.

3 Likes

Hi Snowplowers,

tip: add the hint “sec-ch-ua-platform-version” as well in order to have more details about the operating system.

Example operating_system_name_version

  • without the hint: “Windows NT ??
  • with the hint: “Windows 11

question
Does it make sense to collect the client hints context (ClientHintsPlugin) and YAUAA context? I feel like it would be redundant. What are your thoughts?

Any feedback appreciated!

Thanks for sharing the tip @davidher_mann

I asked the maintainer of YAUAA for advice on which hints to ask for. You can read the full discussion over here, but the short answer is… it’s best to ask for all available client hints:

  • sec-ch-ua
  • sec-ch-ua-full-version-list
  • sec-ch-ua-full-version
  • sec-ch-ua-mobile
  • sec-ch-ua-platform
  • sec-ch-ua-platform-version
  • sec-ch-ua-arch
  • sec-ch-ua-bitness
  • sec-ch-ua-model
  • sec-ch-ua-wow64

The Snowplow docs site has some example code snippets showing how to ask for all of the hints.

1 Like

Thanks @istreeter for sharing! Whats your opinion about collect both YAUAA and ClientHintsPlugin - do or don’t?
From my current point of view rather the latter, because the amount of user agent related columns is already huge with YAUAA and I currently can’t see the additional value of the ClientHintsPlugin / context. But maybe I am missing something?

I would recommend the YAUAA enrichment if you are able to configure the site to send the client hints to the collector. And use the ClientHintsPlugin only as a fallback plan if you are not able to configure the <meta> html tag or the http headers.

You’re correct that the YAUAA enrichment and ClientHintsPlugin collect similar information. You don’t need both enabled, because you will end up storing duplicate data in your warehouse. And of the two, the YAUAA enrichment provides richer information because of how it parses and analyzes the user agent string and hints.

The ClientHintsPlugin can still be useful, though, in situations where the person implementing tracking only has control of the javascript, but does not have control of the main site.

3 Likes