サーバー間連携 - EVENT エンドポイント API リファレンス

EVENT エンドポイント API リファレンス

SDK 実装の代替として、サーバー間連携を通じて Singular の REST API を使用し、アトリビューション分析とキャンペーン最適化のためにアプリ内イベントと収益をトラッキングします。


概要

サーバー間(S2S)のユースケース

EVENT エンドポイントは、アトリビューション分析とキャンペーン最適化のためにアプリ内イベントと収益をトラッキングします。サーバー間連携が初めてですか?核となる概念と共通のセットアップについては S2S 基礎ガイド を参照してください。

サポートされる機能:

  • イベントアトリビューション: ユーザーの行動をマーケティングキャンペーンに結び付けます
  • 収益トラッキング: アプリ内購入と取引を測定し、アトリビューションします
  • カスタムイベント: 登録からレベル達成まで、あらゆるユーザー操作をトラッキングします
  • イベントプロパティ: より深い分析のために、イベントにコンテキストデータを付加します

ハイブリッドのユースケース: ハイブリッド連携では Singular SDK が必須であり、SDK がセッショントラッキングを管理するため、SESSION エンドポイントは使用しません。サーバーは SDK から提供された Singular Device ID(SDID)を使用して、EVENT V2 エンドポイントにイベントを送信します。


重要な要件

前提条件:

  • イベントの前にセッション: イベントをトラッキングする前に、SESSION が確立されている必要があります
  • 順序どおりの送信: セッションの順序が正しくない場合、データの不整合とアトリビューションエラーが発生します

イベントトラッキングのガイドライン

命名規則とデータ構造に関する Singular のベストプラクティスに従ってイベントトラッキングを実装してください。

イベントの定義

イベントを定義する

S2S 連携を実装する前に、キャンペーンのパフォーマンス分析のためにトラッキングしたいイベントの完全なリストを定義してください。

イベント設計ガイド: アプリ内イベントの定義

イベント命名の影響: Singular に渡されるイベント名は、レポート、エクスポート、ポストバックでのイベントの表示方法をそのまま決定します。


標準的なイベント命名

ベストプラクティス:

  • 標準イベント: パートナー連携のマッピングを効率化するには、 Singular の標準イベント命名規則 を使用してください
  • 英語の使用: サードパーティパートナーや分析ソリューションとの互換性のため、イベント名は英語で渡してください
  • 標準属性: イベントプロパティには 標準のイベント属性名 を使用してください

文字数の制限

長さの制限:

  • イベント名: 最大 32 ASCII 文字(非 ASCII の場合、UTF-8 変換時に 32 バイト)
  • イベント属性: 属性のキーと値ごとに最大 500 ASCII 文字

エンドポイントの選択

EVENT エンドポイントには 2 つのバージョンがあります。以下のアコーディオンで、各バージョンのエンドポイント URL と必須のデバイス識別子を確認してください。その他のパラメータはすべて共通で、以下の 必須パラメータ および オプションパラメータ に一度だけ記載されています。

2026 年 7 月 15 日より V2 が必須。 2026 年 7 月 15 日以降に作成されたアカウントは Event Endpoint V2(SDID ベース)を使用する必要があり、新規アカウントでは V1 は利用できません。すでに V1 で連携済みの既存のお客様には影響ありません。V2 への移行をご希望の場合は、Singular のカスタマーサクセスマネージャーにお問い合わせください。

V2 エンドポイント(推奨)

Singular SDK が Singular Device ID(SDID)でセッションをトラッキングし、サーバーが同じ SDID を使用してイベントを送信するハイブリッド連携には V2 を使用してください。V2 ではプラットフォーム固有のデバイス識別子は不要です。

POST https://s2s.singular.net/api/v2/evt

必須の識別子:

パラメータ 詳細
sdid

