Berechnen Sie Umsatzbereiche für das SKAd-Netzwerk-Conversion-Wertschema

1. Einleitung

Etwas Kontext, bevor wir beginnen

Wenn Sie ein iOS-App-Entwickler sind, müssen Sie von den Datenschutzupdates für iOS 14.5+ gehört haben. Um sinnvolle Conversion-Aktionen nach der Installation zu messen, stellt Apple die SKAd Network API bereit, mit der Sie den Erfolg Ihrer Werbekampagnen messen und gleichzeitig die Privatsphäre der Benutzer respektieren können. Basierend auf Ihren Geschäftsanforderungen können Sie die optimale Möglichkeit finden, das SKAd Network zu nutzen, um aussagekräftige Erkenntnisse über Ihre Kampagnen zu gewinnen. In diesem Codelab untersuchen wir eine Beispielmethode zur Nutzung Ihrer GA4F-Daten in BigQuery, um Einnahmen nach der App-Installation in Buckets zu gruppieren, die Sie dann zur Einrichtung mit Ihrem App-Attributionspartner verwenden können. Während dieses Codelab einen umsatzbasierten Ansatz verwendet, können Sie für die SKAN-Messung auch ereignis- oder trichterbasierte Ansätze verwenden. Ausführlichere Anleitungen finden Sie in dieser Hilfe . Dies ist nur ein Beispiel, keine offizielle Google-Empfehlung . Sie können Ihr eigenes Schema basierend auf Ihren spezifischen Geschäftsanforderungen entwerfen

Was wir abdecken wollen

  • Erkunden Sie GA4F-Daten in BigQuery
  • Finden Sie Umsatzdaten für Benutzer, die innerhalb von 0–2 Tagen konvertiert haben
  • Gruppieren Sie Umsatzdaten in Buckets
  • Verstehen Sie die Benutzerverteilung in jedem Bucket
  • Implementieren Sie die Buckets im Appsflyer SKAN Conversion Studio

Voraussetzungen

2. Zugriff auf den BigQuery-Export

Navigieren Sie zum Datensatz in GA4F, indem Sie Projekteinstellungen > Integrationen > BigQuery aufrufen. Der Schalter muss zuerst aktiviert werden. Sobald er aktiviert ist, dauert es etwa 48 Stunden, bis der Datensatz verfügbar ist. Sie können auf den unten angezeigten Link klicken und gelangen zu BigQuery

1aa4e20bfd3419d1.png

Führen Sie einige Abfragen aus

Da Sie sich nun in BigQuery befinden, sollten Sie die generierten Tagestabellen sehen. Im folgenden Beispiel-Screenshot sehen wir 64 Tagestabellen, der Export läuft also seit 64 Tagen. Wenn Sie zum ersten Mal darauf zugreifen, wird möglicherweise nur eine Tagestabelle mit den Daten des Vortages angezeigt. Rechts sehen Sie das Tabellenschema. Weitere Einzelheiten zu den Feldern finden Sie hier

Um mit dem Schreiben Ihrer Abfrage zu beginnen, können Sie auf Abfrage > In neuem Tab klicken

42ba59ec655c5d1b.png

Anschließend können Sie versuchen, die Beispielabfrage auf der neuen Registerkarte auszuführen

70ef90d32b7cd7f1.png

3. Umsatzdaten analysieren

Installationsdaten werden abgerufen

Um nun mit dem Aufbau der Umsatzbereiche zu beginnen, müssen wir uns zunächst die Daten der Benutzer ansehen, die die App innerhalb der letzten 24 bis 72 Stunden installiert haben. Mit SKAd Network 4.0 können Sie Daten in 0–2 Tagen anzeigen, während SKAd Network 3.5 standardmäßig 24 Stunden zulässt. (Abhängig von den Fähigkeiten Ihres App Attribution-Partners können Sie dieses Aktivitätsfenster möglicherweise im Allgemeinen auf nicht mehr als 72 Stunden ändern.) Wenn Benutzer die App installieren und zum ersten Mal öffnen, wird das Ereignis first_open vom SDK ausgelöst und in BigQuery aufgezeichnet.

Die Kennung, die Sie für BigQuery verwenden können, ist user_pseudo_id (auch App-Instanz-ID genannt), sodass Sie die folgende Abfrage verwenden können, um diese Benutzer zu finden

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'

Bei dieser Abfrage sind einige Dinge zu beachten

  • Bitte ersetzen Sie den Tabellennamen durch Ihre aus Analytics exportierte Tabelle. Sie können Platzhalter verwenden, um mehrere Tagestabellen abzufragen. Beispielsweise werden mit 2023* alle Daten im Jahr 2023 abgefragt
  • Wenn Sie viele Benutzer haben, können Sie für eine schnellere Verarbeitung auch nur die letzten 30 Tage abfragen
  • Wir filtern nach Plattform = „IOS“. Falls Sie mehrere iOS-Apps in Ihrem Firebase-Projekt haben, können Sie auch einen Filter für app_info.firebase_app_id hinzufügen, um Daten für die spezifische App abzurufen

