Etkinlik akışları

Adapty’de, müşterinin uygulamadaki yolculuğu boyunca çeşitli abonelik etkinlikleri alırsınız. Bu abonelik akışları, kullanıcıların abone olma, iptal etme veya aboneliği yeniden etkinleştirme süreçlerinde Adapty’nin ürettiği etkinlikleri anlamanıza yardımcı olan yaygın senaryoları özetlemektedir.

Apple’ın abonelik ödemelerini gerçek başlangıç/yenileme zamanından birkaç saat önce işlediğini unutmayın. Aşağıdaki akışlarda, şemaları sade tutmak adına abonelik başlangıcı/yenilemesi ile ödemenin aynı anda gerçekleştiğini gösteriyoruz.

Ayrıca, aynı işleme ait etkinlikler eş zamanlı olarak gerçekleşir ve Event Feed’inizde herhangi bir sırayla görünebilir; bu sıra, şemalarımızdaki dizilimden farklı olabilir.

Abonelik Yaşam Döngüsü

İlk Satın Alma Akışı

Bu akış, bir müşteri deneme süresi olmaksızın ilk kez abonelik satın aldığında gerçekleşir. Bu durumda şu etkinlikler oluşturulur:

  • Subscription started
  • Kullanıcıya erişim vermek için Access level updated

Abonelik yenileme tarihi geldiğinde abonelik yenilenir. Bu durumda şu etkinlikler oluşturulur:

  • Yeni bir abonelik dönemini başlatmak için Subscription renewal
  • Abonelik bitiş tarihini güncelleyerek erişimi bir dönem daha uzatmak için Access level updated

Ödemenin başarısız olduğu veya kullanıcının yenilemeyi iptal ettiği durumlar sırasıyla Fatura Sorunu Sonuç Akışı ve Abonelik İptal Akışı bölümlerinde açıklanmaktadır.

Initial_Purchase_Flow.webp

Abonelik İptal Akışı

Bir kullanıcı aboneliğini iptal ettiğinde şu etkinlikler oluşturulur:

  • Aboneliğin mevcut dönem sonuna kadar aktif kalacağını ve ardından kullanıcının erişimini kaybedeceğini belirtmek için Subscription renewal canceled
  • Erişim için otomatik yenilemeyi devre dışı bırakmak üzere Access level updated etkinliği oluşturulur

Abonelik sona erdiğinde, aboneliğin bitişini işaretlemek için Subscription expired (churned) etkinliği tetiklenir.

Subscription_Cancellation_Flow.webp

İade onaylanırsa Subscription expired (churned) yerine şu etkinlik oluşturulur:

  • Aboneliği sonlandırıp iade ayrıntılarını sağlamak için Subscription refunded
Subscription_Cancellation_Flow_with_a_Refund.webp

Stripe’ta abonelik, kalan süre atlanarak anında iptal edilebilir. Bu durumda tüm etkinlikler eş zamanlı olarak oluşturulur:

  • Subscription renewal cancelled
  • Subscription expired (churned)
  • Kullanıcının erişimini kaldırmak için Access Level updated

İade onaylanırsa, onaylandığı anda Subscription refunded etkinliği de tetiklenir.

Subscription_Immediate_Cancellation_Flow.webp

Abonelik Yeniden Etkinleştirme Akışı

Bir kullanıcı aboneliğini iptal edip süresi dolduktan sonra aynı aboneliği yeniden satın alırsa Subscription renewed etkinliği oluşturulur. Erişimde bir boşluk olsa bile Adapty, vendor_original_transaction_id aracılığıyla bunu tek bir işlem zinciri olarak değerlendirir. Dolayısıyla yeniden satın alma, bir yenileme olarak kabul edilir.

Access level updated etkinliği iki kez oluşturulur:

  • Abonelik sona erdiğinde kullanıcının erişimini kaldırmak için
  • Abonelik yeniden satın alındığında erişim vermek için
Subscription_Rejoin_Flow.webp