プラットフォーム: iOS, Android, Web, PC, Xbox, PlayStation, Nintendo, MetaQuest, CTV
型: UUIDv4
Singular SDK から取得した、またはクライアント側で生成した Singular Device ID。
例: 40009df0-d618-4d81-9da1-cbb3337b8dec

  • iOS/Android: 2026 年 7 月 15 日より新規アカウントでは必須です。既存アカウントの場合、SDID を使用するにはアカウントでの有効化が必要です。初期化後、SDK のコールバックメソッドが SDID を提供します。
  • 識別子の簡素化: AIFA、ASID、IDFA、IDFV の各パラメータが不要になります
  • Web: Singular Web SDK から取得します
  • PC/コンソール/CTV: 一意のアプリインストールを表すクライアント生成の UUIDv4
  • SDK のドキュメントを参照してください。
V1 エンドポイント(レガシー)

純粋なサーバーサイド連携、または Singular SDK が SDID を使用せず、プラットフォーム固有のデバイス識別子(IDFA、IDFV、AIFA、ASID など)に依存するハイブリッド連携には V1 を使用してください。

POST https://s2s.singular.net/api/v1/evt

必須の識別子(1 つ以上):

パラメータ 詳細
idfa

プラットフォーム: iOS
型: UUIDv4
Identifier for Advertisers (IDFA) は、広告トラッキングとキャンペーンアトリビューションを可能にします。
ATT の要件: iOS 14.5 以降では、App Tracking Transparency フレームワークを通じたユーザーのオプトインが必要です。
例: DFC5A647-9043-4699-B2A5-76F03A97064B

  • IDFA が利用できない場合(ユーザーが ATT のプロンプトを拒否した場合)は、パラメータを省略してください。
  • NULL や空文字列を渡さないでください。
  • IDFA を取得する
idfv

プラットフォーム: iOS
型: UUIDv4
Identifier for Vendors (IDFV) は、同じベンダーのすべてのアプリで一貫して維持されます。
常に必須: ATT のステータスや IDFA の利用可否にかかわらず、必ず含める必要があります。
例: 21DB6612-09B3-4ECC-84AC-B353B0AF1334

aifa

プラットフォーム: Android
型: UUIDv4
(Google Play)
Google Advertising ID (GAID) は、Android でユーザーがリセット可能な広告トラッキングを可能にします。
例: 8ecd7512-2864-440c-93f3-a3cabe62525b

  • Google Play デバイスでは必須です。
  • Google Play 以外のデバイスでは省略してください。
  • 利用できない場合は省略してください。NULL や空文字列を渡さないでください。
  • AIFA を取得する
asid

プラットフォーム: Android
型: UUIDv4
(Google Play)
Android App Set ID は、同じ開発者のアプリ間でプライバシーに配慮したトラッキングを提供します。
常に必須: GAID の利用可否にかかわらず、Google Play デバイスでは必ず含める必要があります。
例: edee92a2-7b2f-45f4-a509-840f170fc6d9

amid

プラットフォーム: Android
型: UUIDv4
(Amazon)
Amazon Advertising ID は、Google Play サービスのない Amazon デバイス向けです。
例: df07c7dc-cea7-4a89-b328-810ff5acb15d

  • Amazon Fire デバイスでは必須です。
  • 利用できない場合は省略してください。
  • AMID を取得する
oaid

プラットフォーム: Android
型: UUIDv4
(中国 OEM)
Open Advertising Identifier(OAID)は、Google Play サービスのない中国製デバイス(Huawei、Xiaomi、OPPO など)向けの識別子です。
例: 01234567-89abc-defe-dcba-987654321012

  • Google Play のない中国 OEM デバイスでは必須です。
  • 利用できない場合は省略してください。
  • OAID を取得する
andi

プラットフォーム: Android
型: String
(Google Play 以外)
Android ID は、デバイスが生成する 64 ビットの識別子です。

使用制限: Google Play デバイスでは使用が禁止されています。代わりに AIFA と ASID を使用してください。他の識別子が一切利用できず、かつアプリが Google Play 経由で配布されていない場合にのみ送信してください。

例: fc8d449516de0dfb


必須パラメータ

すべての EVENT リクエストには、デバイス識別子に加えて以下の必須パラメータを含める必要があります。

