SKAd Ağı Dönüşüm Değeri Şeması için Gelir Bölümlerini Hesaplayın

1. Giriş

Başlamadan Önce Bazı Bağlamlar

Bir iOS Uygulama geliştiricisiyseniz iOS 14.5+ gizlilik güncellemelerini duymuş olmalısınız. Apple, yükleme sonrasında anlamlı dönüşüm işlemlerini ölçmek için, kullanıcı gizliliğine saygı göstererek reklam kampanyalarınızın başarısını ölçmenize olanak tanıyan SKAd Network API'yi sağlar. İş ihtiyaçlarınıza bağlı olarak, kampanyalarınız hakkında anlamlı bilgiler elde etmek için SKAd Ağından yararlanmanın en uygun yolunu bulabilirsiniz. Bu codelab'de, uygulama kurulumu sonrası geliri gruplar halinde gruplandırmak için BigQuery'deki GA4F verilerinizden yararlanmaya yönelik örnek bir metodolojiyi inceliyoruz. Daha sonra bunları, uygulama ilişkilendirme iş ortağınızla ayarlamak için kullanabilirsiniz. Bu codelab gelire dayalı bir yaklaşım kullanırken, SKAN ölçümü için etkinliklere veya huniye dayalı yaklaşımları da kullanabilirsiniz. Daha ayrıntılı rehberlik için lütfen bu yardım merkezine bakın. Bu yalnızca bir örnektir, resmi bir Google önerisi değildir . Özel iş ihtiyaçlarınıza göre kendi şemanızı tasarlayabilirsiniz.

Neyi kapsamayı planlıyoruz?

  • BigQuery'de GA4F verilerini keşfedin
  • 0-2 gün içinde dönüşüm gerçekleştiren kullanıcılara ilişkin gelir verilerini bulun
  • Gelir verilerini gruplar halinde gruplandırın
  • Her paketteki kullanıcı dağılımını anlayın
  • Paketleri Appsflyer SKAN Conversion Studio'da uygulayın

Önkoşullar

2. BigQuery Export'a Erişim

Proje Ayarları > Entegrasyonlar > BigQuery'yi ziyaret ederek GA4F'deki veri kümesine gidin. Geçişin ilk önce etkinleştirilmesi gerekiyor ve etkinleştirildikten sonra veri kümesinin kullanılabilir olması yaklaşık 48 saat sürer. Aşağıda gösterilen bağlantıya tıklayabilirsiniz; bu sizi BigQuery'ye yönlendirecektir.

1aa4e20bfd3419d1.png

Bazı sorguları çalıştır

Artık BigQuery'de olduğunuza göre oluşturulan günlük tabloları görmelisiniz. Aşağıdaki örnek ekran görüntüsünde 64 günlük tablo görüyoruz, yani dışa aktarma 64 gündür çalışıyor. İlk kez erişiyorsanız, önceki günün verilerine ilişkin yalnızca 1 günlük tablo görebilirsiniz. Sağ tarafta tablo şemasını görüyorsunuz. Alanlarla ilgili daha fazla ayrıntıya buradan ulaşabilirsiniz

Sorgunuzu yazmaya başlamak için Sorgu > Yeni sekmede seçeneğine tıklayabilirsiniz.

42ba59ec655c5d1b.png

Daha sonra örnek sorguyu yeni sekmede çalıştırmayı deneyebilirsiniz

70ef90d32b7cd7f1.png

3. Gelir verilerini analiz edin

Yükleme verileri getiriliyor

Şimdi Gelir gruplarını oluşturmaya başlamak için öncelikle uygulamayı son 24 ila 72 saat içinde yükleyen kullanıcılara ait verilere bakmamız gerekiyor. SKAd Network 4.0, verileri 0-2 gün içinde görüntülemenizi sağlarken, SKAd Network 3.5 varsayılan olarak 24 saate izin verir. (Uygulama İlişkilendirme Ortağınızın yeteneklerine bağlı olarak, bu etkinlik penceresini genel olarak 72 saati aşmayacak şekilde değiştirebilirsiniz). Kullanıcılar uygulamayı yükleyip ilk kez açtığında, First_open etkinliği SDK tarafından tetiklenir ve BigQuery'ye kaydedilir.

BigQuery için kullanabileceğiniz tanımlayıcı user_pseudo_id'dir (uygulama örneği kimliği olarak da bilinir), dolayısıyla bu kullanıcıları bulmak için aşağıdaki sorguyu kullanabilirsiniz.

SELECT
  user_pseudo_id,
  event_name,
  event_date,
  event_timestamp
