キャンペーンの測定

このドキュメントでは、Android 向け Google アナリティクス SDK v4 を使ってキャンペーンとトラフィックの参照元を測定する方法を概説します。

概要

Google アナリティクスでキャンペーンを測定すると、キャンペーンとトラフィックの 参照元をアプリでのユーザー行動に結び付けること(アトリビューション)ができます。Android 向け Google アナリティクス SDK v4 に備わっているキャンペーンとトラフィックの 参照元アトリビューションでは、次のオプションを使用できます。

次のセクションでは、各種のキャンペーンをアプリで測定するタイミングと方法を説明します。

Google Play キャンペーン アトリビューション

Google Play キャンペーンの測定機能を実装すると、Google Play ストアにユーザーを送り込んでアプリのダウンロードに貢献したキャンペーンとトラフィックの参照元を把握できます。Google Play キャンペーンの測定機能の実装を、すべての開発者の方におすすめします。

Google Play キャンペーン アトリビューションを実装する

Google Play ストアでは、デベロッパーが Google Play からリファラー コンテンツを安全に取得できるように、Install Referrer API を提供しています。この API は、アプリの Google Play ストア ページへのアクセスに使用された参照 URL パラメータの値(存在する場合)を返します。

アプリのダウンロードをキャンペーンに結び付けるには、Google Play ストアを指すすべてのリンクにリファラー パラメータを追加し、Play の Install Referrer API をアプリに追加して、インテントに含まれるキャンペーン情報を受け取って Google アナリティクス トラッカーで設定する必要があります。

1. AndroidManifest.xml ファイルから Google アナリティクスのレシーバーを削除します。

Google タグ マネージャー レシーバーを実装している場合は、マニフェストからも削除します。

2. Install Referrer API ライブラリへの依存関係を追加する。

依存関係を追加するには、build.gradle に次の行を含めます。

dependencies {
    ...
    implementation 'com.android.installreferrer:installreferrer:1.1'
}

3. アプリの起動アクティビティで Install Referrer API を呼び出す。

Install Referrer API を使用して、インストールされたアプリ パッケージのリファラー URL を取得し、その URL 値を Google アナリティクスまたは Google タグ マネージャーのレシーバーに渡します。アプリの起動アクティビティで Install Referrer API を使用するには、次のコードと同様の実装を行います。

特定の部分へのディープリンクなど、アプリへのエントリ ポイントが複数ある場合は、ActivityLifecycleCallbacks によってトリガーされる ActivityLifecycleListener に既定のメソッドを実装できます。

package com.example.myapplication;

import static com.android.installreferrer.api.InstallReferrerClient.InstallReferrerResponse;

import androidx.appcompat.app.AppCompatActivity;
import android.content.Intent;
import android.net.Uri;
import android.os.Bundle;
import android.os.Handler;
import android.os.RemoteException;

import com.android.installreferrer.api.InstallReferrerClient;
import com.android.installreferrer.api.InstallReferrerStateListener;
import com.android.installreferrer.api.ReferrerDetails;
import com.google.android.gms.analytics.CampaignTrackingReceiver;
import com.google.tagmanager.InstallReferrerReceiver;

import java.util.concurrent.Executor;
import java.util.concurrent.Executors;

public class MainActivity extends AppCompatActivity {

    private final Executor backgroundExecutor = Executors.newSingleThreadExecutor();

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        checkInstallReferrer();
    }

    // TODO: Change this to use whatever preferences are appropriate. The install referrer should
    // only be sent to the receiver once.
    private final String prefKey = "checkedInstallReferrer";

    void checkInstallReferrer() {
        if (getPreferences(MODE_PRIVATE).getBoolean(prefKey, false)) {
            return;
        }

        InstallReferrerClient referrerClient = InstallReferrerClient.newBuilder(this).build();
        backgroundExecutor.execute(() -> getInstallReferrerFromClient(referrerClient));
    }

    void getInstallReferrerFromClient(InstallReferrerClient referrerClient) {

        referrerClient.startConnection(new InstallReferrerStateListener() {
            @Override
            public void onInstallReferrerSetupFinished(int responseCode) {
                switch (responseCode) {
                    case InstallReferrerResponse.OK:
                        ReferrerDetails response = null;
                        try {
                            response = referrerClient.getInstallReferrer();
                        } catch (RemoteException e) {
                            e.printStackTrace();
                            return;
                        }
                        final String referrerUrl = response.getInstallReferrer();


                        // TODO: If you're using GTM, call trackInstallReferrerforGTM instead.
                        trackInstallReferrer(referrerUrl);


                        // Only check this once.
                        getPreferences(MODE_PRIVATE).edit().putBoolean(prefKey, true).commit();

                        // End the connection
                        referrerClient.endConnection();

                        break;
                    case InstallReferrerResponse.FEATURE_NOT_SUPPORTED:
                        // API not available on the current Play Store app.
                        break;
                    case InstallReferrerResponse.SERVICE_UNAVAILABLE:
                        // Connection couldn't be established.
                        break;
                }
            }

            @Override
            public void onInstallReferrerServiceDisconnected() {

            }
        });
    }

    // Tracker for Classic GA (call this if you are using Classic GA only)
    private void trackInstallReferrer(final String referrerUrl) {
        new Handler(getMainLooper()).post(new Runnable() {
            @Override
            public void run() {
                CampaignTrackingReceiver receiver = new CampaignTrackingReceiver();
                Intent intent = new Intent("com.android.vending.INSTALL_REFERRER");
                intent.putExtra("referrer", referrerUrl);
                receiver.onReceive(getApplicationContext(), intent);
            }
        });
    }

    // Tracker for GTM + Classic GA (call this if you are using GTM + Classic GA only)
    private void trackInstallReferrerforGTM(final String referrerUrl) {
        new Handler(getMainLooper()).post(new Runnable() {
            @Override
            public void run() {
                InstallReferrerReceiver receiver = new InstallReferrerReceiver();
                Intent intent = new Intent("com.android.vending.INSTALL_REFERRER");
                intent.putExtra("referrer", referrerUrl);
                receiver.onReceive(getApplicationContext(), intent);
            }
        });
    }

}