パラメータの形式: すべてのパラメータは、POST メソッドを使用してリクエストボディに application/x-www-form-urlencoded データとして送信する必要があります。リクエストには Content-Type: application/x-www-form-urlencoded ヘッダーを含める必要があります。パラメータを JSON リクエストボディで送信しないでください。

API 認証

パラメータ 詳細
a

型: String
API 認証用の Singular SDK Key。
取得場所: Singular UI → メインメニュー → Developer Tools

重要: Reporting API Key は使用しないでください。リクエストが拒否されます。

例: sdkKey_afdadsf7asf56


デバイスパラメータ

パラメータ 詳細
p

型: String
アプリケーションのプラットフォーム。
許可される値(大文字と小文字を区別):
例: Android

  • Android
  • iOS
  • Web
  • PC
  • Xbox
  • Playstation
  • Nintendo
  • MetaQuest
  • CTV
ip

型: String
例: 172.58.29.235

デバイスのパブリック IPv4 アドレス。IPv6 もサポートされていますが、広告ネットワークとのアトリビューション互換性のため IPv4 を推奨します。
ve

型: String
例: 9.2

セッション時点のデバイスの OS バージョン。
ma

プラットフォーム: iOS, Android
型: String
デバイスのメーカー(製造元名)。必ず mo (モデル)と併せて使用してください。
デバイスメーカーを取得する
例: SamsungLGApple

mo

プラットフォーム: iOS, Android
型: String
デバイスのモデル。必ず ma (メーカー)と併せて使用してください。
デバイスモデルを取得する
例: iPhone 4SGalaxy SIII

lc

プラットフォーム: iOS, Android
型: String
IETF ロケールタグ。2 文字の言語コードと国コードをアンダースコアで区切ったものです。基本の ll_CC 形式のみを送信してください。次のような Unicode 拡張キーワードを含めないでください: @calendar=japanese_#u-fw-mon
デバイスロケールを取得する
例: en_US

bd

プラットフォーム: iOS, Android
型: String
デバイスのビルド識別子(URL エンコード済み)。
デバイスビルドを取得する
例: Build%2F13D15


アプリケーションパラメータ

パラメータ 詳細
i