FROM `project_name.dataset_name.events_2023*`
WHERE
  event_name = 'first_open'
  AND platform = 'IOS'

Bu sorguyla ilgili dikkat edilmesi gereken birkaç nokta

  • Lütfen tablo adını Analytics'ten dışa aktarılan tablonuzla değiştirin. Birden fazla günlük tabloyu sorgulamak için joker karakterler kullanabilirsiniz. Örneğin, 2023*, 2023'teki tüm verileri sorgulayacaktır
  • Çok sayıda kullanıcınız varsa, daha hızlı işlem yapmak için yalnızca son 30 günü de sorgulayabilirsiniz.
  • Platform = 'IOS'a göre filtreleme yapıyoruz. Firebase projenizde birden fazla iOS Uygulamanız olması durumunda, belirli bir uygulamaya ilişkin verileri almak amacıyla app_info.firebase_app_id için bir filtre de ekleyebilirsiniz.

Gelir verileri getiriliyor

Şimdi kullanıcılarınız için gelir bulmak amacıyla bir sorguya bakalım. Bu durumda gelir olaylarınızın in_app_purchase ve ad_impression olduğunu varsayarız. in_app_purchase'den elde edilen gelir event_value_usd cinsinden mevcuttur, ad_impression için ise gelir, etkinlik parametreleri içindeki değer parametresinde mevcuttur. BigQuery'deki etkinlik parametrelerine aşina değilseniz buradaki tanımı kontrol etmenizi öneririz. Ayrıca event_params öğesinden değer çıkarmayı da kapsayan resmi referansımızdaki bu örnek sorguyu deneyebilirsiniz.

SELECT
  user_pseudo_id,
  event_name,
  EXTRACT(date FROM Parse_datetime('%Y%m%d', event_date)) AS event_date,
  (
    SELECT COALESCE(value.int_value, value.float_value, value.double_value, NULL)
    FROM UNNEST(event_params)
    WHERE
      KEY = 'value'
      AND event_name = 'ad_impression'
  ) AS ad_funded_revenue,
  (
    SELECT value.string_value
    FROM UNNEST(event_params)
    WHERE
      KEY = 'currency'
      AND event_name = 'ad_impression'
  ) AS ad_revenue_currency,
  (
    CASE
      WHEN event_name = 'in_app_purchase' THEN event_value_in_usd
      ELSE 0
      END) AS iap_revenue_usd,
FROM `project_name.dataset_name.events_2023*`
WHERE
  platform = 'IOS'
  AND event_name IN (
    'in_app_purchase',
    'ad_impression')

Burada sorgunun ne yaptığını anlayalım. Bunlar fark edeceğiniz şeyler

  • WHERE deyiminde, yalnızca bunlarla ilgilendiğimiz için gelir olaylarını filtreliyoruz ve geçen seferki gibi iOS verilerini arıyoruz
  • Şimdi, SELECT yan tümcesinde, reklam geliri olayının (ad_impression) para biriminin yanı sıra değerini de alıyoruz ve etkinlik in_app_purchase olduğunda event_value_in_usd değerini alıyoruz.
  • Birden fazla para birimi gönderiyorsanız, bu analiz için öncelikle tek bir para birimine uyum sağlamanız gerekir. Bu örneğin amaçları doğrultusunda, reklamla finanse edilen gelirin para biriminin de ABD Doları olduğunu varsayacağız.

Çıktı aşağıdaki gibi olacaktır (user_pseudo_id sütunu burada düzenlenmiştir).

1e1e6943e4b3a6d8.png

Bu verileri birleştirmek

Şu ana kadar iki sorgu çalıştırdık; biri uygulamayı yükleyen ve açan kullanıcılara ait verileri bulmak için, diğeri ise bu kullanıcıların gelirini bulmak için. Şimdi SKAd Ağı sınırlamaları hakkında konuştuklarımızı hatırlayalım. İlişkilendirme aralığı yalnızca kurulumdan sonraki 0-2 gün içinde kullanılabilir. Bu nedenle, yükleme ve gelir için etkinlik zaman damgalarını kontrol etmemiz ve bilgileri yalnızca bu zaman dilimi içinde gerçekleşmesi durumunda almamız gerekecektir. Şimdi iki günlük uygulama kurulumundan sonraki her gönderi için toplam geliri sağlayan bir sorguda birleştirmeyi deneyelim

