自分のサイトでの行動を追跡します。
マーケティング サイトや電子商取引サイトにファーストパーティ ビーコンを 1 つドロップすると、そのページ ビューがメール、ロイヤルティ ポータル、アプリと同じメンバー行動タイムラインに流れ込みます。キーも依存関係もありません。数行のバニラ JS をパブリック エンドポイントに投稿するだけです。 Flash は、サーバー側でデバイス、地域、ボット検出を解析します。
ホストされた 1 行、または自己完結型スニペット
単一のスクリプト タグを使用してホスト型トラッカーを追加するか、外部依存関係を望まない場合は自己完結型スニペットを貼り付けます。いずれの方法でも、識別子が生成され、プライバシー シグナルが尊重され、1 つのエンドポイントにページビューが POST 送信されます。
クライアントビットを送信します
URL、タイトル、リファラー、ID、画面、言語、タイムゾーン、UTM — それだけです。
Flash はサーバー側を強化します
デバイス、OS、ブラウザはユーザー エージェントから解析されます。 IP からの国。ボットが検出され、フラグが付けられます。これらに関してクライアントを信頼する必要はありません。
常に 204 を返します
ボット、GPC、不正な形式、または受け入れられた場合、エンドポイントは静かに応答します。トラッキングによってページにエラーがスローされることはありません。
独自のドメインでは、動作は匿名です。 サイトには Flash セッション Cookie がないため、ページ ビューは既知のメンバーではなく、生成した anonymous_id に関連付けられます。メンバーの帰属は、Flash が所有するサーフェス (ロイヤルティ ポータルおよびアプリ内メンバー センター) で行われ、セッションによってメンバーが解決されます。一貫した anonymous_id を使用して、訪問者のオンサイト行動が少なくとも訪問者自身のセッション全体で統一されるようにします。
2 つの方法があります。 YOUR_TEAM_ID を設定すると、ライブになります。
オプション A · ホスト型 — 1 行
</body> の前にスクリプト タグを 1 つ削除します。シングルページアプリのルート変更を自動追跡し、window.flashTrack() を公開します。他に接続する必要はありません。
<!-- SocialHub web tracking — one line, before </body> -->
<script src="https://flash.socialhub.ai/sdk/flash-tracker.js"
data-team-id="YOUR_TEAM_ID" defer></script>オプション B · インライン — 外部スクリプトなし
外部リクエスト (厳密な CSP または独自のバンドル内のコード) をゼロにしたいですか?代わりに、この自己完結型スニペットを貼り付けてください。 window.shTrack() を公開します。シングルページ アプリでルートが変更されるたびに呼び出します。
<!-- SocialHub web tracking — paste before </body> on every page -->
<script>
(function () {
var TEAM_ID = "YOUR_TEAM_ID"; // Settings → API
var ENDPOINT = "https://flash.socialhub.ai/api/v1/tracking/pageview";
// Honor Global Privacy Control / Do Not Track — no signal sent.
if (navigator.globalPrivacyControl === true || navigator.doNotTrack === "1") return;
function uid() {
return (window.crypto && crypto.randomUUID)
? crypto.randomUUID()
: (Date.now() + "-" + Math.random().toString(16).slice(2));
}
function persist(store, key) {
try { var v = store.getItem(key); if (!v) { v = uid(); store.setItem(key, v); } return v; }
catch (e) { return uid(); }
}
function utm() {
var p = new URLSearchParams(location.search), o = {};
["source", "medium", "campaign", "term", "content"].forEach(function (n) {
var val = p.get("utm_" + n); if (val) o[n] = val;
});
return Object.keys(o).length ? o : undefined;
}
function track() {
var body = JSON.stringify({
v: 1,
page_url: location.href,
page_title: document.title,
referrer: document.referrer || undefined,
anonymous_id: persist(localStorage, "sh_anon"), // stable per browser
session_id: persist(sessionStorage, "sh_session"), // resets per tab session
team_id: TEAM_ID,
utm: utm(),
screen: screen.width + "x" + screen.height,
language: navigator.language,
timezone: Intl.DateTimeFormat().resolvedOptions().timeZone,
timestamp: Date.now()
});
try {
if (navigator.sendBeacon) navigator.sendBeacon(ENDPOINT, body);
else fetch(ENDPOINT, { method: "POST", body: body, keepalive: true }).catch(function () {});
} catch (e) { /* never break the page */ }
}
window.shTrack = track; // for SPAs: call window.shTrack() after each route change
track(); // initial page view
})();
</script>// Single-page apps: after each client-side route change
router.afterEach(function () { window.shTrack && window.shTrack(); });ビーコン本体
application/json (または sendBeacon 経由のプレーン文字列) を送信します。 4 KB を超えるもの、または検証に失敗したものは、サイレントに削除されます。
| 分野 | タイプ | 注意事項 |
|---|---|---|
v | number | スキーマのバージョン。常に 1。 |
page_url | string | ページの完全な URL (≤ 2048)。必須。 |
page_title | string? | ドキュメントのタイトル (≤ 500)。 |
referrer | string? | document.referrer (≤ 2048) |
anonymous_id | string | 生成するブラウザごとの安定した ID (≤ 36)。必須。 |
session_id | string | 生成するセッションごとの ID (≤ 36)。必須。 |
team_id | string | SocialHub チーム ID (≤ 36) — ブランドを識別します。必須。 |
utm | object? | クエリ文字列から解析された { ソース、メディア、キャンペーン、用語、コンテンツ }。 |
screen | string? | 「1920×1080」。 |
language | string? | ナビゲーター.言語。 |
timezone | string? | IANA tz、例:アメリカ/ロサンゼルス。 |
timestamp | number | クライアントエポックms。必須。 |
なりすましトラフィックに対抗するように構築
team_id はページ ソース内に存在し、他のアナリティクス ID と同様に公開されます。したがって、エンドポイントはサーバー側でサイレントに自身を防御します (エンドポイントは常に 204 に応答するため、攻撃者は調査するためのフィードバックを取得できません)。
ベースライン レート制限 · 常時オン
すべてのチームはデフォルトで設定なしで保護されています。エンドポイントは、1 つのソースが送信できるビーコンの数を制限します。 team_id 分析データを過負荷状態にしたり、データを汚染したりすることはありません。フェイルオープン設計なので、一時的な障害が発生しても実際のトラフィックが途絶えることはありません。
オリジン許可リスト · オプション
[設定] → [トラッキング保護] で、受け入れられるビーコンを独自のドメインに制限できます。監視プレビューを使用して、強制する前に誤検知をチェックできます。これにより、ブラウザで SDK を使用する他のサイトがシャットアウトされます。
限界について正直に
レート制限とホワイトリストにより基準が引き上げられ、被害に上限が設けられますが、キーレス クライアントは、決められたスクリプトによるリクエストの偽造を完全に阻止することはできません。高機密の取り込みの場合は、代わりに認証された API を介してサーバー間で送信します。
下流のクリーンな数値
不正行為対策は何かが保存される前に実行されるため、フィルタリングされたトラフィックがメンバーのタイムライン、セグメント、ダッシュボードに到達することはありません。また、[追跡防止] ページには、どの程度が遮断されたかが表示されます。
訪問者を尊重した施工を心がけます
GPC と追跡禁止
このスニペットは、navigator.globalPrivacyControl と navigator.doNotTrack をチェックし、どちらかが設定されている場合は何も送信しません。その警備員を守ってください。
生の PII はありません
識別子とページ コンテキストのみを送信します。ビーコン内の名前、電子メール、フォームの内容は送信しないでください。メンバー ID は、サイトではなく Flash サーフェス上で解決されます。
まずは同意バナーを
サイトで同意マネージャーを使用している場合は、同意の背後にあるスニペットをゲートします。訪問者が分析を受け入れた場合にのみトラッカーを呼び出します。
ボットフィルター済み
サーバー側のボット検出は人間以外のトラフィックにフラグを立てるため、メンバーのタイムラインや統計が汚染されることはありません。
旅の残りを記録する
ウェブは 4 つの表面のうちの 1 つです。電子メール、ロイヤルティ ポータル、アプリがどのように同じメンバーのタイムラインにフィードを提供するかをご覧ください。