概要
Web Server-to-Server(Web S2S)は、モバイル V1 連携と同じ EVENT エンドポイントを使用して、Web のコンバージョンイベントおよびエンゲージメントイベントをサーバーから直接 Singular に送信します。Web パスは、platform パラメーター
p=Web
によって区別されます。
Web S2S は
ブラウザー支援型アーキテクチャ
です。アトリビューションに関連するいくつかの値は、ブラウザーでのみ取得可能です。
location.href
、
document.referrer
、およびブラウザーの
userAgent
は、バックエンドで再構築することはできません。軽量なクライアントサイドスニペットがこれらの値を収集し、エンドポイントを直接呼び出すか、またはそれらをバックエンドに転送し、バックエンドが S2S 呼び出しを行う必要があります。
Web には
SESSION エンドポイントはありません
。最初の
__PAGE_VISIT__
コンバージョンイベントがモバイルの
launch
呼び出しに代わり、その訪問のアトリビューションのベースラインを確立します。
Web S2S は、認証、エンコーディング、および共通パラメーターの規約を、S2S スイートの他の部分と共有します。 S2S 基本ハブ および EVENT エンドポイントリファレンス を参照してください。
エンドポイント
Web S2S は、モバイル V1 EVENT エンドポイントと同じホストおよびパスを使用します。リクエストを Web アトリビューションパス経由でルーティングするには、
p=Web
を設定します。
GET https://s2s.singular.net/api/v1/evt
SDID の生成と永続化
Singular デバイス ID(
sdid
)は、1 つのブラウザーからのすべてのイベントを 1 台の Web デバイスに紐付けます。最初のページ読み込み時に、
localStorage
に
global_singular_id
が存在しない場合は、UUID v4 を生成して保存します。
localStorage
がクリアされるまで、そのブラウザーからのすべてのイベントで同じ値を
sdid
として再利用します。
ページ上に Web SDK が存在する場合は、新しい値を生成するのではなく、Web SDK が
global_singular_id
にすでに設定した値を再利用してください。
function getOrCreateSDID() {
var KEY = 'global_singular_id';
var sdid = localStorage.getItem(KEY);
if (!sdid) {
sdid = crypto.randomUUID(); // UUID v4
localStorage.setItem(KEY, sdid);
}
return sdid;
}
__PAGE_VISIT__ パターン
新しい訪問の最初のイベントは、必ず
conversion_event=true
を指定した
__PAGE_VISIT__
でなければなりません。これにより、後続のイベントが継承するアトリビューションのベースラインが確立されます。
同じブラウザーが
別のキャンペーン
(異なる UTM またはパートナー)から戻ってきた場合は、そのたびに
conversion_event=true
を指定した新しい
__PAGE_VISIT__
を送信してください。同じ
sdid
を再利用し、その訪問の他のイベントよりも前に
__PAGE_VISIT__
を送信してください。
非コンバージョンイベント(例えば
sng_registration_complete
や
sng_purchase
)は、
conversion_event=false
を使用し、
attribution_data
を
省略します
。これらは、直近の
__PAGE_VISIT__
からアトリビューションを継承します。
コンバージョンイベントより前に到着した非コンバージョンイベントは、バックエンドがマッチを待つ間、1 分間遅延されます。
custom_user_id のルール
-
登録またはログイン後、およびそれ以降のすべてのイベントに
custom_user_idを含めてください。 -
これを
localStorageまたはファーストパーティ Cookie に永続化してください。 - ログアウト時には削除してください。
- PII は決して含めないでください。ハッシュ化された ID または内部 ID を使用してください。
パラメーター
Web SDK は
__PAGE_VISIT__
でおよそ 40 個のパラメーターを送信しますが、そのほとんどは SDK 内部のテレメトリであり、S2S の開発者が再現すべきものではありません。以下の表では、必須および推奨のパラメーターセットのみを扱います。
認証(
a
)およびその他の共有規約は、ハブに一度だけ記載されています。
S2S 基本ハブの共通パラメーター
を参照してください。
必須パラメーター
| パラメーター | 詳細 |
|---|---|
a
|
ダッシュボードから取得した Singular API キー。 共通パラメーター を参照してください。
例:
|
p
|
プラットフォーム。Web S2S では常に
例:
|
i
|
Singular における Web アプリ/サイトのバンドル ID。Web SDK の Product ID と一致している必要があります。Settings > Apps > 該当の Web アプリを展開 > Bundle ID で確認できます。
例:
|
n
|
イベント名。訪問の最初のイベントは
例:
|
sdid
|
Singular デバイス ID。Web SDK が設定した値(
例:
|
conversion_event
|
アトリビューションイベント(
例:
|
attribution_data
|
広告ネットワークからのクリックスルーデータ。URL エンコードされた JSON です。
例:
|
custom_user_id
|
自社の内部ユーザー ID。PII は含めないでください。登録/ログイン後、およびそれ以降のイベントに含め、ログアウト時には削除してください。
例:
|
ip
|
イベント発生時のデバイスの IP。
例:
|
web_url
|
マーケティングパラメーターを含む、コンバージョンのランディングページ URL。これはマーケティングパラメーターを含んでいた最後の URL であり、SDID と同様に保存され再利用されます。バックエンドがアトリビューションのタッチポイントを作成するために使用します。
例:
|
推奨パラメーター
| パラメーター | 詳細 |
|---|---|
device_user_agent
|
ブラウザーのユーザーエージェント(
例:
|
web_page_referrer
|
現在のページのリファラー(
例:
|
timezone
|
デバイスのタイムゾーン。
例:
|
os
|
デバイスのオペレーティングシステム。
例:
|
screen_width
|
画面の幅(ピクセル単位)。
例:
|
screen_height
|
画面の高さ(ピクセル単位)。
例:
|
utime
|
イベント時刻(UNIX 時間、秒単位)。
例:
|
URL とリファラーのパラメーター — 混同しないでください。
web_url
と
web_page_referrer
はアトリビューションに関連し、パイプラインで使用されます。
web_page_url
(現在のページ、
window.location.href
)と
document_referrer
は
イベントログのみ
に使用され、アトリビューションのためには黙って破棄されます。
web_page_url
や
document_referrer
を、アトリビューションに影響することを期待して送信しないでください。
デバイス識別情報や上記に記載されていないその他の共有パラメーターについては、ここで再度記載するのではなく、 S2S 基本ハブの共通パラメーター を参照してください。
attribution_data
attribution_data
パラメーターは、広告ネットワークからのクリックスルーデータを URL エンコードされた JSON として保持します。
__PAGE_VISIT__
コンバージョンイベントでのみ送信してください。
{
"partner_name": "Snapchat",
"is_attributed": "true",
"touch_timestamp": "",
"partner_campaign_id": "",
"partner_campaign_name": "Snap_campaign_1234",
"partner_creative_id": "",
"partner_creative_name": "",
"partner_keyword": "",
"partner_site": "",
"partner_site_id": "",
"partner_site_name": "",
"partner_sub_site": "",
"partner_sub_site_name": "",
"partner_subcampaign_id": "",
"partner_subcampaign_name": "",
"_p": ""
}
必須フィールド
| フィールド | 詳細 |
|---|---|
partner_name
|
Web パラメーター
例:
|
is_attributed
|
アトリビューションされたイベントには
例:
|
partner_campaign_name
|
Web パラメーター
例:
|
任意フィールド
| フィールド | 詳細 |
|---|---|
touch_timestamp
|
タッチポイント時刻(UNIX 秒)。
例:
|
partner_campaign_id
|
Web パラメーター
|
partner_creative_id
|
Web パラメーター
|
partner_creative_name
|
Web パラメーター
|
partner_keyword
|
Web パラメーター
|
partner_site_id
|
Web パラメーター
|
partner_site_name
|
Web パラメーター
|
partner_sub_site_name
|
Web パラメーター
|
partner_subcampaign_id
|
Web パラメーター
|
partner_subcampaign_name
|
Web パラメーター
|
e パラメーターでの Web クリック ID
パートナー Conversion API のサポート: SingularのConversion API連携を通じてこれらのイベントを広告ネットワークパートナーに転送するには、標準のオプションイベント属性(eventIdやehashなどのハッシュ化されたファーストパーティデータ)を含めてください。Conversion API連携のための標準イベント属性を参照してください。
ネットワークのクリック ID は、各パートナーが期待する JSON キーを使用して、イベントの
e
ペイロードで渡します。
| パートナー | クリック ID キー |
|---|---|
| Snapchat |
ScCid
|
| TikTok |
ttclid
|
gclid
、
gbraid
、
wbraid
|
|
| DV360 |
dclid
|
fbclid
|
|
rdt_uuid
|
マーケティングパラメーターの検出。
ランディング URL が次のいずれかを含む場合、それをタッチポイントとして扱います。
utm_*
、Singular の
wp*
(
wpsrc
、
wpcn
、
wpcid
など)、Singular の
pc*
/
p*
(
pcid
、
pcn
、
psrc
など)、
clid
、または
kw
/
an
/
ud
。マッチした場合は、完全な URL を
web_url
として保存し、コンバージョンイベントを発火します。
Web-to-App アトリビューション
Web キャンペーンのコンテキストをモバイルクリックに引き継ぐには、ランディングページから Singular Link を構築し、取得したランディングのクエリ文字列を追加します。これにより、マーケティングパラメーターがモバイルクリックに転送され、アプリのインストールをアトリビューションできるようになります。
ランディング時に、マーケティングパラメーターを含む場合は
window.location.search
(およびフラグメント)を取得し、永続化します。アプリストアリンクまたはスマートバナーリンクをレンダリングする際には、次のように構築します。
function buildWebToAppLink(baseLink, webUrl, deeplink, passthrough, deferredDeeplink) {
var url = new URL(baseLink); // preserves existing base-link params
if (webUrl) {
var q = new URL(webUrl);
var captured = q.search.slice(1) + (q.hash || ''); // landing query string (+fragment)
url.searchParams.set('_web_params', captured); // URL-encoded on serialization
}
if (deeplink) url.searchParams.set('_dl', deeplink);
if (passthrough) url.searchParams.set('_p', passthrough);
if (deferredDeeplink) url.searchParams.set('_ddl', deferredDeeplink);
return url.toString();
}
| 追加するパラメーター | 詳細 |
|---|---|
_web_params
|
取得したランディング
|
_dl
|
ディープリンク引数。任意。 |
_p
|
パススルー引数。任意。 |
_ddl
|
遅延ディープリンク引数。任意。 |
正確性:
SDID はリンクに
追加されません
(
_dsid
も
_sdid
もありません)。これはキャンペーンパラメーターの転送であり、決定論的な SDID デバイススティッチングではありません。
クリップボードアトリビューション(遅延ディープリンク)
クリップボードアトリビューションは、遅延ディープリンクに対して決定論的なマッチを提供します。Web スニペットが一意のトークンをクリップボードに書き込み、新しくインストールされたアプリがそれを読み戻し、トークンの一致でマッチングします。
function openAppWithClipboardDdl(baseLink, deeplink, passthrough, deferredDeeplink) {
// 1. Build the web-to-app link (see Web-to-App Attribution).
var link = buildWebToAppLink(baseLink, capturedWebUrl, deeplink, passthrough, deferredDeeplink);
// 2. Generate a UUID v4 and form the token.
var uuid = crypto.randomUUID();
var tokenUrl = location.protocol + '//' + location.hostname + '/__singular_ddl__/' + uuid;
// 3. Write ONLY the token to the clipboard (execCommand fallback).
copyToClipboard(tokenUrl);
// 4. Append the token to the click as ecid.
var url = new URL(link);
url.searchParams.set('ecid', tokenUrl);
// 5. Open the app / store.
window.open(url.toString());
}
function copyToClipboard(text) {
if (navigator.clipboard && navigator.clipboard.writeText) {
navigator.clipboard.writeText(text);
return;
}
var ta = document.createElement('textarea');
ta.value = text;
document.body.appendChild(ta);
ta.select();
document.execCommand('copy');
document.body.removeChild(ta);
}
正確性:
クリップボードが保持するのはトークン
のみ
です。SDID も、
_web_params
も、ディープリンクも保持しません。マッチはトークンの一致(クリックの
ecid
がクリップボードのトークンと等しい)であるため、新しくインストールされたアプリは決定論的にマッチします。
クリップボードへの書き込みは、 ユーザージェスチャーハンドラー (クリック)内で実行する必要があります。そうしないとブラウザーがブロックします。iOS Safari のクリップボード制約に注意してください。
初回起動時にクリップボードを読み取ることは、この Web スニペットではなく、アプリ側(アプリ独自のモバイル SDK/S2S 連携)の担当です。
イベントシーケンスの例
初回訪問と登録
-
ユーザーが Google Ads から到着します。最初のページ訪問を送信します。
-
n=__PAGE_VISIT__ -
conversion_event=true -
sdid=3730aecb-47ba-4d13-bd17-52b4b700956f -
attribution_data={ "partner_name": "googleadwords_int", "is_attributed": "true", "partner_campaign_name": "brand_us_en" }
-
-
ユーザーが登録します。登録イベントを送信します。
-
n=sng_registration_complete -
conversion_event=false -
sdid=3730aecb-47ba-4d13-bd17-52b4b700956f(同じ SDID) -
custom_user_id=user_12345abc -
attribution_dataなし
-
新しいキャンペーンから戻ってきたユーザー
-
同じブラウザーが別のキャンペーンから戻ってきます。新しいページ訪問を送信します。
-
n=__PAGE_VISIT__ -
conversion_event=true -
sdid=3730aecb-47ba-4d13-bd17-52b4b700956f(同じ SDID) -
attribution_data={ "partner_name": "facebook", "is_attributed": "true", "partner_campaign_name": "retargeting_Q1" }
-
-
ユーザーが購入します。購入イベントを送信します。
-
n=sng_purchase -
conversion_event=false -
sdid=3730aecb-47ba-4d13-bd17-52b4b700956f(同じ SDID) -
永続化された
custom_user_id -
attribution_dataなし
-