Overview

Mobile app data provides detailed, app-level information about in-app and mobile app purchases. This guide outlines the additional data made available by this premium feature, explains how to interpret that data, and describes how to use mobile app data to support different use cases.
Mobile app data is a premium feature. Please contact sales@spade.com for access.

Example enrichment response

Example response
{
  "transactionInfo": {
    "type": "spending",
    "subType": null,
    "display": {
      "name": "Artificial Life - Google Play",
      "categoryName": "Mobile App: Education and Parenting",
      "graphic": "https://static.v2.spadeapi.com/logos/58c03a73629c46b8aa4c1e15cb4f0d0b/light.png",
      "graphicSource": "third_party"
    },
    "thirdParties": [
      {
        "id": "58c03a73-629c-46b8-aa4c-1e15cb4f0d0b",
        "name": "Google Play",
        "type": "marketplace",
        "logo": "https://static.v2.spadeapi.com/logos/58c03a73629c46b8aa4c1e15cb4f0d0b/light.png",
        "website": "https://play.google.com/"
      }
    ],
    "spendingInfo": {
      "channel": {
        "value": "digital"
      }
    },
    "transferInfo": null,
    "atmInfo": null,
    "isAccountVerification": null,
    "isPeerToPeer": null,
    "isDigitalWallet": null,
    "transactionId": "166c5ad8-8a94-4964-a659-03cdb64525f2"
  },
  "counterparty": [
    {
      "id": "0d1ef10f-2652-39bd-98f1-af34ae03a4a7",
      "name": "Artificial Life",
      "legalName": null,
      "industry": [],
      "location": [
        {
          "id": null,
          "address": null,
          "addressLine1": null,
          "addressLine2": null,
          "city": "Tampa",
          "region": "FL",
          "postalCode": null,
          "country": "USA",
          "phoneNumber": null,
          "latitude": null,
          "longitude": null,
          "matchScore": null
        }
      ],
      "matchScore": 90.13,
      "logo": null,
      "medianSpendPerTransaction": null,
      "phoneNumber": null,
      "website": "https://play.google.com/store/apps/details?id=com.mooncoder.alife"
    }
  ],
  "enrichmentId": "2c7dab64-8f37-44b3-b482-cc1c8f71ab0d",
  "mobileAppInfo": {
    "id": "0d1ef10f-2652-39bd-98f1-af34ae03a4a7",
    "name": "Artificial Life",
    "url": "https://play.google.com/store/apps/details?id=com.mooncoder.alife",
    "logo": null,
    "developerName": "Mooncoder",
    "developerId": "f6fdc9b1-f0ea-3dda-8e15-ead6fe5755fe",
    "category": "Education and Parenting",
    "hasGamblingOrRewards": false,
    "hasSimulatedGambling": false,
    "ageRating": "Children"
  }
}

Understanding mobile app data

When a match is found:
  • Detailed app information is returned in the mobileAppInfo object.
  • The mobile app store - i.e. Google Play Store - is added as a thirdParty in the enrichment response.
  • The spending channel is set to digital.
If no match is found:
  • mobileAppInfo will returnnull
The mobileAppInfo object contains the following fields:
FieldDescription
idID of the matched mobile app
nameApp name
urlLink to the app, either in the Google Play Store or the app’s homepage
logoLink to a downloadable app logo image
developerNameApp developer name
developerIdApp developer ID
categoryMobile app category (separate from Spade’s category tree).
Possible values:
Auto and Transportation, Creative and Design, Education and Parenting, Entertainment and Media, Finance and Business, Games, Health and Lifestyle, Shopping and Marketplaces, Social and Communication, Travel and Events, Utility and Tools
hasGamblingOrRewardsIndicates whether the app has gambling features or cash prizes/rewards
hasSimulatedGamblingIndicates whether the app contains simulated gambling
ageRatingApp’s age rating. Possible values: Children, Teen, Adult
If a mobile app ID is present, it will be represented consistently as the counterparty ID.

Using mobile app data

Mobile app data can be used in a variety of contexts, such as displaying detailed purchase information in your transaction feed or preventing a purchase based on the app’s age rating or gambling features. Displaying mobile app information in your UI/UX For a clean display of the mobile app name and its category, we recommend using the display object, which returns our recommendation for how to present information in your UI. Below is an example based on the previous enrichment for a Google Play Store purchase made for an app called “Artificial Life,” categorized as “Education and Parenting”:
  • Display name: “Artificial Life - Google Play”
  • Display category: “Mobile App - Education and Parenting”
We also provide more information in the mobileAppInfo object, such as the app’s logo, category, developer name, and URL, which you can use within your application. If you are using counterparty category personalization, you can use the app’s counterparty.id to return a custom category for the mobile app. The custom category will be returned in the personalization object.

Card locking, fraud prevention and controlling spend

With detailed mobile app information you can:
  • Prevent spending on gambling apps by using the hasGamblingOrRewards or hasSimulatedGambling fields, which return true if the app contains either feature.
  • Issue virtual cards to be used only for a specific app by allowing spending associated solely with a specific counterparty.id, as returned in the enrichment response.
  • Limit purchases on cards to specified age ratings based on the returned mobileAppInfo.ageRating.