Abonelik Duraklatma Akışı (Yalnızca Android)

Bu akış, kullanıcının Android’de bir aboneliği duraklatıp daha sonra devam ettirmesi durumunda geçerlidir.

Aboneliği duraklatmanın etkileri gecikmelidir. Kullanıcı, abonelik yenilenmeden önce duraklatırsa abonelik aktif kalır ve kullanıcı fatura döneminin geri kalanı için ücretli erişimi sürdürür.

  1. Kullanıcı aboneliği duraklatırsa Subscription paused (Android only) etkinliği tetiklenir.

  2. Abonelik döneminin sonunda Adapty, kullanıcının erişimini kaldırmak için Access level updated etkinliğini tetikler.

  3. Kullanıcı aboneliği devam ettirdiğinde şu etkinlikler tetiklenir:

    • Subscription renewed
    • Kullanıcının erişimini yeniden sağlamak için Access level updated

Bu abonelikler, aynı vendor_original_transaction_id ile bağlantılı tek bir işlem zincirine ait olacaktır.

Subscription_Paused_Flow.webp

Deneme Akışları

Uygulamanızda deneme süresi kullanıyorsanız ek deneme ile ilgili etkinlikler alırsınız.

Başarılı Dönüşümlü Deneme Akışı

En yaygın akış, kullanıcının deneme süresini başlatıp kredi kartı bilgilerini girerek deneme süresi sonunda standart aboneliğe geçtiği durumdur. Bu durumda deneme başlangıcında şu etkinlikler oluşturulur:

  • Deneme başlangıcını işaretlemek için Trial started
  • Erişim vermek için Access level updated

Standart abonelik başladığında Trial converted etkinliği oluşturulur.

Trial_Flow_with_Successful_Conversion.webp

Başarısız Dönüşümlü Deneme Akışı

Kullanıcı deneme süresi aboneliğe dönüşmeden önce iptal ederse iptal anında şu etkinlikler oluşturulur:

  • Denemenin aboneliğe otomatik dönüşümünü devre dışı bırakmak için Trial renewal cancelled
  • Erişim yenilemesini devre dışı bırakmak için Access level updated

Kullanıcı, deneme süresi sonuna kadar erişime sahip olur; deneme sona erdiğinde Trial expired etkinliği oluşturulur.

Trial_Flow_without_Successful_Conversion.webp

Süresi Dolmuş Deneme Sonrası Abonelik Yeniden Etkinleştirme Akışı

Deneme süresi (fatura sorunu veya iptal nedeniyle) sona ererse ve kullanıcı daha sonra abonelik satın alırsa şu etkinlikler oluşturulur:

  • Kullanıcıya erişim vermek için Access level updated
  • Trial converted

Deneme ile abonelik arasında bir boşluk olsa bile Adapty, ikisini vendor_original_transaction_id aracılığıyla bağlar. Bu dönüşüm, sıfır fiyatlı bir denemeyle başlayan sürekli bir işlem zincirinin parçası olarak değerlendirilir. Bu nedenle Subscription started yerine Trial converted etkinliği oluşturulur.

Subscription_Reactivation_Flow_after_Expired_Trial.webp

Ürün Değişiklikleri

Bu bölüm, yükseltme, düşürme veya başka bir gruptan ürün satın alma gibi aktif aboneliklerde yapılan düzenlemeleri kapsar.

Anlık Ürün Değişikliği Akışı

Kullanıcı ürünü değiştirdikten sonra, abonelik sona ermeden sistem üzerinde değişiklik hemen uygulanabilir (çoğunlukla yükseltme veya ürün değişikliği durumlarında). Bu durumda, ürün değişikliği anında:

  • Access level değiştirilir ve iki Access level updated etkinliği oluşturulur:
    1. Birinci ürüne erişimi kaldırmak için.
    2. İkinci ürüne erişim vermek için.
  • Eski abonelik sona erer ve iade yapılır (Subscription refunded etkinliği cancellation_reason = upgraded ile oluşturulur). Subscription expired (churned) etkinliğinin oluşturulmadığını, Subscription refunded etkinliğinin onu yerine geçtiğini unutmayın.
  • Yeni abonelik başlar (yeni ürün için Subscription started etkinliği oluşturulur).
