トラッキングURLの構成方法
応答は、組み合わせるべき3つのソースを提示します。
- Page-level
trackers.impression: for example, a page impression usestype: "impression"andparamsincludingtsandiabConsentString. - Shared
trackingTemplates: one set ofclient(relative) andserver(absolute) URL templates, already containing session and placement query parameters. - Per-node
trackers.clickand/ortrackers.addToCarton a module, row, or gallery item:type+paramsfor that specific event (for example,modId,rurl,productCode).
使用するテンプレート
Use the node’s tracking.type to look up trackingTypes.<type>. This defines the valid client.* and server.* keys for that interaction (for example, for link: client.clickRedirect, client.clickEvent, server.clickEvent).
クライアント対サーバー
- Client (
trackingTemplates.client.*): Values are relative paths (including query strings). Prepend your reverse‑proxy base URL (BASEURL). - Server (
trackingTemplates.server.): Values are absolute URL templates on the Epsilon tracking host. Compose the final URL the same way as C2S: template +"&"+queryString(trackers.<slot>params).
Do not change the template’s host or path, and do not send S2S calls through your reverse proxy.
使用例(擬似コード)
C2S click for a HERO CTA
url = BASEURL + trackingTemplates.client.clickRedirect + "&" + queryString(trackers.click.params)
S2S page impression
url = trackingTemplates.server.impressionEvent + "&" + queryString(trackers.impression.params)
S2S add-to-cart for a product row
url = trackingTemplates.server.addToCartEvent + "&" + queryString(trackers.addToCart.params)
Macro substitution
- Replace {TS} with the current millisecond timestamp, {RURL} with the URL-encoded destination, and
{TCF}with the current TCF v2 string from your CMP before firing. - For add-to-cart, also substitute {QTY} with the absolute quantity of that SKU in the cart at fire time (not a delta), and {CONVERSION_VALUE} with the absolute monetary value of those items (quantity × unit price, minus any applied discounts).
- Only
trackingTemplates.client.impressionPixelUrlsare true pixels (1×1 GIFs).clickRedirectis a 302 redirect endpoint.clickEventandaddToCartEventare event beacons that return 204 No Content.
同じ論理イベントに対してC2SとS2Sの両方を発生させないでください(たとえば、同じクリックに対してC2SクリックイベントとS2Sクリック通知の両方を送信しないでください)。
トラッキング – クライアントからサーバーへ(C2S)
C2S tracking is implemented in the browser using composed URLs. Prepend BASEURL to the paths in trackingTemplates.client and append the appropriate trackers.<slot>params (see How to Compose a Tracking URL).
Only client.impressionPixelUrls are pixels (1×1 GIF). The other client templates are not pixels:
-
client.clickRedirect: 302 redirect endpoint. Epsilon logs the click and redirects the browser to the decoded rurl. Use this as a browser navigation target. -
client.clickEvent: Event beacon returns 204 No Content). Fire usingnavigator.sendBeaconorfetch({ keepalive: true }). Do not render as<img>. -
client.addToCartEvent: Event beacon (returns 204). Uses the same firing pattern asclickEvent.
実装手順
-
APIが返すブランドページのコンテンツをレンダリングします。
-
レンダリング後、ブラウザでインプレッションピクセルを起動します(
trackingTemplates.client.impressionPixelUrls内のすべてのエントリを1x1画像として)。 -
When a user clicks a trackable node, either:
(a) redirect through the composedclient.clickRedirectURL, or
(b) fire the composedclient.clickEventURL as an event beacon and navigate to the destination yourself.
Use one or the other per click, not both.
インプレッションピクセル
After the brand page renders, fire each path in trackingTemplates.client.impressionPixelUrls as a 1×1 image, (see How to Compose a Tracking URL).
<img src="https://www.retailer.com/epsilon/tracking/v3/impression/pixel/brandpage_djog...?...&ts=1737485823910"
width="1" height="1" style="display:none" />手順:
trackingTemplates.client.impressionPixelUrlsの各文字列に対して、BASEURLを前に付けます(例:https://www.retailer.com/epsilon)。- Append
&+queryString(trackers.impression.params), substituting{TS}with the current millisecond timestamp and{TCF}with the current consent string from your CMP. - ブラウザで1×1の
< img src="...">として表示(または同等のもの)されます。
クリックトラッキング
オプションA:リダイレクトをクリックします(client.clickRedirect)
client.clickRedirect)Navigate the user through the composed URL. Epsilon logs the click and responds with HTTP 302 to the decoded rurl. This endpoint is GET only, and rurl is required;
オプションB:クリックイベントビーコン((client.clickEvent)
client.clickEvent)Fire as a beacon and navigate yourself. Accepts GET or POST, returns 204 No Content. Not an image; do not render as<img>.
カートに追加(C2S)
Fire trackingTemplates.client.addToCartEvent as an event beacon (not a pixel) when the user adds a product to cart. Accepts GET or POST, returns 204 No Content.
Do not combine C2S and S2S add‑to‑cart for the same cart action.
トラッキング – サーバー間(S2S)
S2S tracking is implemented on your backend. Compose URLs the same way as C2S: start from the appropriate trackingTemplates.server string, then append trackers.<slot>params. Server templates are already absolute — there is no BASEURLto prepend. (see How to Compose a Tracking URL).
Do not change the host or path from the server template, and do not send S2S requests through your reverse proxy.
S2Sトラッキングを使用するタイミング
- アーキテクチャにはサーバー側イベントの発生が必要です。
- クライアント側のピクセルが信頼できない環境では、トラッキングが必要です。
- You want to mix strategies - e.g. C2S impressions + S2S add-to-cart. This is supported but never fire both C2S and S2S for the same event.
S2Sインプレッション通知
After the brand page is rendered, your server issues a GET or POST to the composed impression URL: trackingTemplates.server.impressionEvent + trackers.impression.params (substitute {TS} and {TCF} before sending).
S2Sクリック通知
Compose: trackingTemplates.server.clickEvent + trackers.click.params (substitute {TS}, {RURL}, and {TCF}), then issue GET or POST.
S2Sカートへの追加通知
Compose: trackingTemplates.server.addToCartEvent + trackers.addToCart.params (substitute {TS}, {QTY}, {CONVERSION_VALUE}, and {TCF}), then issue GET or POST.
S2Sパラメーター
| パラメーター | ソース | 備考 |
|---|---|---|
catalogId, sessionId, customerId, dtmId, placementId, lsid, utcOffset | trackingTemplates query strings | Preserve these values as-is when firing the request. Do not remove or modify them. |
modId | trackers.<slot>.params | コンテンツモジュールまたは行識別子。 |
ts | trackers.<slot>.params | Replace {TS} with the current timestamp in milliseconds before firing the request. |
iabConsentString | trackers.<slot>.params | Replace {TCF} with the current TCF v2 consent string from the CMP before firing the request. If a value is already provided, use it as-is. |
rurl | trackers.<slot>.params | URL-encoded redirect destination. Replace {RURL} when present. |
productCode、 sellerId | trackers.<slot>.params | Values derived from product nodes. |
qty | trackers.addToCart.params | Replace {QTY} with the absolute quantity of the SKU in the cart at the time the request is fired. Do not use the quantity delta. |
conVal | trackers.addToCart.params | Replace {CONVERSION_VALUE} with the total monetary value of the items (quantity × unit price, minus any applicable discounts). |
マクロリファレンス
| 記号 | 説明 | Found In | Substitute with |
|---|---|---|---|
BASEURL (your prefix) | Your site's base URL with protocol and proxy path - prepend to each trackingTemplates.client.* path. | C2S tracking | https://www.retailer.com/epsilon |
{TS} | Cache-busting timestamp (milliseconds) | trackers.<slot>.params | 1737485823910 |
{RURL} | URLエンコードされたリダイレクト先 | trackers.<slot>.params.rurl | https%3A%2F%2Fwww.retailer.com%2Fprodukt%2F9221200653341 |
{TCF} | IAB TCF v2 consent string placeholder. Present when regs.consent was omitted on the request. | trackers.<slot>.params.iabConsentString | Current TC string from your CMP, e.g. via __tcfapi getTCData → tcString |
{QTY} | Absolute quantity of this SKU in the cart at fire time (not a delta; e.g. if the shopper had 1 and adds another, send 2). | trackers.addToCart.params.qty | 2 |
{CONVERSION_VALUE} | Absolute monetary value of those items: quantity × unit price, minus any applied discounts. | trackers.addToCart.params.conVal | 49.99 |
{RURL_KID} | Redirect signing key ID. Present in trackers.click.redirectParams when platform redirect signing is enabled. | trackers.click.redirectParams.rurlKid | Signing key id returned by the batch sign endpoint |
{RURL_SIG} | Redirect signing signature. Present in trackers.click.redirectParams when platform redirect signing is enabled. | trackers.click.redirectParams.rurlSig | Ed25519 signature (base64url) returned by the batch sign endpoint |
URLエンコーディングリファレンス
{RURL}をエンコードする際は、標準パーセントエンコードを使用します:
| 文字 | エンコード形式 |
|---|---|
: | %3A |
/ | %2F |
? | %3F |
= | %3D |
& | %26 |
redirectParams and Redirect Signing
When platform redirect signing is enabled, trackers.click may include a redirectParamsobject alongside params. The keys in 7are merged only into client.clickRedirect URLs — not into clickEventor any server URL.
Two cases:
Embedded link destinations (URL baked into params.rurl): the platform signs the redirect at serve time and emits literal rurlKidand rurlSigvalues in redirectParams. Append these as-is to the clickRedirect URL.
Retailer-controlled redirects (params.rurl is {RURL}): redirectParams contains the macros {RURL_KID} and {RURL_SIG}. Call the batch sign endpoint (redirectSigning.url from the response) to obtain the key id and signature for your destination URL, then substitute before appending.
The top-level redirectSigningobject, when present, provides the batch POST /ads/v3/redirect/sign endpoint URL and the maxUrlsbatch limit. Contact Epsilon to confirm whether redirect signing is enabled for your integration.
clickRedirect composition with redirectParams:
BASEURL + trackingTemplates.client.clickRedirect + "&" + queryString(trackers.click.params) + "&" + queryString(trackers.click.redirectParams)スタイルガイド
Before enabling Brand Pages on your site, we need to capture your site's visual identity. Fill in the table below with your design values. Our team will use this to configure the brand page preview experience.
ロゴ
| フィールド | 説明 | 値 |
|---|---|---|
| logoUrl | サイトロゴのURL(SVGまたはPNG) |
色
| フィールド | 説明 | 値 |
|---|---|---|
| プライマリカラー | メインブランドカラー(16進数) | |
| 背景色 | ページ背景色(16進数) | |
| 表面の色 | カード/セクション背景色(16進数) | |
| プライマリテキストの色 | メインテキストの色(16進数) | |
| セカンダリテキストの色 | 抑えたテキストの色(16進数) | |
| プライマリカラー上のテキスト | プライマリカラー背景に使用されるテキストの色(16進数) | |
| 枠線の色 | デフォルトの枠線の色(16進数) |
タイポグラフィ
| フィールド | 説明 | 値 |
|---|---|---|
| 見出しフォントファミリー | 見出しに使用するフォント(例:「Google Sans, sans-serif」) | |
| ボディフォントファミリー | 本文に使用するフォント(例:「Roboto, sans-serif」) | |
| 基本フォントサイズ | デフォルトの本文フォントサイズ(例:16px) |
ボタン
| フィールド | 説明 | 値 |
|---|---|---|
| プライマリボタンの背景 | プライマリボタンの背景色 | |
| プライマリボタンのテキストの色 | プライマリボタンのテキストの色 | |
| プライマリボタンの枠線の半径 | 角の丸み(例:8px) | |
| 二番目のボタンスタイル | 二番目のボタンの外観(アウトライン、ゴーストなど)について説明してください。 |
モジュールコンテンツの要件
ブランドページはコンテンツモジュールで構成されています。各モジュールタイプについて、サイトに必要なコンテンツ制約をご記入ください。私たちのチームはこれらを使用して、テンプレートの検証ルールを設定します。
IMAGE Modules
| 要件 | 説明 | 値 |
|---|---|---|
| 最小幅 | 画像の最小幅(ピクセル)(例:1920) | |
| 最小高さ | 画像の最小高さ(ピクセル)(例:500) | |
| 最大ファイルサイズ | Maximum file size in MB (e.g. 10). Must be less than 4MB. | |
| 受け入れ可能な形式 | 受け入れられる画像形式(例:jpg、png、gif、svg) | |
| キャプション最大文字数 | 画像キャプションの最大文字数(該当する場合) | |
altタグのオプション性 | Whether alt is required on images. |
TEXT Modules
| 要件 | 説明 | 値 |
|---|---|---|
| バリアント | 「headline」、「tagline」、「body」、「lines」のいずれか。テキストが表示されるスタイルを決定します。 | |
| 配置 | 「left」、「center」、「right」のいずれか。テキストの水平方向の配置を決定します。 | |
| 「Lines」構成 | Configuration for multi-line text configuration (when variant = lines). For each line of text, provide the following:
| |
| 見出しの最大文字数 | 見出しテキストの最大文字数 | |
| 説明の最大文字数 | 説明文の最大文字数 | |
| 本文/フッターの最大文字数 | 本文またはフッターテキストの最大文字数 | |
| CTAボタン | 必須、任意、不要か? | |
| CTAテキストの最大文字数 | CTAボタンラベルの最大文字数 |
PRODUCT_GRID Modules
| 要件 | 説明 | 値 |
|---|---|---|
| 最小商品数 | 表示する商品の最小数(例:4) | |
| Max製品 | 表示する商品の最大数(例:12) | |
| セクション名 | 必須か、それとも任意か? | |
| セクションタイトルの最大文字数 | セクションタイトルの最大文字数 | |
| セクションの説明 | 必須か、それとも任意か? | |
| セクション説明の最大文字数 | セクション説明の最大文字数 | |
| CTAボタン | 必須、任意、不要か? |
IMAGE_GALLERY Modules
画像ギャラリーモジュールは、IMAGEモジュールと同じ構成プロパティを継承します。さらに、次のギャラリー固有のプロパティも承認します。
| 要件 | 説明 | 値 |
|---|---|---|
| 最小画像 | ギャラリー画像の最小数(例:2) | |
| 最大画像 | ギャラリー画像の最大数(例:4) | |
| セクション名 | セクションタイトルのテキストが必須か任意か。 | |
| セクションの説明 | セクションの説明テキストが必須か任意か。 | |
alt タグのオプション性 | Whether alt is required on images. | |
| 行動喚起の任意性 | コールトゥアクションボタンやリンクが必須か、許可されているか、無効か。 | |
| 追加テキスト行 | For each additional text that is to be associated with each image in the image gallery, provide the following:
|
SPLIT_LAYOUT Modules
分割レイアウトモジュールを使用すると、2つのモジュールを横に並べて表示できます。現在、テキストモジュールと画像モジュールのみに対応しています。テキストモジュールと画像モジュールの個別の構成設定(上記のセクションで説明したとおり)に加えて、以下の追加プロパティが必要です。
| 要件 | 説明 | 値 |
|---|---|---|
| レイアウト比率 | 列比(50:50、33:67、または67:33) |
アイデンティティーとプライバシー
受け入れ可能な識別子
- Session ID - anonymous session identifier (non-PII)
- Customer ID - retailer customer identifier (non-PII, e.g. loyalty ID hash)
ハッシュ化されたメールアドレス、電話番号、または個人情報(PII)を、パラメータやURLに含めて渡さないでください。
プライバシー要件
小売業者は以下を行う必要があります。
- プライバシーポリシーで測定トラッキングに関する開示を行う
- 以下のオプトアウトリンクを提供する
GDPR /同意
オブジェクトregsをPOST /ads/v3/brand-pagesで渡します。
regs.gdpr:1when the request is subject to GDPR (EU/EEA/UK treatment per your policy);0otherwise.regs.consent: Whengdpris1, pass the current TCF v2 consent string from your CMP (the same value you would surface to other ad partners). Do not invent or hardcode a string—use what the user’s browser / app has consented to.iabConsentString: This appears in every tracker slot's params, not intrackingTemplates. Whenregs.consentwas provided, the value is the literal TC string and no further action is needed.- When
regs.consentwas omitted, the value is the{TCF}macro — substitute the current TCF v2 string from your CMP at fire time before sending any tracking request.

