Revenuecat webhook eventtypeları bana açıkla hangi durumlarda bu eventler gerçekleşir bu eventler gerçekleştiğinde nasıl aksiyonlar alınmalı örneklerle açıkla  Event Types

Webhook Event Type	Description	App Store	Play Store	Amazon	Stripe	Promo
TEST	Test event issued through the RevenueCat dashboard.	✅	✅	❌	❌	❌
INITIAL_PURCHASE	A new subscription has been purchased.	✅	✅	✅	✅	❌
RENEWAL	An existing subscription has been renewed or a lapsed user has resubscribed.	✅	✅	✅	✅	❌
CANCELLATION	A subscription or non-renewing purchase has been cancelled or refunded. Note that in the event of refunds, a subscription's auto-renewal setting may still be active. See cancellation reasons for more details. Note that, for the case of subscription refunds, this event is only fired if the latest subscription period of a subscription is refunded, refunds for earlier subscription periods do not trigger this event.	✅	✅	✅	✅	✅
UNCANCELLATION	A non-expired cancelled subscription has been re-enabled.	✅	✅	✅	❌	❌
NON_RENEWING_PURCHASE	A customer has made a purchase that will not auto-renew.	✅	✅	✅	✅	✅
SUBSCRIPTION_PAUSED	The subscription has set to be paused at the end of the period. Please note: You should not revoke access when receiving a SUBSCRIPTION_PAUSED event, but only when receiving an EXPIRATION event (which will have the expiration reason SUBSCRIPTION_PAUSED).	❌	✅	❌	❌	❌
EXPIRATION	A subscription has expired and access should be removed. If you have Platform Server Notifications configured, this event will occur as soon as we are notified (within seconds to minutes) of the expiration. If you do not have notifications configured, delays may be approximately 1 hour.	✅	✅	✅	✅	✅
BILLING_ISSUE	There has been a problem trying to charge the subscriber. This does not mean the subscription has expired. Can be safely ignored if listening to CANCELLATION event + cancel_reason=BILLING_ERROR.	✅	✅	✅	✅	❌
PRODUCT_CHANGE	A subscriber has changed the product of their subscription. This does not mean the new subscription is in effect immediately. See Managing Subscriptions for more details on updates, downgrades, and crossgrades.	✅	✅	❌	✅	❌
TRANSFER	A transfer of transactions and entitlements was initiated between one App User ID(s) to another. Please note: The webhook will only be sent for the destination user despite us displaying this event in both customer histories because the event body is exactly the same for both users.	✅	✅	✅	✅	❌
SUBSCRIPTION_EXTENDED	An existing subscription has been extended (the expiration date of the current subscription period has been pushed back to the future). This event is fired when a Apple App Store or Google Play Store subscription is extended through the store's API. On the Google Play Store, this event can also sometimes fire when Google defers charging for a renewal by less than 24 hours (for unknown reasons). In this case, you will receive a SUBSCRIPTION_EXTENDED webhook, followed by either a RENEWAL or BILLING_ISSUE webhook within the next 24 hours.	✅	✅	✅	✅	❌
TEMPORARY_ENTITLEMENT_GRANT	RevenueCat was temporarily unable to validate a purchase with the respective store and has granted a short-term entitlement to the customer. This event is sent in exceptional situations (for example, a partial app store outage) and is used to avoid customers making a purchase but not getting access to their entitlement. The expiration date of the entitlement is always at most 24 hours in the future. Once the exceptional situation has been resolved and RevenueCat can validate the purchases, a regular INITIAL_PURCHASE event will be sent. If the purchase can't be validated, an EXPIRATION event with the same transaction_id is sent. Please note: because this event type is dispatched in cases of limited connectivity with the store servers, it contains less information than a regular purchase event. The following fields are guaranteed to be present: app_user_id, purchased_at_ms, expiration_at_ms, event_timestamp_ms, product_id, entitlement_ids, store, transaction_id (note: the transaction_id might be different from the store's transaction_id present in a subsequent INITIAL_PURCHASE event; depending on the store, the product_id might be different from the product_id present in the subsequent INITIAL_PURCHASE event).	✅	✅	✅	✅	❌
Events Format

Webhook events are serialized in JSON. The body of a POST request to your server will contain the serialized event, as well as the API version.

Code
{
  "api_version": "1.0",
  "event": {
    "aliases": [
      "yourCustomerAliasedID",
      "yourCustomerAliasedID"
    ],
    "app_id": "yourAppID",
    "app_user_id": "yourCustomerAppUserID",
    "commission_percentage": 0.3,
    "country_code": "US",
    "currency": "USD",
    "entitlement_id": "pro_cat",
    "entitlement_ids": [
      "pro_cat"
    ],
    "environment": "PRODUCTION",
    "event_timestamp_ms": 1591121855319,
    "expiration_at_ms": 1591726653000,
    "id": "UniqueIdentifierOfEvent",
    "is_family_share": false,
    "offer_code": "free_month",
    "original_app_user_id": "OriginalAppUserID",
    "original_transaction_id": "1530648507000",
    "period_type": "NORMAL",
    "presented_offering_id": "OfferingID",
    "price": 2.49,
    "price_in_purchased_currency": 2.49,
    "product_id": "onemonth_no_trial",
    "purchased_at_ms": 1591121853000,
    "store": "APP_STORE",
    "subscriber_attributes": {
      "$Favorite Cat": {
        "updated_at_ms": 1581121853000,
        "value": "Garfield"
      }
    },
    "takehome_percentage": 0.7,
    "tax_percentage": 0.3,
    "transaction_id": "170000869511114",
    "type": "INITIAL_PURCHASE"
  }
}


Common Fields

Field	Type	Description	Possible Values
type	String	Type of the event.	TEST, INITIAL_PURCHASE, NON_RENEWING_PURCHASE, RENEWAL, PRODUCT_CHANGE, CANCELLATION, BILLING_ISSUE, SUBSCRIBER_ALIAS, SUBSCRIPTION_PAUSED, UNCANCELLATION, TRANSFER, SUBSCRIPTION_EXTENDED
id	String	Unique identifier of the event.	
app_id	String	Unique identifier of the app the event is associated with. Corresponds to an app within a project. This value will soon be visible in the app's configuration page in project settings.	
event_timestamp_ms	Integer	The time that the event was generated. Does not necessarily coincide with when the action that triggered the event occurred (purchased, cancelled, etc).	
app_user_id	String	Last seen app user id of the subscriber.	
original_app_user_id	String	The first app user id used by the subscriber.	
aliases	Array	All app user ids ever used by the subscriber.	
subscriber_attributes	Array	All attributes set for the customer, including common reserved attributes such as $idfa, $gpsAdId, $campaign, $keyword, etc.	
📘
When looking up users from the webhook in your systems, make sure to search both the original_app_user_id and the aliases array.
📘
If we have to retry a webhook for any reason, the retry will have the same id and event_timestamp_ms of the first attempt.