Immediate_Product_Change_Flow_Upgrade.webp

Kullanıcı aboneliği düşürürse ilk abonelik ücretli dönem sonuna kadar devam eder ve abonelik sona erdiğinde daha düşük kademeli yeni bir abonelikle değiştirilir. Bu durumda, yalnızca erişim otomatik yenilemeyi devre dışı bırakmak için Access level updated etkinliği hemen oluşturulur. Diğer tüm etkinlikler aboneliğin fiilen değiştirildiği anda oluşturulur:

  • İkinci ürüne erişim vermek için başka bir Access level updated etkinliği oluşturulur.
  • Birinci ürünün aboneliğini sonlandırmak için Subscription expired (churned) etkinliği oluşturulur.
  • Yeni ürün için yeni aboneliği başlatmak üzere Subscription started etkinliği oluşturulur.
Delayed_Product_Change_Downgrade.webp

Gecikmeli Ürün Değişikliği Akışı

Bir de kullanıcının ürünü abonelik yenileme anında değiştirdiği bir seçenek vardır. Bu seçenek bir öncekine çok benzer: eski ürün için erişim otomatik yenilemeyi devre dışı bırakmak üzere hemen bir Access level updated etkinliği oluşturulur. Diğer tüm etkinlikler, kullanıcı aboneliği değiştirdiğinde ve sistem üzerinde uygulandığında oluşturulur:

  • İkinci ürüne erişim vermek için başka bir Access level updated etkinliği oluşturulur.
  • Birinci ürünün aboneliğini sonlandırmak için Subscription expired (churned) etkinliği oluşturulur.
  • Yeni ürün için yeni aboneliği başlatmak üzere Subscription started etkinliği oluşturulur.
Product_Change_on_Renewal_Flow.webp

Fatura Sorunu Sonuç Akışı

Denemenin dönüştürülmesi veya aboneliğin yenilenmesi fatura sorunu nedeniyle başarısız olursa, sonraki süreç ek sürenin etkin olup olmadığına bağlıdır.

Ek süre etkinken ödeme başarılı olursa deneme dönüşür veya abonelik yenilenir. Başarısız olursa uygulama mağazası kullanıcıyı abonelik için ücretlendirmeye çalışmaya devam eder; hâlâ başarısız olursa mağaza deneme veya aboneliği kendisi sonlandırır.

Bu nedenle, fatura sorunu anında Adapty’de şu etkinlikler oluşturulur:

  • Billing issue detected
  • Entered grace period (ek süre etkinse)
  • Ek süre sonuna kadar erişimi sağlamak için Access level updated

Ödeme daha sonra başarılı olursa Adapty bir Trial converted veya Subscription renewed etkinliği kaydeder ve kullanıcı erişimini kaybetmez.

Ödeme sonuçta başarısız olup uygulama mağazası aboneliği iptal ederse Adapty şu etkinlikleri üretir:

  • cancellation_reason: billing_error ile Trial expired veya Subscription expired (churned)
  • Kullanıcının erişimini kaldırmak için Access level updated
Billing_Issue_Outcome_Flow_with_Grace_Period.webp

Ek süre olmadan, Fatura Yeniden Deneme Süresi (uygulama mağazasının kullanıcıyı ücretlendirmeye çalışmaya devam ettiği süre) hemen başlar.

Ek süre sonuna kadar ödeme hiç başarılı olmazsa akış aynıdır: uygulama mağazası aboneliği otomatik olarak sonlandırdığında aynı etkinlikler oluşturulur:

  • cancellation_reason değeri billing_error olan Trial expired veya Subscription expired (churned) etkinliği

  • Kullanıcının erişimini kaldırmak için Access level updated

