Webhooks
Send subscriptions events to a custom webhook channel.
Glassfy monitors the subscriptions and sends all the relevant events to the custom Webhook even if the user does not open the app.
- Open Webhooks connector setting in the Glassfy dashboard
- Set your webhook URL to the "Custom webhook URL" field
- (Optional) Set the autorisation-token to be sent with each webhook POST
Request format
Glassfy will send POST requests every time an event is generated with the following format:
Request body
{
"adjustid": "",
"aid": "",
"app_version": "1.0",
"appid": "SZ126UWWVGTH82UE9313EQQ5N1YM3QOA",
"appsflyerid": "",
"asid": "",
"auto_renew_product_id": "ios_premium_weekly_1_99",
"auto_renew_status": true,
"bundle_version": "1",
"country_code": "AT",
"currency_code": "EUR",
"customid": "customer_133",
"date_ms": 1659112497000,
"device": "iPhone10,4",
"environment": "S",
"estimated": 0,
"event_date": 1659112457,
"expiration_intent": "",
"expire_date_ms": 1659112677000,
"gaid": "",
"grace_period_expires_date_ms": 0,
"group_identifier": "20710701",
"id": "657a8b24a4a44ae3a0220382af5f302b",
"idfa": "",
"idfv": "",
"ip": "",
"is_in_billing_retry_period": false,
"licensecode": "",
"offer_code_ref_name": "",
"offeringid": "",
"original_purchase_date_ms": 1642598246000,
"original_transaction_id": "1000000952188704",
"packagename": "com.sample.sampleapp",
"price": 1.99,
"price_consent_status": "",
"price_usd": 2.151237393911025,
"productid": "ios_premium_weekly_1_99",
"quantity": 1,
"sdk_version": "dev",
"sort_date_ms": 1659112497000,
"source": "S2S",
"store": "1",
"sub_platform": "1",
"subscriberid": "1c72b30e7ae448aab3ce2b90da71a687",
"system_version": "15.5",
"transaction_id": "2000000118352789",
"type": 5003,
"userunknown": false,
"vendorid": "8NOV6FQBHHRJ4F9N2HV0HUXOQ5LL0QA3",
"web_order_line_item_id": "2000000008327043",
}
Reference
field | description | note |
---|---|---|
event_date | event date | Epoch time on when the event has been generated. It may differ for the purchase date. Use date_ms for purchase date |
source | source that generates the event | SDK: event generated by the SDK S2S: event generated by server to server or playstore RTH: event generated internally by Glassfy |
type | event_type | Please see table below for possible values |
environment | environment | Can be P (production) or S (sandbox) |
estimated | price and country are estimated | 0: Price is the price payed by the user for this transaction. 1: Price estimated based on previous purchases with the same country / currency. 2: estimated price in USD - Price has been estimated in USD because no country is know. |
store | store | 1: App Store 2: Play Store 3: Paddle |
vendorid | vendor identifier | unique identifier of the company using Gassfy SDK |
appid | application identifier | unique identifier of the application using Gassfy SDK |
subscriberid | subscriber identifier | unique identifier of the user purchasing the subscription or IAP see here |
productid | product identifier | App Store, Play Store, Paddle product identifier |
date_ms | event date in milliseconds | this is the date of the purchase or event |
original_purchase_date_ms | original purchase date in milliseconds | |
expire_date_ms | subscription expire date in ms | |
duration | subscription duration in days | |
auto_renew_status | user changes auto renew status: if false the subscription will not autorenew at the expire date | only relevant for event 5005 SubscriptionDidChangeRenewalStatus |
original_transaction_id | Original transaction identifier | |
packagename | App Package Name | the app package name |
web_order_line_item_id | original web order | |
price | price | price in user currency |
price_usd | USD price | price in USD |
licensecode | License code connected or disconnected | |
currency_code | currency code | three letters ISO currency code |
country_code | country_code | three letters ISO country code |
sub_platform | Apple user only | "0" :UNKNOWN "1" : IOS "2" : CATALYST "3": TV "4" : WATCH "5" : OSX "6" : DRIVE "7" : SIMULATOR |
system_version | operating system version | |
device | device type | eg: iPhone14,2 |
sdk_version | sdk version | |
app_version | application version | |
is_trial_period | app is in trial | true or false |
trial_status | trial conversion status | 0: N/A 1:trial converted to payed subscription 2:trial non converted to payed subscription |
customid | custom identifier | custom identifier |
adjustid | AdjustID | Unique Adjust ID of the device. Available after the installation has been successfully tracked. |
appsflyerid | AppsFlyerID | App identifier generated by AppsFlyer at installation. |
ip | IP Address | |
idfa | IIdentifier For Advertisers - Unique to each device. Only use for advertising. (Apple only) | |
idfv | Identifier For Advertisers - Unique to each device. Only use for advertising. (Apple only) | |
asid | Privacy friendly App Set Id (Android 12+) | |
gaid | Google Identifier For Advertisers - Unique to each device. | |
aid | Unique to each combination of app-signing key, user, and device(Android only) | |
clevertap_id | CleverTapid | Identify a unique user by CleverTap Global Object ID. |
amplitude_deviceid | Amplitude Device Id | |
amplitude_userid | Amplitude User Id | |
fb_anonid | Facebook anonymous id | |
firebase_appinstanceid | Firebase instance id | |
iterable_userid | Iterable User id | |
mixpanel_distinctid | MixPanel distinct id | |
particle_id | Particle id | |
onesignal_id | OneSignal id | |
singular_id | Singular id | |
airshipchannel_id | Airship Channel id |
Event Type | event_type | Description |
---|---|---|
SubscriptionInitialBuy | 5001 | User starts a subscription |
SubscriptionRestarted | 5002 | A previously interrupted subscription restarted |
SubscriptionRenewed | 5003 | Subscription automatically renewed |
SubscriptionExpired | 5004 | Subscription expired |
SubscriptionDidChangeRenewalStatus | 5005 | User changed the autorenew status |
IsInBillingRetryPeriod | 5006 | User is in billing retry |
SubscriptionProductChange | 5007 | User upgrades or downgrades the subscription |
InAppPurchase | 5008 | In App Purchase |
SubscriptionRefund | 5009 | Subscription Refund |
SubscriptionPaused | 5010 | Subscription Paused |
SubscriptionResumed | 5011 | Subscription Resumed |
ConnectLicense | 5012 | License Code Connected |
DisconnectLicense | 5013 | License Code Disconnected |
Request header
Authorization: Bearer authorisation-token
Accept: application/json
Retries
Glassfy will send POST requests to your server with the authentication header and a json with the details of the event. Your server must return a 200 status code. If the status code is not 200 Glassfy will retry 5 times (after 5, 15, 30 and 60 minutes). After all the retries we will stop send the event.
Updated about 1 year ago