#creating the install table
WITH
  install_table AS (
    SELECT
      user_pseudo_id,
      event_name,
      event_date,
      event_timestamp
    FROM `project_name.dataset_name.events_2023*`
    WHERE
      event_name = 'first_open'
      AND platform = 'IOS'
  ),
  #creating the revenue table
  revenue_table AS (
    SELECT
      user_pseudo_id,
      event_name,
      event_timestamp,
      EXTRACT(date FROM Parse_datetime('%Y%m%d', event_date)) AS event_date,
      (
        SELECT COALESCE(value.int_value, value.float_value, value.double_value, NULL)
        FROM UNNEST(event_params)
        WHERE
          KEY = 'value'
          AND event_name = 'ad_impression'
      ) AS ad_funded_revenue,
      (
        SELECT value.string_value
        FROM UNNEST(event_params)
        WHERE
          KEY = 'currency'
          AND event_name = 'ad_impression'
      ) AS ad_revenue_currency,
      (
        CASE
          WHEN event_name = 'in_app_purchase' THEN event_value_in_usd
          ELSE 0
          END) AS iap_revenue_usd,
    FROM `project_name.dataset_name.events_2023*`
    WHERE
      platform = 'IOS'
      AND event_name IN (
        'in_app_purchase',
        'ad_impression')
  )
SELECT
  it.user_pseudo_id AS user_pseudo_id,
  #combine ad revenue and IAP revenue, assuming both are in same currency
  sum(ifnull(rt.iap_revenue_usd,0) + ifnull(rt.ad_funded_revenue,0)) AS total_revenue,
FROM install_table it
INNER JOIN revenue_table rt
  ON it.user_pseudo_id = rt.user_pseudo_id
WHERE
  rt.event_timestamp >= it.event_timestamp
  AND rt.event_timestamp
    <= it.event_timestamp + 86400000000 * 2  #added 86400 000 millisecond as 24 hours, taking for 2 days later
GROUP BY 1

Sorgu, user_pseudo_id alanındaki yükleme verileriyle gelir verilerini birleştirmeye çalışır ve ardından zaman damgasının 2 gün içinde olduğundan emin olmamız gerekir. SKAd Network 3.5 kullanıyorsanız varsayılan süre 24 saattir, dolayısıyla koşulu yalnızca 1 günün verilerini içerecek şekilde de değiştirebilirsiniz.

Geliri gruplar halinde gruplandırma

Önceki sorgudan sonra user_pseudo_id'ye ve toplam gelire sahip olacaksınız.

2c1986b93e937d19.png

Artık bunu dönüşüm değeri aralıklarımız için kullanabileceğimiz gruplar halinde birleştirmemiz gerekecek. Bu amaçla BigQuery'de bu aralıkları sizin için otomatik olarak oluşturan approx_quantiles fonksiyonunu kullanacağız. Bu örneğin amaçları doğrultusunda 5 aralık oluşturmak istediğimizi varsayalım, bu nedenle yalnızca SELECT approx_quantiles(total_revenue, 5) AS paketlerini kullanabiliriz

Bununla birlikte, bunu genel sorgumuza dahil edelim

#creating the install table
WITH
  install_table AS (
    SELECT
      user_pseudo_id,
      event_name,
      event_date,
      event_timestamp
    FROM `project_name.dataset_name.events_2023*`
    WHERE
      event_name = 'first_open'
      AND platform = 'IOS'
  ),
  #creating the revenue table
  revenue_table AS (
    SELECT
      user_pseudo_id,
      event_name,
      event_timestamp,
      EXTRACT(date FROM Parse_datetime('%Y%m%d', event_date)) AS event_date,
      (
        SELECT COALESCE(value.int_value, value.float_value, value.double_value, NULL)
        FROM UNNEST(event_params)
        WHERE
          KEY = 'value'
          AND event_name = 'ad_impression'
      ) AS ad_funded_revenue,
      (
        SELECT value.string_value
        FROM UNNEST(event_params)
        WHERE
          KEY = 'currency'
          AND event_name = 'ad_impression'
      ) AS ad_revenue_currency,
      (
        CASE
          WHEN event_name = 'in_app_purchase' THEN event_value_in_usd
          ELSE 0
          END) AS iap_revenue_usd,
    FROM `project_name.dataset_name.events_2023*`
    WHERE
      platform = 'IOS'
      AND event_name IN (
        'in_app_purchase',
        'ad_impression')
  ),
  total_revenue_table AS (
    SELECT
      it.user_pseudo_id AS user_pseudo_id,
      #combine ad revenue and IAP revenue, assuming both are in same currency
      sum(ifnull(rt.iap_revenue_usd,0) + ifnull(rt.ad_funded_revenue,0)) AS total_revenue,
    FROM install_table it
    INNER JOIN revenue_table rt
      ON it.user_pseudo_id = rt.user_pseudo_id
    WHERE
      rt.event_timestamp >= it.event_timestamp
      AND rt.event_timestamp
        <= it.event_timestamp + 86400000000 * 2  #added 86400 000 millisecond as 24 hours
    GROUP BY 1
  )
