INFOnline Measurement pseudonymous (JSON body)

INFOnline Measurement pseudonymous (JSON body) (infonline/ioam-tx-body-json)

operated by: INFOnline GmbH (get company information on datarequests.org, go to tracker entry in the Exodus database)

Unlike Census Measurement, which works anonymously without identifiers, INFOnline Measurement pseudonymous “is designed as a pseudonymous system (with client identifiers)”. Source

According INFOnline’s own documentation, “[…] the pseudonymous INFOnline Measurement may only be loaded and executed if there is active consent from the user of [the] web page. […] The following also applies to apps: Only start the session of pseudonymous measurement if you have the user’s consent.” Source

Endpoint URLs

These are URLs or regexes of endpoints the tracker sends data to. We use these to determine which adapter to apply to a request. Some trackers use the same endpoint for several formats. In this case we use additional logic to match the adapter to the request, refer to the code for more information.
  • https://de.ioam.de/tx.io
  • https://at.iocnt.net/tx.io

Decoding steps

Every tracking library has its own way of transmitting tracking data, often even several. They are regularly pretty convoluted, nested encoding schemes. Because of that, the adapter needs to decode the request information into a consistent format. We try to keep keys and paths intact, but the structure results from our decoding. All steps used in the decoding for this adapter are documented here.
  1. Parse the request body as a query string. Store that in the variable parsedBody.
  2. Get the property at JSONPath ae in the variable parsedBody. Store that in the variable ae.
  3. Decode the variable ae as a Base64 string. Store that in the variable decodedAe.
  4. Parse the variable decodedAe as JSON. Store that in the result for the request body at ae.
  5. Get the cookie i00. Store that in the result for the cookies at i00.
1parsedBody = parseQueryString(body)
2ae = parsedBody.ae
3decodedAe = decodeBase64(ae)
4res.body.ae = parseJson(decodedAe)
5res.cookie.i00 = cookie.i00

Observed data transmissions

This is data that we observed being transmitted by this tracker. Not every request contains all of this data. The context of the data describes where we found the data in the request, the path describes the location of the data in the decoded request. The examples are a selection of observed values.
PropertyContextPathExamples of observed values
App IDbodyae.application.package
bodyae.application.bundleIdentifierde.swr.swr3
de.zdf.mediathek.universal
de.apptelligence.sportschauAPN
de.swr.avp.ard.tablet
de.axelspringer.weltipad
App versionbodyae.application.versionName
bodyae.application.versionCode
bodyae.application.bundleVersion114
17
37571034
50265
2022.3.18.14.25
Carrierbodyae.client.carriero2-de
Countrybodyae.client.countryDE
Unique device IDcookiei00 More details on how we identified this property0032c1b15ed8378b662661eaf0001%3B62661eaf%3B63f19366
003af8a211082fa416267c8e80001%3B6267c8e8%3B63d54581
003a003e2d6f3ac556242e7a10001%3B6242e7a1%3B6385c26f
002d86ec39d8839c364c1442e0001%3B64c1442e%3B663229d1
Hashed device advertising IDbodyae.client.uuids.advertisingIdentifier More details on how we identified this property7bbcc33bb8b6426f75a8fb06a5cbb83b
Is app in foreground?body$.ae..events[?(@.identifier == 'application' && @.state == 'enterForeground')].state Tracker documentation on this propertyenterForeground
body$.ae..events[?(@.identifier == 'application' && @.state == 'enterBackground')].state Tracker documentation on this property
body$.ae..events[?(@.identifier == 'application' && @.state == 'becomeActive')].state Tracker documentation on this propertybecomeActive
body$.ae..events[?(@.identifier == 'application' && @.state == 'resignActive')].state Tracker documentation on this propertyresignActive
Languagebodyae.client.languageen
de_DE
de
Modelbodyae.client.platformiPhone9,3
iPhone10,4
iPhone10,6
OS namebodyae.client.osIdentifieriOS
OS versionbodyae.client.osVersion14.8
14.5.1
15.6.1
Screen heightbodyae.client.screen.resolution375x667
375x812
Screen widthbodyae.client.screen.resolution375x667
375x812
App start timebody$.ae..events[?(@.identifier == 'application' && @.state == 'start')].timestamp Tracker documentation on this property1.6489715286787e+09
1.6494466282964e+09
1.6508596901187e+09
1.6508683933652e+09
1.6509622710816e+09
Tracker SDK versionbodyae.library.libVersion2.1.3
2.3.1
2.3.0
2.0.0
2.2.0
Viewed pagebody$.ae..events[?(@.identifier == 'view' && @.state == 'appeared')].category Tracker documentation on this propertySWR3/Apps/iOS
Seite/App
nativeOnboarding_Onepager_native
Titelseite_sectiongroup
spracheDE/formatTXT/erzeugerRED/homepageYES/auslieferungMOB/appYES/paidNO/inhaltTHEMA/merkmalNACHRICHTEN/ressortHOMEPAGE/portalSZ
body$.ae..events[?(@.identifier == 'view' && @.state == 'refreshed')].category Tracker documentation on this property
References