Billing_Issue_Outcome_Flow_without_Grace_Period.webp

Kullanıcı Hesapları Arasında Satın Alma Paylaşımı Akışları

Farklı bir Customer User ID hesabına bağlı bir aboneliği geri yüklemeye veya uzatmaya çalışan bir Customer User ID olduğunda, Adapty’nin Sharing paid access between user accounts ayarı erişimin nasıl yönetileceğini belirler. Akış, seçilen seçeneğe göre değişir.

Yeni Kullanıcıya Erişim Aktarım Akışı

Önerilen seçenek, access level’i yeni kullanıcıya aktarmaktır. Bu yöntem, tutarlı analitik için orijinal kullanıcının işlem geçmişini korur. Yalnızca 2 Access level updated etkinliği oluşturulur:

  1. Birinci kullanıcının erişimini kaldırmak için
  2. İkinci kullanıcıya erişim vermek için
Transfer_Access_to_New_User_Flow.webp

Bu senaryoda oluşturulan etkinliklerdeki access level atama ve aktarımla ilgili alanların dökümü:

  • Kullanıcı A: Access level updated (Kullanıcı A uygulamada abonelik satın aldığında gönderilir)

    {
      "profile_id": "00000000-0000-0000-0000-000000000000",
      "customer_user_id": UserA,
      "event_properties": {
        "profile_has_access_level": true,
      },
      "profiles_sharing_access_level": null
    }
  • Kullanıcı A: Access level updated (Uygulama yeniden yüklendiğinde ve Kullanıcı B giriş yaptığında, Kullanıcı A’nın erişimi kaldırıldığında gönderilir)

    {
      "profile_id": "00000000-0000-0000-0000-000000000000",
      "customer_user_id": UserA,
      "event_properties": {
        "profile_has_access_level": false,
      },
      "profiles_sharing_access_level": null
    }
  • Kullanıcı B: Access level updated (Kullanıcı B giriş yaptığında ve erişim verildiğinde gönderilir)

    {
      "profile_id": "00000000-0000-0000-0000-000000000001",
      "customer_user_id": UserB,
      "event_properties": {
        "profile_has_access_level": true,
      },
      "profiles_sharing_access_level": null
    }

Kullanıcılar Arasında Erişim Paylaşımı Akışı

Bu seçenek, cihazı aynı Apple/Google kimliğiyle oturum açılmış birden fazla kullanıcının aynı access level’i paylaşmasına olanak tanır. Kullanıcı uygulamayı yeniden yükleyip farklı bir e-posta ile giriş yaptığında önceki satın alımına erişmeye devam edebileceğinden bu durum yararlıdır. Bu seçenekle, birden fazla tanımlı kullanıcı aynı access level’i paylaşabilir. Erişim paylaşılırken tüm işlemler, eksiksiz işlem geçmişi ve analitik için orijinal Customer User ID altında kaydedilir.

Bu nedenle yalnızca 1 etkinlik oluşturulur: İkinci kullanıcıya erişim vermek için Access level updated.

Share_Access_Between_Users_Flow.webp

Bu senaryoda oluşturulan etkinliklerdeki access level atama ve paylaşımla ilgili alanların dökümü:

Kullanıcı B: Access level updated (Kullanıcı B giriş yaptığında ve erişim verildiğinde gönderilir)

{
  "profile_id": "00000000-0000-0000-0000-000000000000",
  "customer_user_id": UserA,
  "event_properties": {
    "profile_has_access_level": true,
  },
  "profiles_sharing_access_level": [
    {
      "profile_id": "00000000-0000-0000-0000-000000000001,
      "customer_user_id": UserB
    }
  ]
}

Kullanıcılar Arasında Erişim Paylaşılmaması Akışı

Bu seçenekle, access level’i ilk alan kullanıcı profili bunu kalıcı olarak elinde tutar. Satın alımların tek bir Customer User ID ile ilişkilendirilmesi gerektiğinde idealdir.

Share_Access_Between_Users_Disabled_Flow.webp