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.

  1. Open Webhooks connector setting in the Glassfy dashboard
  2. Set your webhook URL to the "Custom webhook URL" field
  3. (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

fielddescriptionnote
event_dateevent dateEpoch time on when the event has been generated. It may differ for the purchase date. Use date_ms for purchase date
sourcesource that generates the eventSDK: event generated by the SDK
S2S: event generated by server to server or playstore
RTH: event generated internally by Glassfy
typeevent_typePlease see table below for possible values
environmentenvironmentCan be P (production) or S (sandbox)
estimatedprice and country are estimated0: 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.
storestore1: App Store
2: Play Store
3: Paddle
vendoridvendor identifierunique identifier of the company using Gassfy SDK
appidapplication identifierunique identifier of the application using Gassfy SDK
subscriberidsubscriber identifierunique identifier of the user purchasing the subscription or IAP
see here
productidproduct identifierApp Store, Play Store, Paddle product identifier
date_msevent date in millisecondsthis is the date of the purchase or event
original_purchase_date_msoriginal purchase date in milliseconds
expire_date_mssubscription expire date in ms
durationsubscription duration in days
auto_renew_statususer changes auto renew status:
if false the subscription will not autorenew at the expire date
only relevant for event
5005 SubscriptionDidChangeRenewalStatus
original_transaction_idOriginal transaction identifier
packagename App Package Namethe app package name
web_order_line_item_idoriginal web order
pricepriceprice in user currency
price_usdUSD priceprice in USD
licensecodeLicense code connected or disconnected
currency_codecurrency codethree letters ISO currency code
country_codecountry_codethree letters ISO country code
sub_platformApple user only "0" :UNKNOWN
"1" : IOS
"2" : CATALYST
"3": TV
"4" : WATCH
"5" : OSX
"6" : DRIVE
"7" : SIMULATOR
system_versionoperating system version
devicedevice typeeg: iPhone14,2
sdk_versionsdk version
app_versionapplication version
is_trial_periodapp is in trialtrue or false
trial_statustrial conversion status0: N/A
1:trial converted to payed subscription
2:trial non converted to payed subscription
customidcustom identifiercustom identifier
adjustidAdjustIDUnique Adjust ID of the device. Available after the installation has been successfully tracked.
appsflyeridAppsFlyerIDApp identifier generated by AppsFlyer at installation.
ipIP Address
idfaIIdentifier For Advertisers - Unique to each device. Only use for advertising. (Apple only)
idfvIdentifier For Advertisers - Unique to each device. Only use for advertising. (Apple only)
asidPrivacy friendly App Set Id (Android 12+)
gaidGoogle Identifier For Advertisers - Unique to each device.
aidUnique to each combination of app-signing key, user, and device(Android only)
clevertap_idCleverTapidIdentify a unique user by CleverTap Global Object ID.
amplitude_deviceidAmplitude Device Id
amplitude_useridAmplitude User Id
fb_anonidFacebook anonymous id
firebase_appinstanceidFirebase instance id
iterable_useridIterable User id
mixpanel_distinctidMixPanel distinct id
particle_idParticle id
onesignal_idOneSignal id
singular_idSingular id
airshipchannel_idAirship Channel id
Event Typeevent_typeDescription
SubscriptionInitialBuy5001User starts a subscription
SubscriptionRestarted5002A previously interrupted subscription restarted
SubscriptionRenewed5003Subscription automatically renewed
SubscriptionExpired5004Subscription expired
SubscriptionDidChangeRenewalStatus5005User changed the autorenew status
IsInBillingRetryPeriod5006User is in billing retry
SubscriptionProductChange5007User upgrades or downgrades the subscription
InAppPurchase5008In App Purchase
SubscriptionRefund5009Subscription Refund
SubscriptionPaused5010Subscription Paused
SubscriptionResumed5011Subscription Resumed
ConnectLicense5012License Code Connected
DisconnectLicense5013License 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.