Umsatzdaten abrufen

Schauen wir uns nun eine Abfrage an, um den Umsatz für Ihre Benutzer zu ermitteln. In diesem Fall gehen wir davon aus, dass Ihre Umsatzereignisse „in_app_purchase“ und „ad_impression“ sind. Der Umsatz von in_app_purchase ist in event_value_usd verfügbar, während für ad_impression der Umsatz im Wertparameter innerhalb der Ereignisparameter verfügbar ist. Wenn Sie mit Ereignisparametern in BigQuery nicht vertraut sind, empfehlen wir Ihnen, die Definition hier zu überprüfen. Außerdem können Sie diese Beispielabfrage in unserer offiziellen Referenz ausprobieren , die auch das Extrahieren des Werts aus event_params behandelt

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')

Lassen Sie uns verstehen, was die Abfrage hier bewirkt. Dies sind die Dinge, die Ihnen auffallen würden

  • In der WHERE-Klausel filtern wir nach Umsatzereignissen, da wir nur an diesen interessiert sind, und wie beim letzten Mal suchen wir nach iOS-Daten
  • Jetzt übernehmen wir in der SELECT-Klausel den Wert und die Währung für das Werbeeinnahmenereignis (ad_impression) und nehmen den event_value_in_usd, wenn das Ereignis in_app_purchase ist
  • Wenn Sie mehrere Währungen versenden, müssen Sie sich für diese Analyse zunächst auf eine einzige Währung ausrichten. Für dieses Beispiel gehen wir davon aus, dass die Währung für werbefinanzierte Einnahmen ebenfalls USD ist

Die Ausgabe würde etwa wie folgt aussehen (die Spalte für user_pseudo_id ist hier geschwärzt).

1e1e6943e4b3a6d8.png

Kombinieren dieser Daten

Bisher haben wir zwei Abfragen durchgeführt: eine, um die Daten der Benutzer zu ermitteln, die die App installiert und geöffnet haben, und eine weitere, um den Umsatz dieser Benutzer zu ermitteln. Erinnern wir uns nun daran, was wir über die Einschränkungen des SKAd-Netzwerks besprochen haben. Das Attributionsfenster kann nur innerhalb von 0–2 Tagen nach der Installation verfügbar sein. Daher müssen wir die Ereigniszeitstempel für Installation und Umsatz überprüfen und die Informationen nur dann erfassen, wenn sie innerhalb dieses Zeitrahmens stattfinden. Lassen Sie uns nun versuchen, eine Abfrage zu kombinieren, die den Gesamtumsatz für jeden Beitrag zwei Tage nach der App-Installation liefert

#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

Die Abfrage versucht lediglich, die Installationsdaten und die Umsatzdaten im Feld „user_pseudo_id“ zusammenzuführen, und dann müssen wir sicherstellen, dass der Zeitstempel innerhalb von 2 Tagen liegt. Wenn Sie SKAd Network 3.5 verwenden, beträgt der Standardwert 24 Stunden. Sie können die Bedingung also auch so ändern, dass nur die Daten eines Tages einbezogen werden

Gruppieren Sie die Einnahmen in Buckets

Nach der vorherigen Abfrage erhalten Sie die user_pseudo_id und den Gesamtumsatz

2c1986b93e937d19.png

Wir müssen dies nun in Buckets zusammenfassen, die wir für unsere Conversion-Wertbereiche verwenden können. Zu diesem Zweck verwenden wir die Funktion approx_quantiles in BigQuery, die diese Bereiche automatisch für Sie erstellt. Nehmen wir für dieses Beispiel an, dass wir 5 Bereiche erstellen möchten, also können wir einfach SELECT approx_quantiles(total_revenue, 5) AS-Buckets verwenden

Lassen Sie uns dies nun in unsere Gesamtabfrage integrieren

#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

Diese Abfrage soll den Umsatz in fünf Buckets aufteilen und BigQuery versucht, eine konsistente Perzentilverteilung aufrechtzuerhalten

ba46f5d993449948.png

Analysieren Sie die Benutzerverteilung mit diesen Buckets

Dies ist ein optionaler Schritt, wenn Sie die Verteilung Ihrer Benutzer in jedem Bucket verstehen möchten. In unserem Beispiel lauten die in der vorherigen Abfrage zurückgegebenen Bucket-Bereiche

  • 0,1
  • 0,5
  • 2
  • 2.5
  • 5 [Der letzte Wert darf nicht in der Bereichskonfiguration verwendet werden]

Für die endgültigen Bereiche ignorieren wir den letzten Bereich 5, da dies im Allgemeinen der Maximalwert ist, und wir können einfach 2,5 als letzten Bereich betrachten. Dies liegt daran, dass Anbieter von App-Attribution dazu neigen, den ROAS anhand des Mittelwerts des Bereichs zu berechnen. Daher muss der Ausreißer für eine einheitlichere Berechnung ausgeschlossen werden.

