Segmentは、企業が顧客データを収集、クリーニングし、さまざまな宛先にルーティングするのを支援する顧客データ基盤(CDI)プラットフォームです。mParticleと同様に、Segmentは、ウェブサイト、モバイルアプリ、サーバー、クラウドサービスなどの複数のソースからデータを収集するための単一のAPIを提供します。
Singular SDKは、標準の「デバイスモード」や「クラウドモード」の統合オプションでは利用できない多くの機能を提供します。
Singularの特徴や機能をすべて活用するために、SingularとSegmentを使用する際はハイブリッド手法で統合することをお勧めします。
ハイブリッドアプローチは以下のように構成されます:
- SingularSDKをSegmentから独立して実装し、SingularSDKがセッショントラッキング、SDKフレームワーク(React Native、Unityなど)の追加サポート、SkAdNetwork、ディープリンク、ディファードディープリンク、高度な機能を処理できるようにします。
- Segmentの"Cloud-Mode "オプションをSingular Destinationで有効にしました。これにより、SegmentのすべてのモバイルトラックイベントがSingularのデスティネーションに送信されます。
以下の手順は、Singular HybridをSegmentで設定する方法を示しています。
ガイド | エンジニアリングチーム |
前提条件 | この記事では、 Segment Mobile Analytics SDKがすでに アプリに統合されていることを前提としています 。 |
この統合を使用するには、SegmentのMobile Analytics SDKを使用する必要があります。
Singular SDKは以下をサポートします:
- アトリビューションのインストール
- SkAdNetworkのサポート
- Google Install Referrer サポート
- META インストールリファラーサポート
- Apple 検索広告のアトリビューション
- カスタムアプリ内イベントトラッキング
- 収益トラッキング
- カスタムユーザーID
- グローバルプロパティサポート
- プライバシーオプション
セグメント「クラウドモード」統合は、モバイルのインストール後イベントをサポートします(ウェブイベントはサポートされません):
- カスタムアプリ内イベントトラッキング
- 収益トラッキング
- カスタムユーザーID
- Android AppSetId(詳細)
Android AppSetIdはSingularのSDKでGoogle Advertising IDが使用できない場合にSDKのアクティビティを追跡するための予備識別子として使用されます。この識別子はアトリビューション目的では使用されませんが、デバイスを認識し、アプリ内イベントを当該デバイスに関連付ける役割を果たします。
SegmentはAndroid AppSetIdを取得しないため、ユーザーのデバイスがGoogle Advertising IDを持たない場合、SegmentはSingularの「Cloud-Mode」Destinationにイベントを送信できません。Segment が、Singular SDK が同じデバイスに関連付けている Identifier と異なる Identifier で Singular にイベントを送信すると、不一致が生じます。S2Sイベントから未知の識別子に有機的に帰属し、収益イベントが誤って帰属する可能性があります。
このエッジケースについてご質問がある場合は、Singularソリューションエンジニアにご相談ください。
ハイブリッド構成
-
Singular SDKの統合
SingularのSDKをSegmentから独立して実装します。SDKオプションとフレームワークはこちらをご覧ください。
-
Segment - Singularデスティネーション(クラウドモード)を有効にする。
こちらのガイドに従ってください。
推奨される追加設定
ハイブリッド手法を使用する場合、SingularのSDKにSegment AnonymousIdとSegment User IDを渡すことを推奨します。
SDKのドキュメントに記載されているこれらのオプション機能を実装する際には、特に注意してください。使用するフレームワークによって手順が若干異なる場合があります。
グローバルプロパティの実装
セグメント匿名IDをSingularのグローバルプロパティに渡します。これにより、Segment AnonymousIdがSDKからのデバイスレベルのデータに関連付けられます。Singular SDKの初期化時にSingular Configオブジェクトでこの値をSingularに提供すると、UserIdが不明な場合にSingularがSegmentにInstall postbackを送信することもできます。
Singularは、Segment AnonymousIdおよび/またはSegment UserId値を使用して、アプリインストールからSegmentにアトリビューション情報のみを提供できます。この設定方法の例として、Singularのグローバルプロパティ[iOS][Android]を参照してください。
グローバルプロパティは、Singular SDKを初期化する際に、key:segment_anonymous_idと 、Segment SDKから取得したSegment AnonymousIdの値で設定する必要があります。セグメント匿名 ID は、このメソッドを使用してセグメント SDK から取得できます。
Analytics.with(context).getAnalyticsContext().traits().anonymousId()
Singular SDKの設定例
func getConfig() -> SingularConfig? {
// (Optional) Get 3rd-party identifiers to set in Global Properties:
// If 3rd-party SDKs are providing any identifiers to Singular, the
// respective SDK must be initialized before Singular.
let thirdPartyKey = "segment_anonymous_id"
let thirdPartyValue = SEGAnalytics.shared().getAnonymousId()
// Singular Config Options
guard let config = SingularConfig(apiKey: Constants.APIKEY,
andSecret: Constants.SECRET)
else {
return nil
}
...
// Using Singular Global Properties feature to capture third party identifiers
config.setGlobalProperty(thirdPartyKey,
withValue:thirdPartyValue, overrideExisting: true)
...
return config}
- (SingularConfig *)getConfig {
// Get the 3rd-party identifiers to set in Global Properties:
// If 3rd-party SDKs are providing any identifiers to Singular, the
// respective SDK must be initialized before Singular.
NSString* thirdPartyKey = @"segment_anonymous_id";
NSString* thirdPartyValue = [[SEGAnalytics sharedAnalytics] getAnonymousId];
// Singular Config Options
SingularConfig* config = [[SingularConfig alloc]
initWithApiKey:APIKEY andSecret:SECRET];
...
// Using Singular Global Properties feature to capture 3rd-party identifiers
[config setGlobalProperty:thirdPartyKey
withValue:thirdPartyValue overrideExisting:YES];
...
return config;}
// (Optional) Get 3rd-party identifiers to set in Global Properties:
// If 3rd-party SDKs are providing any identifiers to Singular, the
// respective SDK must be initialized before Singular.
String thirdPartyKey = new String("segment_anonymous_id");
String thirdPartyValue = new String(Analytics.with(context).getAnalyticsContext().traits().anonymousId());
// Singular Config Options
SingularConfig config = new SingularConfig("SDK KEY", "SDK SECRET")
.withGlobalProperty(thirdPartyKey, thirdPartyValue, true);
カスタムユーザーIDの実装
セグメントUserIdをSingular Custom User IDメソッドに渡します。これにより、Segment UserIdがSDKからのデバイスレベルのデータに関連付けられます。また、Singular SDKの初期化時にSingular Configオブジェクトでこの値をSingularに提供することで、SingularがInstall postback時にUserIdをSegmentに送信できるようになります。Singularとの統合に使用しているSDKフレームワークのドキュメントは「続きを読む」を参照してください。iOS][Android]の例
さらに、UserIDはSingular SDKからネイティブにトリガーされるアプリ内イベントに関連付けられます。
受信した "Cloud-Mode "イベントに対して、SingularはカスタムユーザーIDをセグメントユーザーID値にマッピングしています。iOS、Android用に設定するには、こちらの手順に従ってください。
Singularパートナー設定の構成
インストールデータをSegmentに戻すには、パートナー設定ページでSegmentを有効にする必要があります。
Singular Platformで
- Attribution > Partner Configuration」に移動し、「Add Partner」ボタンをクリックします。
- Segmentを検索します。
- アプリとサイトを選択
- 保存をクリック
よくある質問とトラブルシューティング
Facebookはデータアクセスやユーザーレベルのデータに制限を課しており、Segmentへのアトリビューションデータの正確な送信を妨げています。
インストールが「インストール」イベントを通じてSegmentに送信される場合、Facebookの制限によってユーザーレベルのデータが正確に送信されない可能性があります。その結果、同じインストールがSingularの集計レポートではFacebookに帰属しているように見えても、Segmentでは「未帰属」に分類されることがあります。