4. Google Play の URL に Google アナリティクスのキャンペーン パラメータを追加する

次に、Google Play ストアに直接リンクするすべての URL に referrer パラメータを追加し、そのパラメータの値を、次の例のように、ソースを示す Google アナリティクス キャンペーン パラメータの文字列に設定します。

https://play.google.com/store/apps/details?id=com.example.application
&referrer=utm_source%3Dgoogle
%26utm_medium%3Dcpc
%26utm_term%3Drunning%252Bshoes
%26utm_content%3Dlogolink
%26utm_campaign%3Dspring_sale

キャンペーン パラメータの文字列を作成するには、Google Play URL 生成ツールを使用するか、キャンペーン パラメータのリファレンス セクションで作成方法をご確認ください。

一般的なキャンペーンとトラフィックの参照元のアトリビューション

インストールされたアプリは、広告キャンペーン、ウェブサイト、他のアプリからの参照によって起動される場合があります。この場合、setCampaignParamsFromUrl メソッドを使用してトラッカーのキャンペーン パラメータを直接設定することで、参照するトラフィック ソースやマーケティング キャンペーンを、後続のセッションでのユーザー アクションに関連付けることができます。

// Get tracker.
Tracker t = ((AnalyticsSampleApp) getActivity().getApplication()).getTracker(
    TrackerName.APP_TRACKER);

// Set screen name.
t.setScreenName(screenName);

// In this example, campaign information is set using
// a url string with Google Analytics campaign parameters.
// Note: This is for illustrative purposes. In most cases campaign
//       information would come from an incoming Intent.
String campaignData = "http://examplepetstore.com/index.html?" +
    "utm_source=email&utm_medium=email_marketing&utm_campaign=summer" +
    "&utm_content=email_variation_1";

// Campaign data sent with this hit.
t.send(new HitBuilders.ScreenViewBuilder()
    .setCampaignParamsFromUrl(campaignData)
    .build()
);

getTracker メソッドの詳細については、 高度な構成をご覧ください。

キャンペーンのパラメータ

キャンペーンのパラメータは、アプリにユーザーを送り込んだトラフィックの参照元と キャンペーンに関する情報を渡すために使用します。

下の表には、Google Play キャンペーンや一般的なキャンペーンの 測定で使用可能なキャンペーン パラメータがまとめられています。

パラメータ 説明
utm_source キャンペーンの参照元: 検索エンジンやニュースレターなどの参照元を特定するために使用します。 utm_source=google
utm_medium キャンペーンのメディア: メールやクリック単価(CPC)などのメディアを特定するために使用します。 utm_medium=cpc
utm_term キャンペーンのキーワード: 広告にキーワードを設定している有料検索で使用します。 utm_term=running+shoes
utm_content キャンペーンのコンテンツ: A/B テストやコンテンツ ターゲット広告で、同じ URL を参照する広告やリンクを区別するために使用します。 utm_content=logolink
utm_content=textlink
utm_campaign キャンペーン名: キーワード分析で、特定の商品プロモーション キャンペーンや戦略的キャンペーンを特定するために使用します。 utm_campaign=spring_sale
gclid Google 広告の自動タグ設定パラメータ: 広告の測定に使用します。この値は動的に生成され、変更することはできません。

Google Play URL 生成ツール

下のツールを使用すると、Google Play キャンペーンの測定に必要な URL を生成できます。