Webhooks

Learn about sending Deepwall events to your server via webhooks

Deepwall tracks user statuses by validating user receipts with stores and sends real-time data to your HTTP endpoints.

You can monitor the subscription events sent by Deepwall to manage your app flow for paid users and react immediately to changes in users subscription statuses.

Configuring Webhooks

For the webhooks service to be activated in Deepwall, you need to provide your webhook URL to Deepwall from the Deepwall management console.

Follow the steps below to configure the Webhooks URL:

1. Navigate to the Deepwall management console and go to App Settings.

2. Go to the Webhooks tab and enter your URL to Webhooks URL for Deepwall Server Notifications.

3. You can copy the API Key and use to protect your server from unwanted requests.

The registered URL will start receving data from Deepwall.

Events Sent Via Webhooks

The following events are sent to your server via webhooks, if webhooks url is configured in Deepwall.

Event Name

Description

purchased

User has purchased a non-subscription product (consumable, non-consumable, non-renewing subscription)

trialSubscribed

User has started a free trial

trialToPaidSubscribed

User is converted to a paid subscription at the end of the free trial

subscribed

Users has started a paid subscription without a free trial

renewed

User has renewed a paid subscription

refunded

User has received a refund for a subscription or non-subscription payment

autoRenewDisabled

User has disabled auto renewal

autoRenewEnabled

User has enabled auto renewal

moved

User has moved to another device

API Key Usage for Security

You can use the API key optionally to protect your server from unwanted requests. You can get the API key from App Settings menu in Deepwall Management Console.

Request Format

Request Header:

Deepwall sends a POST request to webhook URLs every time an event occurs. The request header contains the API key as the Secret value field.

API-Key: Secret Value {API Key}
Accept: application/json

Request :

For Events Other than moved

Request body for purchased, trialSubscribed, trialToPaidSubscribed, subscribed, renewed, refunded, autoRenewDisabled, autoRenewEnabled.

{
    "uuid": "d18c11574e4ccd59",
    "data": {
        "event": "trialSubscribed",
        "purchase": {
            "orderId": "GPA.3326...",
            "transactionId": "GPA.3326...",
            "productCode": "com.product",
            "quantity": 1,
            "purchaseDate": "2021-02-21 16:55:06",
            "expiresDate": "2021-02-24 18:54:55",
            "cancellationDate": null,
            "isTrialPeriod": 1,
            "isRenewal": 0,
            "order": {
                "originalPurchaseDate": "2021-02-21 16:55:06",
                "isSubscription": 1,
                "isRefunded": 0,
                "isActive": 0,
                "isProduction": 1,
                "inTrialPeriod": 1,
                "inGracePeriod": 0,
                "purchaseData": "W3sicHJvZHV..."
            }
        }
    }
}

Column

Description

uuid

Unique user identifier provided by the Deepwall SDK

event

Name of the event, you can see the events list here

orderId

Order Id of the valid subscription in stores

transactionId

Transaction Id in stores

productCode

Purchased product code

quantity

Purchase quantity

purchaseDate

Date of purchase, the time store has charged the user's account

expiresDate

End date of current subscription period

cancellationDate

Refund date, NULL if user has not refunded

isTrialPeriod

1 if user started a trial, otherwise 0

isRenewal

1 if purchase is a renewal and 0 if not

originalPurchaseDate

Date of the original purchase date which is the first order of user

isSubscription

1 if purchase is a subscription and 0 if it is non-subscription

isRefunded

1 if purchase has been refunded and 0 if not

isActive

1 if automatic renewal is enabled, otherwise 0. isActive is 1 in billing retry and grace period.

inTrialPeriod

1 if user is in trial period, otherwise 0

inGracePeriod

1 if user is in grace period, otherwise 0

Subscription Status Tracking Hints

Active Subscription : expiresDate has not expired and isRefunded = 0

In Grace Period : expiresDate has expired and isActive = 1

Inactive Subscription : expiresDate has been expired and isActive = 0

Request for moved

Request body for device moves for paid subscribers.

{
    "uuid": "394B409C-CE78-4FA4-5CDA-0A0F3AEB",
    "data": {
        "event": "moved",
        "moves": [{
            "orderId": "1000000701866583",
            "fromUuid": "2E10EC71-7E32-432B-9C44-5EA1C309",
            "toUuid": "394B409C-CE78-4FA4-5CDA-0A0F3AEB"
        }]
    }
}

Column

Description

uuid

Unique user identifier provided by Deepwall SDK

event

Name of the event, you can see the events list here

order id

Order Id of the valid subscription in stores

from uuid

Previous unique user identifier

to uuid

New unique user identifier on the new device

It’s important to respond quickly so you do not exceed a time-out limit when you are getting a webhook.

We recommend delaying app processing until a response is sent.

Last updated