Wir werden nun versuchen, die Anzahl der Benutzer für jedes Datum in allen Bereichen zu betrachten, damit wir das tägliche Benutzervolumen in jedem Bucket verstehen können. Dies können wir mithilfe dieser Beispielabfrage tun, bei der Sie die Bucket-Werte durch ersetzen können Ihre tatsächlichen Daten, und die Abfrage würde in etwa so aussehen

#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

Es werden die Benutzer in jedem Umsatzbereich für jeden Tag zurückgegeben, wie unten. Wenn Sie in einem Bucket sehr niedrige Zahlen oder eine allgemein ungleichmäßige Verteilung feststellen, sollten Sie die Anzahl der Buckets anpassen und die Abfrage erneut ausführen.

bf7d73085fe94cb6.png

Ein kurzes Wort zum SKAd Network 4.0

SKAd Network 4.0 bietet mehrere Konvertierungsfenster von bis zu 2 Tagen, 3–7 Tagen und 8–35 Tagen. Im oben beschriebenen Ansatz können Sie das Fenster problemlos ändern, um Daten auch für diese zusätzlichen Szenarien zu analysieren. Es sind auch die grobkörnigen Werte NIEDRIG, MITTEL und HOCH verfügbar. Auch hier: Wenn Sie diesen Ansatz verwenden möchten, können Sie sich dies als 3 Buckets vorstellen. Wenn Sie also die Anzahl der Buckets auf 3 ändern, können Sie die Schwellenwerte für NIEDRIG, MITTEL und HOCH erhalten

4. Bereitstellung bei Ihrem Attributionsanbieter

Abhängig von der jeweiligen Plattform kann sich dieser Leitfaden ändern. Bitte arbeiten Sie mit den Vertretern der Plattform zusammen, um die aktuellsten Informationen hierzu zu erhalten. Für dieses Beispiel werden wir uns ansehen, wie wir dies derzeit auf AppsFlyer bereitstellen können

In der zuvor ausgeführten Abfrage waren die endgültigen Bereiche, die wir als Ausgabe erhalten haben, wie folgt

ba46f5d993449948.png

  • Bereich 1: 0 bis 0,1
  • Bereich 2: 0,1 bis 0,5
  • Bereich 3: 0,5 bis 2
  • Bereich 4: 2 bis 2,5

Denken Sie daran, dass wir uns entschieden haben, den letzten Umsatzbereich zu ignorieren , da es sich dabei um einen Ausreißer handelt und die Durchschnittsberechnungen für Ihren App-Attributionsanbieter verzerrt werden.

AppsFlyer bietet SKAN Conversion Studio an, wo es ganz einfach ist, dies direkt in die Benutzeroberfläche einzugeben. Sie können entweder 4.0 direkt verwenden oder den Modus „Benutzerdefiniert“ verwenden, wenn Sie 3.5 verwenden, und die Messung „Umsatz“ hinzufügen. Sie können dann einfach die Umsatzbereiche hinzufügen, die Sie aus der vorherigen Analyse berechnet haben.

f8c56abdf9b405f4.png

Best Practices und Erkenntnisse zu Google Ads

Wir möchten Ihnen einige Empfehlungen geben, wenn Sie Kampagnen auf Google Ads durchführen und die Wirkung mithilfe eines SKAd Network-Conversion-Wert-Schemas messen

  • Stellen Sie sicher, dass das Conversion-Fenster, das Sie in Google Ads verwenden, mit dem Aktivitätsfenster übereinstimmt, das Sie auf Ihrer App Attribution-Plattform angegeben haben. Für das SKAd-Netzwerk 3.5 wird dies voraussichtlich innerhalb von 1–3 Tagen der Fall sein. Sie können es also in Google Ads entsprechend anpassen, indem Sie die hier aufgeführten Schritte ausführen

4fd625aae9d4a43.png

  • Wenn Sie Appsflyer verwenden, ist der Standard-Ereigniszähler derzeit 1, was bedeutet, dass mehrere Ereignisse pro Benutzer nicht berücksichtigt werden. Wenn Sie ein ereignisbasiertes Modell für die SKAN-Messung und den Vergleich mit tCPA-Kampagnen in Google Ads verwenden, können Sie eine Anpassung vornehmen, indem Sie dieser Anleitung von Appsflyer folgen

6c7a4d703567700a.png

5. Herzlichen Glückwunsch

Herzlichen Glückwunsch, Sie haben Ihr SKAd-Netzwerk-Conversion-Wertschema erfolgreich eingerichtet. Sie können jetzt die Daten in Ihrem Google Ads SKAd Network-Bericht überwachen, um die Conversion-Werte für Ihre Google Ads-Kampagnen zu überprüfen, sobald dieser online ist

Du hast gelernt

  • So erkunden Sie die umfangreichen Rohdaten von GA4F in BigQuery
  • Analytischer Ansatz zur Berechnung der Umsatzbereiche für Ihr Unternehmen
  • Stellen Sie das Schema mit AppsFlyer bereit