Real-time developer notifications reference guide

This topic lists and describes the types of Real-time developer notifications that you can receive from Google Play.

Encoding

Each publish made to a Cloud Pub/Sub topic contains a single base64-encoded data field.

{
  "message": {
    "attributes": {
      "key": "value"
    },
    "data": "eyAidmVyc2lvbiI6IHN0cmluZywgInBhY2thZ2VOYW1lIjogc3RyaW5nLCAiZXZlbnRUaW1lTWlsbGlzIjogbG9uZywgIm9uZVRpbWVQcm9kdWN0Tm90aWZpY2F0aW9uIjogT25lVGltZVByb2R1Y3ROb3RpZmljYXRpb24sICJzdWJzY3JpcHRpb25Ob3RpZmljYXRpb24iOiBTdWJzY3JpcHRpb25Ob3RpZmljYXRpb24sICJ0ZXN0Tm90aWZpY2F0aW9uIjogVGVzdE5vdGlmaWNhdGlvbiB9",
    "messageId": "136969346945"
  },
  "subscription": "projects/myproject/subscriptions/mysubscription"
}

After you decode the base64-encoded data field, the DeveloperNotification contains the following fields:

{
  "version": string,
  "packageName": string,
  "eventTimeMillis": long,
  "oneTimeProductNotification": OneTimeProductNotification,
  "subscriptionNotification": SubscriptionNotification,
  "testNotification": TestNotification
}

These fields are described in the following table.

Property name Value Description
version string The version of this notification. Initially, this is "1.0". This version is distinct from other version fields.
packageName string The package name of the application that this notification relates to (for example, `com.some.thing`).
eventTimeMillis long The timestamp when the event occurred, in milliseconds since the Epoch.
subscriptionNotification SubscriptionNotification If this field is present, then this notification is related to a subscription, and this field contains additional information related to the subscription. Note that this field is mutually exclusive with testNotification and oneTimeProductNotification.
oneTimeProductNotification OneTimeProductNotification If this field is present, then this notification is related to a one-time purchase, and this field contains additional information related to the purchase. Note that this field is mutually exclusive with testNotification and subscriptionProductNotification.
testNotification TestNotification If this field is present, then this notification is related to a test publish. These are sent only through the Google Play Developer Console. Note that this field is mutually exclusive with subscriptionNotification and oneTimeProductNotification.

SubscriptionNotification

A SubscriptionNotification contains the following fields:

{
  "version": string
  "notificationType": int
  "purchaseToken": string
  "subscriptionId": string
}
Property name Value Description
version string The version of this notification. Initially, this is "1.0". This version is distinct from other version fields.
notificationType int The notificationType for a subscription can have the following values:
  • (1) SUBSCRIPTION_RECOVERED - A subscription was recovered from account hold.
  • (2) SUBSCRIPTION_RENEWED - An active subscription was renewed.
  • (3) SUBSCRIPTION_CANCELED - A subscription was either voluntarily or involuntarily cancelled. For voluntary cancellation, sent when the user cancels.
  • (4) SUBSCRIPTION_PURCHASED - A new subscription was purchased.
  • (5) SUBSCRIPTION_ON_HOLD - A subscription has entered account hold (if enabled).
  • (6) SUBSCRIPTION_IN_GRACE_PERIOD - A subscription has entered grace period (if enabled).
  • (7) SUBSCRIPTION_RESTARTED - User has reactivated their subscription from Play > Account > Subscriptions (requires opt-in for subscription restoration).
  • (8) SUBSCRIPTION_PRICE_CHANGE_CONFIRMED - A subscription price change has successfully been confirmed by the user.
  • (9) SUBSCRIPTION_DEFERRED - A subscription's recurrence time has been extended.
  • (10) SUBSCRIPTION_PAUSED - A subscription has been paused.
  • (11) SUBSCRIPTION_PAUSE_SCHEDULE_CHANGED - A subscription pause schedule has been changed.
  • (12) SUBSCRIPTION_REVOKED - A subscription has been revoked from the user before the expiration time.
  • (13) SUBSCRIPTION_EXPIRED - A subscription has expired.
purchaseToken string The token provided to the user's device when the subscription was purchased.
subscriptionId string The purchased subscription ID (for example, "monthly001").

Example

Here's an example of a notification for a new subscription purchase:

{
  "version":"1.0",
  "packageName":"com.some.thing",
  "eventTimeMillis":"1503349566168",
  "subscriptionNotification":
  {
    "version":"1.0",
    "notificationType":4,
    "purchaseToken":"PURCHASE_TOKEN",
    "subscriptionId":"my.sku"
  }
}

OneTimePurchaseNotification

A OneTimeProductNotification contains the following fields:

{
  "version": string
  "notificationType": int
  "purchaseToken": string
  "sku": string
}
Property Name Value Description
version string The version of this notification. Initially, this will be "1.0". This version is distinct from other version fields.
notificationType int The type of notification. It can have the following values:
  • (1) ONE_TIME_PRODUCT_PURCHASED - A one-time product was successfully purchased by a user.
  • (2) ONE_TIME_PRODUCT_CANCELED - A pending one-time product purchase has been canceled by the user.
purchaseToken string The token provided to the user’s device when purchase was made.
sku string The purchased one-time product ID (for example, "sword_001")

Example

Here's an example of a notification for a new one-time purchase:

{
  "version":"1.0",
  "packageName":"com.some.thing",
  "eventTimeMillis":"1503349566168",
  "oneTimePurchaseNotification":
  {
    "version":"1.0",
    "notificationType":1,
    "purchaseToken":"PURCHASE_TOKEN",
    "sku":"my.sku"
  }
}

TestNotification

A TestNotification contains the following fields:

{
  "version": string
}
Property name Value Description
version string The version of this notification. Initially, this is "1.0". This version is distinct from other version fields.

Example

Here's an example of a test notification:

{
  "version":"1.0",
  "packageName":"com.some.thing",
  "eventTimeMillis":"1503350156918",
  "testNotification":
  {
    "version":"1.0"
  }
}