SELECT approx_quantiles(total_revenue, 5) AS buckets FROM total_revenue_table

Bu sorgu geliri 5 gruba böler ve BigQuery tutarlı bir yüzdelik dağılım sağlamaya çalışır

ba46f5d993449948.png

Bu paketlerle kullanıcı dağıtımını analiz edin

Kullanıcılarınızın her bir gruptaki dağılımını anlamak istiyorsanız bu isteğe bağlı bir adımdır. Örneğimiz için, önceki sorguda döndürülen paket aralıkları şöyledir:

  • 0,1
  • 0,5
  • 2
  • 2.5
  • 5 [son değer aralık konfigürasyonunda kullanılmayacaktır]

Son aralıklar için son 5'i göz ardı edeceğiz, çünkü bu genellikle maksimum değerdir ve 2,5'u son aralık olarak düşünebiliriz. Bunun nedeni, uygulama ilişkilendirme sağlayıcılarının ROAS'ı aralığın ortalamasını kullanarak hesaplama eğiliminde olması ve dolayısıyla daha tekdüze bir hesaplama için aykırı değerin hariç tutulması gerektiğidir.

Şimdi tüm aralıklardaki her tarih için kullanıcı sayısına bakmaya çalışacağız, böylece her bir paketteki günlük kullanıcı hacmini anlayabiliriz.Bunu, paket değerlerini değiştirebileceğiniz bu örnek sorguyu kullanarak yapabiliriz. gerçek verileriniz ve sorgu şuna benzer:

#creating the install table
WITH
  install_table AS (
    SELECT
      user_pseudo_id,
      event_name,
      event_date,
      event_timestamp
    FROM `project_name.dataset_name.events_2023*`
    WHERE
      event_name = 'first_open'
      AND platform = 'IOS'
  ),
  #creating the revenue table
  revenue_table AS (
    SELECT
      user_pseudo_id,
      event_name,
      event_timestamp,
      EXTRACT(date FROM Parse_datetime('%Y%m%d', event_date)) AS event_date,
      (
        SELECT COALESCE(value.int_value, value.float_value, value.double_value, NULL)
        FROM UNNEST(event_params)
        WHERE
          KEY = 'value'
          AND event_name = 'ad_impression'
      ) AS ad_funded_revenue,
      (
        SELECT value.string_value
        FROM UNNEST(event_params)
        WHERE
          KEY = 'currency'
          AND event_name = 'ad_impression'
      ) AS ad_revenue_currency,
      (
        CASE
          WHEN event_name = 'in_app_purchase' THEN event_value_in_usd
          ELSE 0
          END) AS iap_revenue_usd,
    FROM `project_name.dataset_name.events_2023*`
    WHERE
      platform = 'IOS'
      AND event_name IN (
        'in_app_purchase',
        'ad_impression')
  ),
  total_revenue_table AS (
    SELECT
      it.user_pseudo_id AS user_pseudo_id,
      rt.event_date,
      #combine ad revenue and IAP revenue, assuming both are in same currency
      sum(ifnull(rt.iap_revenue_usd,0) + ifnull(rt.ad_funded_revenue,0)) AS total_revenue,
    FROM install_table it
    INNER JOIN revenue_table rt
      ON it.user_pseudo_id = rt.user_pseudo_id
    WHERE
      rt.event_timestamp >= it.event_timestamp
      AND rt.event_timestamp
        <= it.event_timestamp + 86400000000 * 2  #added 86400 000 millisecond as 24 hours
    GROUP BY 1, 2
  )
SELECT
  event_date,
  sum(CASE WHEN total_revenue BETWEEN 0 AND 0.1 THEN 1 ELSE 0 END) AS Bucket1,
  sum(CASE WHEN total_revenue BETWEEN 0.1 AND 0.5 THEN 1 ELSE 0 END) AS Bucket2,
  sum(CASE WHEN total_revenue BETWEEN 0.5 AND 2 THEN 1 ELSE 0 END) AS Bucket3,
  sum(CASE WHEN total_revenue BETWEEN 2 AND 2.5 THEN 1 ELSE 0 END) AS Bucket4,
  sum(CASE WHEN total_revenue > 2.5 THEN 1 ELSE 0 END) AS Bucket5
