EVENT エンドポイント API リファレンス
Singular の REST API を使用してサーバー間連携でアプリ内イベントと収益を追跡し、 SDK 実装の代替手段としてアトリビューション分析とキャンペーン最適化に活用します。
概要
サーバー間連携のユースケース
EVENT API はアプリ内イベントの追跡を可能にします。アプリはユーザーの操作データを バックエンドに転送し、バックエンドがそれを Singular のサーバーに送信することで、 イベントアトリビューションと収益分析のレポーティングを実現します。
サポートされる機能:
- イベントアトリビューション: ユーザーのアクションをマーケティング キャンペーンに関連付けます
- 収益追跡: アプリ内課金やトランザクションを測定し、アトリビューションします
- カスタムイベント: 登録からレベルクリアまで、あらゆるユーザー操作を 追跡します
- イベントプロパティ: より詳細な分析のために、イベントにコンテキスト データを付加します
データフローアーキテクチャ
サーバー間連携によるイベント追跡は、4 ステップのデータ送信プロセスに従います。
- クライアントでの収集: アプリがイベントデータとデバイス識別子を 収集します
- サーバーへの送信: アプリがイベントデータを自社のバックエンド サーバーに転送します
- デバイスグラフの照会: サーバーが Singular のデバイスグラフから デバイス詳細を取得または更新します
- Event API 呼び出し: サーバーが Singular の REST API エンドポイントにイベントを送信します
重要な要件
前提条件:
- イベントの前に SESSION: イベント追跡を行う前に、必ず SESSION を 確立する必要があります
- 送信順序: セッションの順序が正しくないと、データの不整合や アトリビューションエラーが発生します
連携における制約:
- リアルタイム処理: リクエストは個別に処理されます。バッチ処理は サポートされていません
- 時系列順のイベント: イベントは発生した順序で送信する必要があります
- 重複排除なし: Singular はデータの重複排除を行いません。重複を 防ぐには、サーバー側で重複排除を実装してください
- データの永続性: デバイスレベルのデータは取り込み後に削除できません。 送信前に必ず検証してください
イベント追跡のガイドライン
命名規則とデータ構造に関する Singular のベストプラクティスに従って、イベント追跡を 実装します。
イベントの定義
イベントの定義
S2S 連携を実装する前に、キャンペーンのパフォーマンス分析のために自社が追跡したい イベントの完全なリストを定義してください。
イベント計画ガイド: アプリ内イベントの定義
イベント命名の影響: Singular に渡されるイベント名は、レポート、 エクスポート、ポストバックにおけるイベントの表示方法を直接決定します。
標準イベントの命名
ベストプラクティス:
- 標準イベント: パートナー連携のマッピングを効率化するため、 Singular の標準イベント命名規則 を使用してください
- 英語表記: サードパーティのパートナーや分析ソリューションとの 互換性のため、イベント名は英語で渡してください
- 標準属性: イベントプロパティには 標準イベント属性名 を使用してください
文字数の制限
長さの制限:
- イベント名: 最大 32 ASCII 文字(非 ASCII の場合、UTF-8 に 変換した際に 32 バイト)
- イベント属性: 属性のキーと値それぞれにつき最大 500 ASCII 文字
API エンドポイントの選択
Singular は、異なる連携アーキテクチャに最適化された 2 つの EVENT エンドポイントの バージョンを提供しています。
エンドポイントの選択: 連携アーキテクチャとデバイス識別子の戦略に 基づいてエンドポイントを選択してください。ユースケースによって正しい エンドポイントが決まります。
Event エンドポイント V1
V1 のユースケース
プラットフォーム固有のデバイス識別子(IDFA、IDFV、AIFA、ASID など)に依存する連携には、 Event エンドポイント V1 を使用してください。
推奨される用途:
- 純粋なサーバーサイド: Singular SDK を実装しないサーバーサイド連携
- ハイブリッド(非 SDID): Singular SDK が Singular Device ID (SDID) を使用しないハイブリッド連携
エンドポイント URL:
GET https://s2s.singular.net/api/v1/evt
Event エンドポイント V2
V2 のユースケース
Singular SDK が SDID を使用してセッションを追跡し、サーバーが同じ SDID を使用して イベントを送信するハイブリッド連携には、Event エンドポイント V2 を使用してください。
推奨される用途:
- ハイブリッド(SDID ベース): Singular SDK が SDID でセッションを 追跡し、サーバーサイドのイベントが同じ SDID を使用する場合
- 識別子の簡素化: プラットフォーム固有のデバイス識別子(IDFA、AIFA など)を使用しない実装
エンドポイント URL:
GET https://s2s.singular.net/api/v2/evt
アカウントの有効化: V2 エンドポイントを使用するには、SDID 利用のための Singular アカウント設定が必要です。有効化については、担当の Solution Engineer または CSM にお問い合わせください。
Web (p=Web) バリアント
Web 連携では、この同じ EVENT エンドポイントを
p=Web
と共に使用します。Web の SESSION 呼び出しはありません。
conversion_event=true
を伴う最初の
__PAGE_VISIT__
イベントが、起動の代わりにアトリビューションの
タッチポイントを確立します。
完全ガイド:
ブラウザ支援パターン全体(SDID の永続化、
__PAGE_VISIT__
のシーケンス、Web からアプリへの遷移、
クリップボードによるディファードディープリンク)については、
Web S2S 実装ガイド
を参照してください。
Web 固有のパラメーター
これらのパラメーターは
p=Web
の場合に適用されます。共有パラメーター
(
a
,
i
,
ip
,
sdid
,
custom_user_id
) は
S2S の基礎
で定義されています。
| パラメーター | 詳細 |
|---|---|
conversion_event
|
例:
|
attribution_data
|
ランディング URL から解析されたキャンペーンデータの URL エンコードされた JSON で、
例:
|
web_url
|
マーケティングパラメーター(UTM /
例:
|
web_page_referrer
|
リファラー (
例:
|
Web クリック ID:
パートナーのクリック ID
(
ScCid
,
ttclid
,
gclid
/
gbraid
/
wbraid
,
dclid
,
fbclid
,
rdt_uuid
) を、イベントの
e
パラメーター内で渡します。
必須のデバイス識別子
デバイス識別子の要件は、エンドポイントのバージョンとプラットフォームによって異なります。 以下のプラットフォーム固有の要件を確認してください。
V1 エンドポイントの識別子
プラットフォーム固有の識別子
Event エンドポイント V1 では、デバイスのオペレーティングシステムとアプリの配布方法に 基づいたプラットフォーム固有の広告識別子が必要です。
これらは S2S の基礎 で一度だけ定義されている共有 S2S パラメーターです。
V2 エンドポイントの識別子
SDID のみの要件
Event エンドポイント V2 では、すべてのプラットフォームで Singular Device ID (SDID) のみが 必要となり、デバイスの識別が簡素化されます。
| パラメーター | 詳細 |
|---|---|
sdid
|
プラットフォーム: iOS、Android、Web、PC、Xbox、 PlayStation、Nintendo、MetaQuest、CTV Singular SDK から取得するか、クライアント側で生成される Singular Device ID。
例:
|
必須パラメーター
すべての EVENT リクエストには、デバイス識別子に加えて、これらの必須パラメーターを 含める必要があります。
パラメーターの形式: すべてのパラメーターは、GET メソッドを使用して URL クエリパラメーターとして渡す必要があります。パラメーターを JSON リクエストボディで送信しないでください。
API 認証
これらは S2S の基礎 で一度だけ定義されている共有 S2S パラメーターです。
デバイスパラメーター
これらは S2S の基礎 で一度だけ定義されている共有 S2S パラメーターです。
アプリケーションパラメーター
これらは S2S の基礎 で一度だけ定義されている共有 S2S パラメーターです。
イベントパラメーター
| パラメーター | 詳細 |
|---|---|
n
|
追跡対象のイベント名。
例:
|
オプションパラメーター
オプションパラメーターは、追加のコンテキストと機能でイベント追跡を強化します。
タイムスタンプパラメーター
| パラメーター | 詳細 |
|---|---|
utime
|
イベントの 10 桁の Unix タイムスタンプ。
例:
|
umilisec
|
ミリ秒を含む 13 桁の Unix タイムスタンプ。
例:
|
イベント属性
パートナー Conversion API のサポート: SingularのConversion API連携を通じてこれらのイベントを広告ネットワークパートナーに転送するには、標準のオプションイベント属性(eventIdやehashなどのハッシュ化されたファーストパーティデータ)を含めてください。Conversion API連携のための標準イベント属性を参照してください。
| パラメーター | 詳細 |
|---|---|
e
|
カスタムイベント属性を指定する JSON URL エンコード文字列。 JSON 構造:
URL エンコードの例:
|
global_properties
|
イベントにグローバルに適用されるカスタムのキーと値のペアを含む JSON URL エンコードオブジェクト。 制限:
JSON:
URL エンコード:
|
ネットワークパラメーター
これらは S2S の基礎 で一度だけ定義されている共有 S2S パラメーターです。
データプライバシー
これらは S2S の基礎 で一度だけ定義されている共有 S2S パラメーターです。
クロスデバイスサポート
これらは S2S の基礎 で一度だけ定義されている共有 S2S パラメーターです。
SKAdNetwork サポート
| パラメーター | 詳細 |
|---|---|
skan_conversion_value
iOS |
イベント発生時点での最新の SKAdNetwork コンバージョン値。 詳細: SKAdNetwork の実装
例:
|
skan_first_call_timestamp
iOS |
SKAdNetwork API への最初の呼び出しの Unix タイムスタンプ。
例:
|
skan_last_call_timestamp
iOS |
イベント発生時点での SKAdNetwork API への最新の呼び出しの Unix タイムスタンプ。
例:
|
収益追跡
適切な検証と通貨処理により、アプリ内課金と収益イベントを追跡します。
必須の収益パラメーター
基本的な収益追跡
自社で収益の検証を行う場合の、収益イベント追跡に最低限必要なパラメーター。
ベストプラクティス: イベントリクエストを Singular に送信する前に、 サーバー側で App Store と収益イベントを検証してください。 自社で検証を行う場合は、これらのパラメーターのみが必要です。
| パラメーター | 詳細 |
|---|---|
is_revenue_event
|
イベントが収益イベントであるかどうかを指定します。
例:
|
amt
|
トランザクションの通貨金額。
例:
|
cur
|
ISO 4217 の 3 文字の大文字通貨コード。
例:
|
収益検証パラメーター
Singular による収益検証
Singular が App Store とサーバー側で収益検証を実行するためのオプションパラメーター。
検証の要件:
- App Store との収益検証を Singular に依存する場合は必須です
- 購入レシートと署名の値の構文が正しいことを確認してください
-
形式が正しくないと、Singular は収益をブロックし、
__iapinvalid__イベントを生成します
| パラメーター | 詳細 |
|---|---|
purchase_receipt
iOS, Android |
購入トランザクションから受け取ったレシート。 例(iOS):
例(Android、URL エンコード):
|
receipt_signature
Android |
購入レシートの署名に使用される署名(Android のみ)。 例:
|
purchase_product_id
|
製品 SKU 識別子。
例:
|
purchase_transaction_id
|
トランザクション識別子。
例(iOS):
例(Android):
|
リクエストの例
サンプルコードは、複数のプログラミング言語における EVENT エンドポイント連携を 示しています。
例に関する免責事項:
コードサンプルには、すべての必須パラメーターが
含まれていない場合があります。本番環境での実装前に、完全なパラメーターリストを
検証してください。開発/テスト用には一意の
i
(アプリ識別子)
を使用してください。
Python の例
import requests
params = {
'a': 'sdk_key_here',
'p': 'Android',
'i': 'com.singular.app',
'ip': '10.1.2.3',
've': '9.2',
'ma': 'samsung',
'mo': 'SM-G935F',
'lc': 'en_US',
'bd': 'Build/13D15',
'aifa': '8ecd7512-2864-440c-93f3-a3cabe62525b',
'asid': 'edee92a2-7b2f-45f4-a509-840f170fc6d9',
'n': 'sng_add_to_cart'
}
response = requests.get('https://s2s.singular.net/api/v1/evt', params=params)
print(response.json())
cURL の例
curl -G "https://s2s.singular.net/api/v1/evt" \
--data-urlencode "a=sdk_key_here" \
--data-urlencode "p=Android" \
--data-urlencode "i=com.singular.app" \
--data-urlencode "ip=10.1.2.3" \
--data-urlencode "ve=9.2" \
--data-urlencode "ma=samsung" \
--data-urlencode "mo=SM-G935F" \
--data-urlencode "lc=en_US" \
--data-urlencode "bd=Build/13D15" \
--data-urlencode "aifa=8ecd7512-2864-440c-93f3-a3cabe62525b" \
--data-urlencode "asid=edee92a2-7b2f-45f4-a509-840f170fc6d9" \
--data-urlencode "n=sng_add_to_cart"
HTTP の例
GET /api/v1/evt
?a=sdk_key_here
&p=Android
&i=com.singular.app
&ip=10.1.2.3
&ve=9.2
&ma=samsung
&mo=SM-G935F
&lc=en_US
&bd=Build%2F13D15
&aifa=8ecd7512-2864-440c-93f3-a3cabe62525b
&asid=edee92a2-7b2f-45f4-a509-840f170fc6d9
&n=sng_add_to_cart HTTP/1.1
Host: s2s.singular.net
Accept: application/json
Java の例
// Base URL
String baseUrl = "https://s2s.singular.net/api/v1/evt";
// Parameters
Map<String, String> params = new HashMap<>();
params.put("a", "sdk_key_here");
params.put("p", "Android");
params.put("i", "com.singular.app");
params.put("ip", "10.1.2.3");
params.put("ve", "9.2");
params.put("ma", "samsung");
params.put("mo", "SM-G935F");
params.put("lc", "en_US");
params.put("bd", "Build/13D15");
params.put("aifa", "8ecd7512-2864-440c-93f3-a3cabe62525b");
params.put("asid", "edee92a2-7b2f-45f4-a509-840f170fc6d9");
params.put("n", "sng_add_to_cart");
// Build URL with encoded parameters
StringBuilder urlBuilder = new StringBuilder(baseUrl);
urlBuilder.append('?');
for (Map.Entry<String, String> entry : params.entrySet()) {
if (urlBuilder.length() > baseUrl.length() + 1) {
urlBuilder.append('&');
}
urlBuilder.append(URLEncoder.encode(entry.getKey(), StandardCharsets.UTF_8))
.append('=')
.append(URLEncoder.encode(entry.getValue(), StandardCharsets.UTF_8));
}
// Create connection
URL url = new URL(urlBuilder.toString());
HttpURLConnection conn = (HttpURLConnection) url.openConnection();
conn.setRequestMethod("GET");
conn.setRequestProperty("Accept", "application/json");
// Get response
int responseCode = conn.getResponseCode();
BufferedReader in = new BufferedReader(
new InputStreamReader(conn.getInputStream())
);
String inputLine;
StringBuilder response = new StringBuilder();
while ((inputLine = in.readLine()) != null) {
response.append(inputLine);
}
in.close();
// Check status
System.out.println("HTTP Status Code: " + responseCode);
System.out.println("Response: " + response.toString());
// Disconnect
conn.disconnect();
レスポンスコードとエラー
EVENT エンドポイントは、リクエストの成功または失敗を示す HTTP ステータスコードと JSON レスポンスを返します。
エラーに関する完全なドキュメント: S2S レスポンスコードとエラー処理
テストと検証
本番環境へのデプロイ前に、Singular SDK コンソールを使用してリアルタイムでの データ検証を行い、S2S イベント連携を確認します。
テスト手順
エンドツーエンドの検証
- テストデバイスの登録: デバイスの広告 ID を取得し、 Singular SDK コンソール に追加します
- コンソールロギングの有効化: テストデータを取得するために、 SDK コンソールにデバイス識別子を追加します
-
開発用アプリ ID の使用:
テストデータを本番データから分離するため、
アプリ識別子を開発版(例:
com.singular.app.dev)で 上書きします - ビルドと起動: アプリをビルドするか、終了状態から開きます
- クライアントデータの検証: アプリが必要なすべての Singular データポイントを自社のサーバーに送信していることを確認します
-
セッションの確認:
自社のサーバーが、必要なすべてのパラメーターを含む
SESSION リクエストを
https://s2s.singular.net/api/v1/launchに送信していることを確認します - SDK コンソールの確認(セッション): 数秒以内に、SESSION イベントが SDK コンソールに表示されるはずです
イベントのテスト
- イベントのトリガー: アプリ内でイベントをトリガーします
- イベントデータの検証: 必要なすべての Singular データポイントを 含むイベントが自社のサーバーに送信されたことを確認します
-
サーバーリクエストの確認:
自社のサーバーが、必要なすべての
パラメーターを含む EVENT リクエストを
https://s2s.singular.net/api/v1/evtに送信していることを確認します - SDK コンソールの確認(イベント): 数秒以内に、EVENT が SDK コンソールに表示されるはずです
- テストの繰り返し: すべてのイベントが期待どおりの値で 送信されていることを検証します
重要な確認事項:
- EVENT を受信する前に、アプリの起動/フォアグラウンド化時に SESSION イベントが発生していることを確認してください
- EVENT の必須データポイントが SESSION のデータポイントと一致することを 確認してください
成功の指標: イベントが SDK コンソールに表示されれば、 エンドツーエンドのイベント連携テストが正常に完了しています!
追加リソース
テストに関するドキュメント
包括的なテストガイド: S2S 連携テストガイド