型: String
アプリ識別子(大文字と小文字を区別)。
例: com.singular.app

  • Android: パッケージ名(例: com.singular.app
  • iOS: バンドル ID(例: com.singular.app
  • PC/コンソール: 指定した識別子
app_v

型: String
例: 1.2.3

アプリケーションのバージョン。
att_authorization_status

プラットフォーム: iOS
型: Integer
App Tracking Transparency(ATT)のステータスコード(iOS 14.5 以降)。
ステータス値:

  • 0 - 未決定(プロンプト未表示)
  • 1 - 制限あり(デバイスレベルでトラッキング無効)
  • 2 - 拒否(ユーザーが許可を拒否)
  • 3 - 許可(ユーザーが許可を付与)

常に必須: ATT を実装していない場合でも、 0 (未決定)を渡してください。

例: 3


イベントパラメータ

パラメータ 詳細
n

型: String
トラッキング対象のイベント名。
例: sng_add_to_cart


オプションパラメータ

オプションパラメータは、追加のコンテキストと機能によってイベントトラッキングを強化します。

タイムスタンプパラメータ

パラメータ 詳細
utime

型: Integer
イベントの 10 桁の Unix タイムスタンプ。
例: 1483228800

umilisec

型: Integer
ミリ秒単位の 13 桁の Unix タイムスタンプ。
例: 1483228800000


イベント属性

パートナー Conversion API のサポート: Singular の Conversion API 連携を通じてこれらのイベントを広告ネットワークパートナーに転送するには、標準のオプションイベント属性(次のようなハッシュ化されたファーストパーティデータ)を含めてください: eventId および ehash )。詳細は Conversion API 連携のための標準イベント属性 を参照してください。

パラメータ 詳細
e

型: JSON
カスタムイベント属性を指定する JSON URL エンコード文字列。
JSON 構造:
URL エンコードの例:

{
  "sng_attr_content_id": 5581,
  "sng_attr_content": "XBox",
  "sng_attr_content_type": "electronics"
}
%7B%22sng_attr_content_id%22%3A5581%2C%22sng_attr_content%22%3A%22XBox%22%2C%22sng_attr_content_type%22%3A%22electronics%22%7D
global_properties

型: JSON
イベント全体に適用されるカスタムのキーと値のペアを含む JSON URL エンコードオブジェクト。
制限:
JSON: {"key1":"value1","key2":"value2"}
URL エンコード: %7B%22key1%22%3A%22value1%22%2C%22key2%22%3A%22value2%22%7D

  • 最大 5 組のキーと値のペア
  • キーと値ごとに最大 200 文字

ネットワークパラメータ

パラメータ 詳細
use_ip

型: Boolean
Singular が ip パラメータではなく HTTP リクエストから IP アドレスを抽出するように指示します。

制限事項:

  • Singular による IP ベースの位置情報判定ができなくなります。
  • 2 文字の国コードを country パラメータで指定してください。
  • 次とは相互排他的です: ip パラメータ。両方を同時に使用しないでください。
  • データの拒否を避けるため、 ip または use_ip のいずれかを必ず指定する必要があります。

例: true

country

型: String
ISO 3166-1 alpha-2 の 2 文字の国コード。
必須となる条件: IP アドレスが利用できない場合、または use_ip=true の場合。
例: US

ua

型: String
URL エンコードされた User Agent 文字列。
元の値: Mozilla/5.0 (iPhone; CPU iPhone OS 14_0 like Mac OS X) AppleWebKit/605.1.15...
例: Mozilla%2F5.0%20(iPhone%3B%20CPU%20iPhone%20OS%2014_0...

c

プラットフォーム: iOS, Android
型: String
ネットワーク接続の種類。
許可される値: wificarrier
例: wifi

cn

プラットフォーム: iOS, Android
型: String
例: Comcast

インターネットプロバイダーのキャリア名。

データプライバシー

パラメータ 詳細
data_sharing_options

型: JSON
データ共有に関するエンドユーザーの同意を表す JSON URL エンコード値。永続化し、以降のすべての SESSION および EVENT リクエストで渡す必要があります。
ユーザーが同意した場合(オプトイン):
ユーザーが拒否した場合(オプトアウト):
例: %7B%22limit_data_sharing%22%3Atrue%7D

{"limit_data_sharing":false}
{"limit_data_sharing":true}
dnt

プラットフォーム: iOS, Android
型: Integer
Do Not Track のステータス。
例: 0

  • 1 - Do Not Track 有効
  • 0 - Do Not Track 無効
dntoff

プラットフォーム: iOS, Android
型: Integer
Do Not Track が OFF かどうかを示します。
例: 1

  • 0 - Do Not Track 有効(OFF=false)
  • 1 - Do Not Track 無効(OFF=true)

クロスデバイスのサポート

パラメータ 詳細
custom_user_id

型: String
クロスデバイストラッキング用の社内ユーザー ID。

PII は不可: 個人を特定できる情報を渡さないでください。生のメールアドレス、電話番号、氏名ではなく、ハッシュ化または匿名化された社内識別子を使用してください。

例: 123456789abcd


SKAdNetwork のサポート

パラメータ 詳細
skan_conversion_value

プラットフォーム: iOS
型: Integer
イベント時点での最新の SKAdNetwork コンバージョン値。
詳細: SKAdNetwork の実装
例: 7

skan_first_call_timestamp

プラットフォーム: iOS
型: Integer
SKAdNetwork API を最初に呼び出した Unix タイムスタンプ。
例: 1483228800

skan_last_call_timestamp

プラットフォーム: iOS
型: Integer
イベント時点で SKAdNetwork API を最後に呼び出した Unix タイムスタンプ。
例: 1483228800


収益トラッキング

適切な検証と通貨処理により、アプリ内購入と収益イベントをトラッキングします。

必須の収益パラメータ

基本的な収益トラッキング

収益の検証を自社で行う場合に、収益イベントのトラッキングに最低限必要なパラメータ。

ベストプラクティス: Singular にイベントリクエストを送信する前に、サーバー側で App Store と収益イベントを検証してください。自社で検証を行う場合は、これらのパラメータのみが必要です。

パラメータ 詳細
is_revenue_event

型: Boolean
Revenue 指標のために、そのイベントを収益イベントとしてマークします。
例: true

  • 任意です。イベント名が __iap__ / __iapauto__ の場合、または amt パラメータが存在する場合も、イベントは自動的に収益として扱われます。
  • is_revenue_event=false を設定しても、 amt が含まれている場合は収益としての扱いを防ぐことはできません。
amt

型: Number
取引の通貨金額。
例: 2.51

  • 次と併せて使用してください: cur パラメータ
cur

型: String
ISO 4217 の 3 文字の大文字通貨コード。
例: USD

  • 次と併せて使用してください: amt パラメータ

注: amt パラメータを送信すると、 is_revenue_event の値にかかわらず、そのイベントは収益イベントとして処理されます。これには is_revenue_event=false も含まれます。イベントを収益イベントとして扱いたくない場合は、 amt パラメータを省略してください。金額のない収益イベントとしてマークするには、次を送信してください: is_revenue_event=true


収益検証パラメータ

Singular が検証する収益

Singular が App Store とのサーバーサイド収益検証を実行するためのオプションパラメータ。

検証の要件:

  • App Store との収益検証を Singular に依存する場合は必須です
  • 購入レシートと署名の値の構文が正しいことを確認してください
  • 形式が正しくない場合、Singular は収益をブロックし、 __iapinvalid__ イベントを生成します
パラメータ 詳細
purchase_receipt

プラットフォーム: iOS, Android
型: JSON
購入取引から受け取ったレシート。
例(iOS):
例(Android、URL エンコード済み):

MIISqwYJKoZI...cNqts0jvcNvPcK7yuj0KhJ9nTTQ54kDKfReihzc6aw==
%7B%22orderId%22%3A%22GPA.1234%22%2C%22packageName%22%3A%22com.example%22%2C%22productId%22%3A%22com.example.product%22...
receipt_signature

プラットフォーム: Android
型: String
購入レシートの署名に使用された署名(Android のみ)。
例:

TyVJfHg8OAoW7W4wuJt...5agEDMnNXvhfrw==
purchase_product_id

型: String
製品の SKU 識別子。
例: com.example.product

purchase_transaction_id

型: String
取引の識別子。
例(iOS): 380000123004321
例(Android): GPA.1234-1234-1234-12345


広告収益のトラッキング

固定のイベント名と広告収益化属性を持つ標準の EVENT を送信することで、メディエーションプラットフォーム(AdMob、AppLovin MAX、ironSource など)からのインプレッション単位の広告収益をトラッキングします。広告収益は、上記と同じ EVENT エンドポイントを使用します。

メディエーションプラットフォームのデータ: 必要な広告収益属性は、メディエーションプラットフォームの SDK から直接収集してください。各メディエーションプラットフォームが提供する属性については、 広告収益 SDK ガイド を参照してください。

広告収益化の収益

標準の必須パラメータ(認証、デバイス、アプリケーション)に加えて、広告収益イベントには以下が必要です。

パラメータ 詳細
n

型: String
トラッキング対象のイベント名。
広告収益に必須のイベント名:

__ADMON_USER_LEVEL_REVENUE__
  • イベント名はすべて大文字とアンダースコアで記述する必要があります
  • 最大 32 ASCII 文字
is_admon_revenue

型: Boolean
Ad Revenue 指標のために、そのイベントを広告収益化の収益イベントとして識別します。
例: true

  • このイベントには true を渡してください
is_revenue_event

型: Boolean
Revenue 指標のために、そのイベントを収益イベントとして識別します。
例: true

  • このイベントには true を渡してください
amt

型: Number
インプレッション収益の通貨金額。
例: 0.00782

  • 次と併せて使用してください: cur パラメータ
cur

型: String
ISO 4217 の 3 文字の大文字通貨コード。
例: USD

  • 次と併せて使用してください: amt パラメータ
e

型: JSON
メディエーションプラットフォームからの広告収益化属性を指定する JSON URL エンコード文字列。
必須の属性:

  • ad_platform (必須) 広告ネットワークの名前

任意の属性:

  • ad_mediation_platform
  • ad_type
  • ad_group_type
  • ad_impression_id
  • ad_placement_name
  • ad_unit_id
  • ad_unit_name
  • ad_group_id
  • ad_group_name
  • ad_group_priority
  • ad_placement_id

JSON 構造:

{
  "ad_platform": "AdMob",
  "ad_mediation_platform": "admob.AdMobAdapter",
  "ad_unit_id": "ca-app-pub-6325336052/44923540"
}

URL エンコードの例:

%7B%22ad_platform%22%3A%22AdMob%22%2C%22ad_mediation_platform%22%3A%22admob.AdMobAdapter%22%2C%22ad_unit_id%22%3A%22ca-app-pub-6325336052%5C%2F44923540%22%7D

注: 値のない属性は省略してください。


リクエストの例

サンプルコードは、複数のプログラミング言語での EVENT エンドポイント連携を示しています。

例に関する免責事項: コードサンプルには必須パラメータがすべて含まれていない場合があります。本番実装の前に、パラメータの完全なリストを確認してください。開発/テストには一意の i (アプリ識別子)を使用してください。

PYTHON CURL HTTP JAVA

Python の例

import requests

url = 'https://s2s.singular.net/api/v1/evt'
headers = {'Content-Type': 'application/x-www-form-urlencoded'}
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.post(url, data=params, headers=headers)
print(response.json())

レスポンスコードとエラー

EVENT エンドポイントは、リクエストの成否を示す HTTP ステータスコードと JSON レスポンスを返します。

エラーの完全なドキュメント: S2S レスポンスコードとエラー処理


テストと検証

本番環境へのデプロイ前に、Singular SDK Console を使用してリアルタイムのデータ検証で S2S イベント連携を確認してください。

テスト手順

エンドツーエンドの検証

  1. テストデバイスの登録: デバイスの広告 ID を取得し、次に追加します: Singular SDK Console
  2. コンソールログの有効化: テストデータを取得するため、SDK Console にデバイス識別子を追加します
  3. 開発用 App ID の使用: テストデータと本番データを分けるため、アプリ識別子を開発版(例: com.singular.app.dev )で上書きします
  4. ビルドと起動: 終了状態からアプリをビルドまたは起動します
  5. クライアントデータの検証: アプリが必要なすべての Singular データポイントをサーバーに送信していることを確認します
  6. セッションの確認: サーバーが必要なすべてのパラメータとともに SESSION リクエストを次に送信していることを確認します: https://s2s.singular.net/api/v1/launch
  7. SDK Console の確認(セッション): 数秒以内に、SESSION イベントが SDK Console に表示されるはずです

SDK Console のセッションイベント


イベントのテスト

  1. イベントのトリガー: アプリ内でイベントをトリガーします
  2. イベントデータの検証: 必要なすべての Singular データポイントとともに、イベントがサーバーに送信されたことを確認します
  3. サーバーリクエストの確認: サーバーが必要なすべてのパラメータとともに EVENT リクエストをエンドポイント(V2 https://s2s.singular.net/api/v2/evt または V1 https://s2s.singular.net/api/v1/evt )に送信していることを確認します。
  4. SDK Console の確認(イベント): 数秒以内に、EVENT が SDK Console に表示されるはずです
  5. テストの繰り返し: 送信されたすべてのイベントが期待どおりの値であることを検証します

SDK Console のイベント

重要な確認事項:

  • EVENT を受信する前に、アプリの起動/フォアグラウンド移行時に SESSION イベントが発生していることを確認します
  • EVENT の必須データポイントが SESSION のデータポイントと一致していることを確認します

成功の指標: イベントが SDK Console に表示されれば、エンドツーエンドのイベント連携テストは成功です。


参考リソース

テストのドキュメント

総合的なテストガイド: S2S 連携テストガイド