Skip to content

Analytics and Mobile Data Share

Cardlytics Modules have a built-in data analytics event stream that is sent back to Powered By servers. This is built into the Cardlytics SDK and the Web Experience and is a proprietary service. The primary use-case for this analytics event stream is to provide merchants with attribution signals for our frictionless experience. In addition to the primary case, we have three secondary use-cases:

  1. Fraud detection and prevention.
  2. Debugging metadata for defect reproduction and testing.
  3. Analysis of how end customers are interacting with the SDK or the Web Experience to inform and power future experiments.

 

Collected Data and Data Types

 

Customer/Device/Vendor/Advertising ID

These identifiers are used for:

  • customer matching for merchant targeting and suppression
  • fraud detection and prevention
  • frictionless attribution for offers
1
2
3
"vendor" : "00000000-0000-0000-0000-000000000000",
"advertisingId" : "00000000-0000-0000-0000-000000000000",
"marketplaceUserId" : "my-marketplace:00000000-0000-0000-0000-000000000000",

Info

In compliance with the App Tracking Transparency changes introduced in iOS 14.5, the advertisingId will not be collected on iOS with SDK versions 2.6.1 and later.

SDK and App Info

This information is used for:

  • identifying SDK and Application versions for debugging, analytics, and attribution.
1
2
3
  "appVersion" : "2.3.1",
  "sdkVersion": "1.0.0",
  "applicationId": "my-marketplace:00000000-0000-0000-0000-000000000000"

Device Info

The device information is used for:

  • Understanding device capabilities for testing focus.
  • Understanding device capabilities for debugging SDK behavior.
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
{
"brand" : "iPhone",
"manufacturer" : "Apple",
"model" : "9.1",
"os" : "iOS",
"osVersion" : "12.1.1",
"screen": {
      "height" : 667,
      "width" : 375,
      "nativeScale" : 2.0
   },
"languages" : [
    "en-US",
    "en-GB"
   ],
}

Time Zone

Cardlytics offers include those that have a time of day and/or urgency component. For these offer types, time zone helps us understand our users' time zone distribution and ensure the proper visual representation of that content. Example:

1
{ "timeZone" : "America/Los_Angeles" }

Location and IP Address

Cardlytics uses location signals to provide relevant, nearby offer content to the consumer. Cardlytics also uses it for purposes of fraud detection and attribution.

1
2
3
4
5
6
{
  "location" : {
    "lat" : "31.000000",
    "lon" : "-97.000000"
  }
}

Info

Without a device based GPS signal, the Cardlytics platform will degrade to an IP address signal for geo-location, but that is a blunt instrument that provides a less than optimal user experience. IP address is also used by Cardlytics for fraud detection and prevention purposes. IP address is not collected by the SDK. Rather, our servers record the IP address of the incoming request.

General Analytic Event Types

Cardlytics uses a series of analytic events to monitor the performance and use of the SDK. These events are also a key element of our frictionless experience which allow us to provide attribution signals to merchants.

Those events are broken down into the following types:


ERROR: helps us understand, catch, and correlate errors happening in the real world.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
"type":"ERROR",
"body": {
   "code": "graphql_502",
   "message": "Received an unexpected response status code from GraphQL.",
   "metadata": {
      "request": "query GetBrandDetails()",
      "url": "https:\/\/localhost\/graphql\/v1\/ugraphql"
   },
   "severity": "CRITICAL"
}


LIFECYCLE: helps us measure engagement within the SDK and provides attribution signals.

1
2
3
4
"type": "LIFECYCLE",
"body": {
   "state": "FOREGROUND"
}


SCREEN: helps us understand how the user is navigating through the experience. Helps provide attribution signals.

1
2
3
4
"type": "SCREEN",
"body": {
   "screen":"UnauthenticatedBrandDetailsScreen"
}


EVENT: helps us understand user behavior within the experience. Helps us maximize engagement and improve UX.

1
2
3
4
5
6
7
8
"type": "EVENT",
"body": {
   "name": "ContentFeedItemTapped",
   "metadata": {
      "brandId": "2135kh1235lkj23",
      "brandName": "Sephora"
   }
}


Each of these events carry meta-data with them specific to the experience like:

  • Experimentation variations
  • Experience elements (buttons, lists, etc.)
  • Experience interaction (taps, scrolls, hovers, etc.)
  • Notification content like titles and colors