RudderStack はオープンソースのカスタマーデータプラットフォーム (CDP) です これにより、企業は顧客データを収集、統合し、さまざまなデスティネーションにルーティングできます。顧客データパイプラインを管理するための一元化されたプラットフォームを提供し、組織が Web サイト、モバイルアプリ、サーバー、クラウドサービスなどのさまざまなソースからデータを簡単に収集できるようにします。
Singular は、iOS および Android のモバイルアクティビティについて、Singular Server-to-Server (S2S) REST API 経由で Rudderstack からイベントデータを受信できます。これは 「Cloud-Mode」デスティネーション と呼ばれます。以下の手順では、Rudderstack で Singular デスティネーションを追加する方法を説明します。
| 対象ガイド | エンジニアリングチーム |
| 前提条件 | この記事は、すでに Rudderstack の iOS または Android SDK をアプリに統合済みであることを前提としています。 |
この統合を使用するには、Rudderstack のモバイル SDK を使用している必要があります。 この統合は非モバイルのイベントデータとは互換性がありません。サーバーイベントや Web イベントはサポートされていません。
RudderStack は、「Cloud-Mode」経由で Singular に送信できる 2 種類のトラックイベントをサポートしています:
- セッションイベント
- カスタムイベント
- 基本的なインストールアトリビューション
- Google Install Referrer アトリビューション
- SkAdNetwork Version 3 サポート (手動モード)
- Apple Search Ads アトリビューション
- カスタムアプリ内イベントトラッキング
- 収益トラッキング
- Custom User ID
- アンインストールトラッキング
- Limited Data Sharing (同意) サポート
- API v2 経由の Singular Device ID (SDID)
- SkAdNetwork Version 4 サポート
- コンバージョンモデル向けの SkAdNetwork マネージドモード
- META Install Referrer アトリビューション
- ディープリンク
Singular が提供する「フル機能」の S2S サポートが必要な場合は、Rudderstack とは別に Singular S2S REST API を独自に実装する必要があります。 Server-to-Server (S2S) 統合ガイド は こちら をご覧ください。
Singular Device ID (SDID) と API バージョン
RudderStack が使用する Singular API バージョンは、イベントに存在する識別子フィールドによって異なります:
-
イベントに
Singular Device ID (SDID)
が存在する場合、RudderStack は自動的に Singular の
API v2
を使用し、従来のプラットフォーム固有の識別子 (
idfa,andi,idfv,aifa) を無視します。 - それ以外の場合、RudderStack はプラットフォーム固有の識別子にフォールバックし、Singular の API v1 を使用してイベントを送信します。
Singular Device ID (および、オプションでデータ共有の同意) を送信するには、イベントの
integrations.Singular
オブジェクト内に
singularDeviceId
と
limitDataSharing
を含めます:
rudderanalytics.track(
"Order Completed", {
revenue: 30,
currency: "USD"
}, {
integrations: {
Singular: {
singularDeviceId: "SINGULAR_DEVICE_ID",
limitDataSharing: true // optional
}
}
}
);
はじめに
- RudderStack ダッシュボード から、ソースを追加します。次に、デスティネーションのリストから Singular を選択します。
- デスティネーションに名前を割り当て、 Continue をクリックします。
接続設定
Singular をデスティネーションとして正常に構成するには、次の設定を構成する必要があります:
-
API Key:
ここに Singular の
「SDK Key」
を入力します。これは必須フィールドです。
Singular の 「SDK KEY」 は、Singular ダッシュボードの 「Developer Tools > SDK Integration > SDK Keys」 で取得できます。
注意: 「Cloud-Mode」統合では、 API Key (SDK Key) の値のみを入力します 。
「Secret」は空白のままにしてください。 -
Session Event Name:
セッションイベントとして使用するイベント名を入力します。この設定は、クラウドモード経由でイベントを送信する場合にのみ適用されます。
RudderStack は、Singular の launch API 経由でセッションイベントを Singular に送信します。
RudderStack は、ダッシュボード設定で指定されている場合、または次の 3 つの ライフサイクルイベント のいずれかである場合にのみ、イベントをセッションイベントとみなします:
- Application Installed
- Application Opened
- Application Updated
ライフサイクルイベントトラッキングが有効になっている場合、RudderStack は上記の 3 つのライフサイクルイベントを自動的にトラッキングします。
- Use device mode to send events: これらのトグルは 「Cloud Mode」を使用する場合は無効にする必要があります 。Android または iOS プラットフォームを使用する場合、この設定を有効にしてデバイスモード経由でイベントを送信できます。その後、プロジェクトに Singular を追加する手順については Singular Device Mode ガイドに従ってください。
- クライアントサイドイベントフィルタリング: Singularに送信するイベントのうち、ブロックまたは許可するイベントを指定します。詳細は Client-side Events Filtering ガイドを参照してください。
- 同意管理設定: ドロップダウンから同意管理プロバイダーを選択し、該当する同意カテゴリIDを入力して、ソースの同意管理設定を構成します。詳細は Consent Management in RudderStack を参照してください。
Unity SDK 設定
次の設定は、Unityをソースとして使用する場合に適用されます:
| 設定 | 説明 |
|---|---|
| Match ID mapping | この設定を使用して、Singularのmatch IDを次のいずれかのイベントフィールドにマッピングします: context.device.advertisingId または properties.match_id. |
セッションイベントの要件
サポートされている SESSION イベントのマッピング
このセクションでは、RudderStack のイベントプロパティと関連する Singular フィールドとのマッピングを示します。
次の表は、モバイルプラットフォーム ( Android および iOS ) について RudderStack が自動的にキャプチャする属性のマッピングを示します:
| RudderStack プロパティ | Singular 属性 | 必須/任意 | 説明 |
|---|---|---|---|
context.os.name |
p |
必須 | ソースプラットフォーム (Android または iOS)。 |
context.app.namespace |
i |
必須 | アプリのパッケージ名 (Android) またはバンドル ID (iOS)。 |
context.app.version |
app_v |
必須 | アプリのバージョン。 |
context.ip / request_ip(この順序で) |
ip |
必須 | ユーザーの IP アドレス。IP を匿名化する方法については、以下の注意を参照してください。 |
context.os.version |
ve |
必須 | セッション時のデバイス OS バージョン。 |
context.device.model |
mo |
必須 | デバイスモデル。このパラメーターは ma パラメーターと併用する必要があります。 |
context.device.manufacturer |
ma |
必須 | デバイスハードウェアのメーカー。このパラメーターは mo パラメーターと併用する必要があります。 |
context.locale |
lc |
必須 | 2 文字の言語コードと国コードをアンダースコアで区切って使用するデバイスの IETF ローカルタグ。 |
context.device.id |
idfv |
必須 | ダッシュ付きの大文字で表記された生の IdentifierForVendor 。 これは iOS アプリにのみ適用されます 。 |
context.device.id |
andi |
必須 | 小文字で表記された生の Android ID 。 これは Android アプリにのみ適用され 、広告 ID (aifa) と App Set ID (asid) が存在しない場合に必須です。詳細については、以下の FAQ を参照してください。 |
context.app.build |
bd |
必須 | デバイスビルド (URL エンコード)。 |
context.device.adTrackingEnabled |
dnt |
必須 | do not track (dnt) が無効の場合は true (dnt=0) を渡し、そうでない場合は false (dnt=1) を渡します。広告 ID を SDK に渡すと、これは自動的にキャプチャされます。 |
context.app.name |
n |
任意 | UI に表示される人間が読めるアプリ名。 |
timestamp / originalTimestamp |
utime |
任意 | セッション時刻 (UNIX 時間)。 |
context.network.wifi |
c |
任意 | 接続タイプ (WiFi またはキャリア)。 |
context.network.carrier |
cn |
任意 | インターネットプロバイダーのキャリア名。 |
integrations.Singular.limitDataSharing |
data_sharing_options.limit_data_sharing |
任意 | JSON URL エンコードされたデータ共有に関するユーザーの同意。これは永続化され、後続のすべてのイベントリクエストで渡される必要があります。 |
IP を匿名化するには、 context.ip フィールドにプレースホルダー IP を送信できます。RudderStack はバックエンドから自動的にキャプチャする代わりに、それを IP アドレスとして使用します。モバイル SDK の場合、 Transformations 機能を活用してこれを行うことができます - クラウドモード 経由でイベントを送信する場合。
次の表は、 イベントプロパティ経由で渡す必要がある属性: のマッピングを示します。
これらのプロパティは SDK に永続化されないため、すべてのイベントで渡す必要があります。
| RudderStack プロパティ | Singular 属性 | 必須/任意 | 説明 |
|---|---|---|---|
properties.install_ref |
install_ref |
必須 | Google Install Referrer 情報。 |
properties.referring_application |
install_source |
必須 | Android におけるインストールソースのパッケージ名。これを取得するには getInitiatingPackageName() を使用します。 |
properties.install_receipt |
install_receipt |
必須 | インストールから受け取ったレシート。これを取得するには、 iOS Install Receipt ガイドに従ってください。 |
properties.asid |
asid |
必須 | Android v12 以降のデバイス向けの App Set ID。広告 ID (aifa) と Android ID (andi) が存在しない場合に必須です。詳細については、以下の FAQ を参照してください。 |
properties.url |
openui |
必須 | アプリがディープリンク/ユニバーサルリンク経由で開かれた場合の、エンコードされたディープリンク URL の値。 |
context.device.attTrackingStatus |
att_authorization_status |
必須 | App Tracking Transparency の認可ステータス 。 |
userId |
custom_user_id |
任意 | identify 呼び出しを通じて渡されるユーザー ID。 |
properties.attribution_token |
attribution_token |
任意 | iOS 14.3 以降で Apple Search Ads をアトリビュートするために使用されます。詳細は こちら 。 |
properties.skan_conversion_value |
skan_conversion_value |
任意 | セッション通知時点での最新の SkAdNetwork 値。 |
properties.skan_first_call_timestamp |
skan_first_call_timestamp |
任意 | SkAdNetwork API への最初の呼び出しの UNIX タイムスタンプ。 |
properties.skan_last_call_timestamp |
skan_last_call_timestamp |
任意 | セッション通知時点での SkAdNetwork API への最後の呼び出しの UNIX タイムスタンプ。 |
properties.install |
install |
任意 | インストールフラグ。アプリインストール後の最初のセッションでは true に設定し、それ以外の場合は false に設定します。再インストールトラッキング機能に必須です。 |
properties.install_time / timestamp / originalTimestamp |
install_time |
任意 | インストール時刻 (UNIX 時間)。 |
properties.update_time / timestamp / originalTimestamp |
update_time |
任意 | 更新時刻 (UNIX 時間)。 |
次の表は、 イベントプロパティ経由で一度だけ渡す必要がある属性: のマッピングを示します。
これらのプロパティは SDK に永続化されるため、一度だけ渡す必要があります。
| RudderStack プロパティ | Singular 属性 | 必須/任意 | 説明 |
|---|---|---|---|
context.device.token |
fcm |
任意 | Firebase Cloud Messaging デバイストークン。Android でのアンインストールトラッキングに必須です。 |
context.device.token |
apns_token |
任意 | Apple Push Notification Service デバイストークン。iOS でのアンインストールトラッキングに必須です。 |
context.device.advertisingId |
idfa |
必須 | ダッシュ付きの大文字で表記された生の 広告 ID 。 これは iOS アプリにのみ適用されます 。 |
context.device.advertisingId |
aifa |
必須 | これはダッシュ付きの小文字で表記された生の 広告 ID です。 これは Android アプリにのみ適用されます 。App Set ID (asid) と Android ID (andi) が存在しない場合に必須です。詳細については、以下の FAQ を参照してください。 |
RudderStack は、デバイストークンのマッピングに fcm のみをサポートしています。
カスタムイベントの要件
RudderStack は、セッションイベント以外のすべてのイベントを、Singular の evt エンドポイント経由でカスタムイベントとして送信します。
サポートされている EVENT マッピング
このセクションでは、RudderStack のイベントプロパティと関連する Singular フィールドとのマッピングを示します。
次の表は、モバイルプラットフォーム ( Android および iOS ) について RudderStack が自動的にキャプチャする属性のマッピングを示します:
| RudderStack プロパティ | Singular 属性 | 必須/任意 | 説明 |
|---|---|---|---|
context.os.name |
p |
必須 | ソースプラットフォーム (Android または iOS)。 |
context.app.namespace |
i |
必須 | アプリのパッケージ名 (Android) またはバンドル ID (iOS)。 |
context.ip / request_ip(同じ順序で) |
ip |
必須 | ユーザーの IP アドレス。 |
context.device.advertisingId |
idfa |
必須 | ダッシュ付きの大文字で表記された生の IdentifierForVendor 。 これは iOS アプリにのみ適用されます 。 |
context.device.advertisingId |
aifa |
必須 | これはダッシュ付きの小文字で表記された生の 広告 ID です。 これは Android アプリにのみ適用されます 。App Set ID (asid) と Android ID (andi) が存在しない場合に必須です。詳細については、以下の FAQ を参照してください。 |
context.device.id |
idfv |
必須 | ダッシュ付きの大文字で表記された生の IdentifierForVendor 。 これは iOS アプリにのみ適用されます 。 |
context.device.id |
andi |
必須 | 小文字で表記された生の Android ID 。 これは Android アプリにのみ適用され 、広告 ID (aifa) と App Set ID (asid) が存在しない場合に必須です。詳細については、以下の FAQ を参照してください。 |
context.os.version |
ve |
必須 | セッション時のデバイス OS バージョン。 |
timestamp / originalTimestamp |
utime |
任意 | セッション時刻 (UNIX 時間)。 |
integrations.Singular.limitDataSharing |
data_sharing_options.limit_data_sharing |
任意 | JSON URL エンコードされたデータ共有に関するユーザーの同意。これは永続化され、後続のすべてのイベントリクエストで渡される必要があります。 |
Singular は、(Android では) asid よりも aifa を、 andi よりも asid を優先し、(iOS では) idfv よりも idfa を優先します。
次の表は、 イベントプロパティ経由で渡す必要がある属性: のマッピングを示します。
これらのプロパティは SDK に永続化されないため、すべてのイベントで渡す必要があります。
| RudderStack プロパティ | Singular 属性 | 必須/任意 | 説明 |
|---|---|---|---|
event |
n |
必須 | イベントの名前。 これはユーザー定義です 。 |
context.device.attTrackingStatus |
att_authorization_status |
必須 | App Tracking Transparency の認可ステータス 。 |
userId |
custom_user_id |
任意 | identify 呼び出しを通じて渡されるユーザー ID。 |
properties.skan_conversion_value |
skan_conversion_value |
任意 | セッション通知時点での最新の SkAdNetwork 値。 |
properties.skan_first_call_timestamp |
skan_first_call_timestamp |
任意 | SkAdNetwork API への最初の呼び出しの UNIX タイムスタンプ。 |
properties.skan_last_call_timestamp |
skan_last_call_timestamp |
任意 | セッション通知時点での SkAdNetwork API への最後の呼び出しの UNIX タイムスタンプ。 |
properties.eventAttributes |
e |
任意 | JSON 形式のカスタムイベント属性。これらは SDK に永続化されないため、すべてのイベントで渡す必要があります。 |
properties.is_revenue_event |
is_revenue_event |
任意 | イベントが収益イベントかどうかを判定します。これは SDK に永続化されないため、すべてのイベントでプロパティを通じて渡す必要があります。 |
properties.receipt_signature |
receipt_signature |
任意 | レシート署名。 |
次の表は、 収益イベントに固有のユーザー定義属性: のマッピングを示します。
| RudderStack プロパティ | Singular 属性 | 必須/任意 | 説明 |
|---|---|---|---|
properties.total/ properties.value / properties.revenue |
amt |
任意 | 通貨金額。 |
properties.currency |
cur |
任意 | ISO 4217 の 3 文字の通貨コード。これは amt パラメーターと併用する必要があります。 |
properties.purchase_receipt |
purchase_receipt |
任意 | 購入から受け取ったレシート。 |
properties.product_id/properties.sku |
purchase_product_id |
任意 | 製品 SKU 識別子。 |
properties.orderId / properties.purchase_transaction_id(この順序で) |
purchase_transaction_id |
任意 | トランザクション識別子。 |
value、revenue、または total プロパティのいずれか 1 つを設定すると、 is_revenue_event プロパティで明示的に指定されていない限り、RudderStack はそのイベントを自動的に収益イベントとみなします。
カスタムイベントの場合の重要な考慮事項をいくつか以下に示します:
- RudderStack は、Android の場合は context.userAgent から、iOS の場合はイベントプロパティからユーザーエージェントを取得します。
- RudderStack は、カスタムイベントで渡された追加の属性を Singular の e フィールドに格納します。
テスト
イベントが Singular に正常に配信されたかどうかを確認するにはどうすればよいですか?
イベントが Singular に正常に配信されたかどうかを確認するには、RudderStack の Destination live events 機能を使用できます。
また、 Singular ダッシュボード にアクセスして次の手順に従うことで、イベント配信を確認することもできます:
Testing Console の使用方法についての詳細なガイドは Testing Console のこちらに従ってください
-
「Developer Tools > Testing Console」
に移動します。
-
Add Device
をクリックし、該当するデバイス識別子を入力します:
-
Singular に送信されたすべてのイベントのリアルタイムログを確認できるはずです:
FAQ
Android にはどのデバイス ID 属性が必要ですか?
Android のリクエストの場合、Singular は次の属性のいずれか 1 つを、この優先順で要求します:
-
aifa
-
asid
-
andi
いずれも利用できない場合は、(null や undefined ではなく) 空の値で少なくとも 1 つを送信する必要があります。それらすべてを送信した場合、RudderStack は Google のデータポリシーに従って andi 属性を破棄します。