Events

NameParametersSupported PlatformsDescription
PRODUCT_PURCHASED
  • packageName (String)
  • productId (String)
  • transactionId (String)
  • deviceId or accountId

ANDROID
IOS

Triggered for a new one-time product purchase (single purchase). NOTE: A purchase is considered new, if the receipt was uploaded within 10 minutes of purchasing.
PRODUCT_CANCELLED
  • packageName (String)
  • productId (String)
  • transactionId (String)
  • deviceId or accountId

ANDROID
IOS

Triggered when a one-time product purchase (single purchase) was cancelled, e.g. due to a refund by Apple support / the developer.

SUBSCRIPTION_PURCHASED


NameTypeDescription
packageNameString
productIdString
transactionIdString
originalTransactionIdStringAn identifier that stays the same across all events for this subscription
deviceIdStringmutually exclusive with accountId
accountIdStringmutually exclusive with deviceId
trialPeriodBoolean
introOfferPeriodBoolean

ANDROID
IOS

Triggered for new subscription purchases. NOTE: A purchase is considered new, if the receipt was uploaded within 10 minutes of purchasing.
SUBSCRIPTION_UPGRADED
  • packageName (String)
  • previousProductId (String)
  • nextProductId (String)
  • transactionId (String)
  • deviceId or accountId (String)

ANDROID
IOS

The subscripton has been upgraded by the user. 

For iOS: The current subscription will end immediately and then the new one will start. 

For Android: A subscription has been changed to a different product and the new subscription has a higher price. The start of the new subscription depends on the selected proration mode during purchase.


SUBSCRIPTION_DOWNGRADED
  • packageName (String)
  • previousProductId (String)
  • nextProductId (String)
  • transactionId (String)
  • deviceId or accountId (String)

ANDROID
IOS

The subscripton has been downgraded by the user. 

For iOS: The current subscription will end normally and then the new one will start. 

For Android: A subscription has been changed to a different product and the new subscription has a lower price. The start of the new subscription depends on the selected proration mode during purchase.


SUBSCRIPTION_RESUBSCRIBED
NameTypeDescription
packageNameString
productIdString
transactionIdString
originalTransactionIdStringAn identifier that stays the same across all events for this subscription
deviceIdStringmutually exclusive with accountId
accountIdStringmutually exclusive with deviceId

A previously expired subscription has ben restarted/resubscribed by the user.
SUBSCRIPTION_RESUBSCRIBED_OTHER
  • packageName (String)
  • previousProductId (String)
  • nextProductId (String)
  • transactionId (String)
  • deviceId or accountId (String)

IOS

A subscription has expired; user resubscribed to another SKU (upgrade or downgrade)
SUBSCRIPTION_CANCELLED
NameTypeDescription
packageNameString
productIdString
transactionIdString
originalTransactionIdStringAn identifier that stays the same across all events for this subscription
deviceIdStringmutually exclusive with accountId
accountIdStringmutually exclusive with deviceId

Triggered when the renewal of a subscription has been cancelled by the user. The subscription will continue until the expiration date is reached.
SUBSCRIPTION_CANCELLED_INVOLUNTARY
NameTypeDescription
packageNameString
productIdString
transactionIdString
originalTransactionIdStringAn identifier that stays the same across all events for this subscription
deviceIdStringmutually exclusive with accountId
accountIdStringmutually exclusive with deviceId

A subscription has been cancelled after it failed to renew the subscription due to billing problems.
SUBSCRIPTION_RENEWED
NameTypeDescription
packageNameString
productIdString
transactionIdString
originalTransactionIdStringAn identifier that stays the same across all events for this subscription
deviceIdStringmutually exclusive with accountId
accountIdStringmutually exclusive with deviceId

ANDROID
IOS

The subscription has been renewed for another period.
SUBSCRIPTION_RENEWAL_FAILED
NameTypeDescription
packageNameString
productIdString
transactionIdString
originalTransactionIdStringAn identifier that stays the same across all events for this subscription
deviceIdStringmutually exclusive with accountId
accountIdStringmutually exclusive with deviceId

ANDROID
IOS

The subscription could not be renewed due to billing issues. It is still active and the system will retry to renew it.

When it succeeds it will result in a SUBSCRIPTION_RECOVERED event or if it fails in a SUBSCRIPTION_CANCELLED_INVOLUNTARY event,

SUBSCRIPTION_RECOVERED
NameTypeDescription
packageNameString
productIdString
transactionIdString
originalTransactionIdStringAn identifier that stays the same across all events for this subscription
deviceIdStringmutually exclusive with accountId
accountIdStringmutually exclusive with deviceId

A subscription that previously failed to renew has been renewed / recovered.

SUBSCRIPTION_EXPIRED

NameTypeDescription
packageNameString
productIdString
transactionIdString
originalTransactionIdStringAn identifier that stays the same across all events for this subscription
deviceIdStringmutually exclusive with accountId
accountIdStringmutually exclusive with deviceId

ANDROID
IOS

The subscription reached its expiration date and is now considered expired. 

ACCOUNT_ASSIGNMENTS_CHANGED

NameTypeDescription
appIdString
accountIdString

ANDROID
IOS

The assignments of an account changed

Event format

Example
{
  "version": "1.0",
  "type": "SUBSCRIPTION_CANCELLED",
  "properties": {
    "deviceId": "1122334455",
	"productId": "com.example.product1"
  },
  "eventTimeMillis": 11223344L
}


JSON Schema
{
  "$schema": "https://json-schema.org/draft-07/schema#",
  "contentMediaType": "application/vnd+sprylab.purple.aeb.event+json",
  "title": "Event",
  "properties": {
    "version": {
      "type": "string",
      "const": "1.0"
    },
    "type": {
      "type": "string"
    },
    "eventTimeMillis": {
      "type": "number"
    },
    "properties": {
      "type": "object",
      "additionalProperties": {
        "type": "string"
      }
    }
  },
  "required": [
    "type",
    "properties",
    "eventTimeMillis"
  ]
} 


  • No labels