FROM total_revenue_table
GROUP BY 1 ORDER BY 1 DESC

Aşağıdaki gibi her gün için her gelir aralığındaki kullanıcıları döndürecektir. Herhangi bir grupta çok düşük sayılar veya genel olarak eşit olmayan bir dağılım görürseniz, bölüm sayısını ayarlayıp sorguyu yeniden çalıştırmak isteyebilirsiniz.

bf7d73085fe94cb6.png

SKAd Ağı 4.0 hakkında kısa bir bilgi

SKAd Network 4.0, 2 güne, 3-7 güne ve 8-35 güne kadar birden fazla dönüşüm aralığı sağlar. Yukarıdaki yaklaşımda, bu ek senaryolar için de verileri analiz etmek üzere pencereyi kolayca değiştirebilirsiniz. DÜŞÜK, ORTA ve YÜKSEK kaba taneli değerleri de mevcuttur. Yine bu yaklaşımı kullanmak isterseniz bunu 3 kova olarak düşünebilirsiniz, Yani kova sayısını 3 olarak değiştirerek DÜŞÜK, ORTA ve YÜKSEK eşiklerini alabilirsiniz.

4. İlişkilendirme sağlayıcınızla dağıtım

Belirli platforma bağlı olarak bu kılavuz değişebilir. Bu konudaki en güncel bilgiler için lütfen platform temsilcileriyle birlikte çalışın. Bu örneğin amaçları doğrultusunda, bunu şu anda AppsFlyer'da nasıl dağıtabileceğimize bakacağız.

Daha önce çalıştırdığımız sorguda çıktı olarak aldığımız son aralıklar aşağıdaki gibiydi.

ba46f5d993449948.png

  • Aralık 1: 0 ila 0,1
  • Aralık 2: 0,1 ila 0,5
  • Aralık 3: 0,5 ila 2
  • Aralık 4: 2 ila 2,5

Aykırı bir değer olacağı ve uygulama ilişkilendirme sağlayıcınız için ortalama hesaplamaları çarpıtacağı için son gelir aralığını göz ardı etmeye karar verdiğimizi unutmayın.

AppsFlyer, bunu doğrudan kullanıcı arayüzüne girmenin oldukça basit olduğu SKAN Conversion Studio'yu sunuyor. Doğrudan 4.0'ı kullanabilir veya 3.5 kullanıyorsanız "Özel" modunu kullanabilir ve "Gelir" ölçümünü ekleyebilirsiniz. Daha sonra, önceki analizden hesapladığınız gelir aralıklarını ekleyebilirsiniz.

f8c56abdf9b405f4.png

Google Ads'le İlgili En İyi Uygulamalar ve Öğrenilenler

Google Ads'te kampanya yayınlıyorsanız ve etkiyi bir SKAd Ağı dönüşüm değeri şeması aracılığıyla ölçüyorsanız size bazı önerilerde bulunmak istiyoruz.

  • Google Ads'te kullandığınız dönüşüm aralığının, Uygulama İlişkilendirme platformunuzda belirttiğiniz etkinlik aralığıyla eşleştiğinden emin olun. SKAd ağı 3.5 için bu muhtemelen 1-3 gün içinde olacaktır; dolayısıyla burada listelenen adımları izleyerek bunu Google Ads'de buna göre ayarlayabilirsiniz.

4fd625aae9d4a43.png

  • Appsflyer kullanıyorsanız şu anda varsayılan etkinlik sayacı 1'dir; bu, kullanıcı başına birden fazla etkinliği hesaba katmadığı anlamına gelir. SKAN ölçümü için etkinliğe dayalı bir model kullanıyorsanız ve Google Ads'teki hedef EBM kampanyalarıyla karşılaştırıyorsanız Appsflyer'daki bu kılavuzu izleyerek özelleştirmeyi seçebilirsiniz.

6c7a4d703567700a.png

5. Tebrikler

Tebrikler, SKAd Ağ Dönüşümü değer şemanızı başarıyla kurdunuz. Artık, bu yayına girdikten sonra Google Ads kampanyalarınızın dönüşüm değerlerini kontrol etmek için Google Ads SKAd Ağı raporunuzdaki verileri izleyebilirsiniz.

öğrendin

  • BigQuery'de GA4F'den gelen zengin ham veriler nasıl keşfedilir?
  • İşletmeniz için gelir paketlerini hesaplamaya yönelik analitik yaklaşım
  • Şemayı AppsFlyer ile dağıtma