Getting started on Snowplow Open Source

  1. Home
  2. Docs
  3. Getting started on Snowplow Open Source
  4. Setup Snowplow Open Source on AWS
  5. Setup Validation and Enrich
  6. YAUAA enrichment

YAUAA enrichment


This enrichment is based on in-memory HashMaps and require roughly 400 MB of RAM (see here). Additional memory is also needed if caching is enabled (by default).

JSON schema for config : iglu:com.snowplowanalytics.snowplow.enrichments/yauaa_enrichment_config/jsonschema/1-0-1
Compatibility: R114+
Data provider:


This enrichment uses YAUAA API to parse and analyze the user agent string of an event and extract as many relevant attributes as possible, like for example the device class (Phone, Tablet, etc.).


Only one parameter can be set in the configuration : cacheSize. This field determines the number of already parsed user agents that are kept in memory for faster processing.
If set to 0, caching is disabled.
If not set, a default size is used for the cache (10000).

An example of configuration can be found here.

Data sources

The only input needed for this enrichment is the user agent string of the input event.


YAUAA parsing relies heavily on HashMaps to quickly find the rules that need to be fired.
There is no interaction with an external system, all the data required for this enrichment is contained in-memory.

Data generated

The context generated by this enrichment conforms to iglu:nl.basjes/yauaa_context/jsonschema/1-0-0.

The only field that will always be present is deviceClass.

If a field can’t be figured out by the algorithm, it won’t be in the output. But some fields can have value UNKNOWN.

More information about the output values can be found here.

Here is an example of derived context attached to an enriched event by this enrichment for a page visited with a Samsung Galaxy S9:

{ "schema":"iglu:com.snowplowanalytics.snowplow/yauaa_context/jsonschema/1-0-0", "data": { "deviceClass":"Phone", "deviceName":"Samsung SM-G960F", "deviceBrand":"Samsung", "operatingSystemClass":"Mobile", "operatingSystemName":"Android", "operatingSystemVersion":"8.0.0", "operatingSystemNameVersion":"Android 8.0.0", "operatingSystemVersionBuild":"R16NW", "layoutEngineClass":"Browser", "layoutEngineName":"Blink", "layoutEngineVersion":"62.0", "layoutEngineVersionMajor":"62", "layoutEngineNameVersion":"Blink 62.0", "layoutEngineNameVersionMajor":"Blink 62", "agentClass":"Browser", "agentName":"Chrome", "agentVersion":"62.0.3202.84", "agentVersionMajor":"62", "agentNameVersion":"Chrome 62.0.3202.84", "agentNameVersionMajor":"Chrome 62" } }
Code language: JSON / JSON with Comments (json)