コンバージョントラッキング

ユーザーがサイトでコンバージョンしたときにポストバックを送信する方法 - CPAキャンペーンが正しくアトリビューション・課金するために必須です。

CPAキャンペーンでは、ユーザーがコンバージョンしたことを当社が知るのは、 you あなたが教えてくれたときだけです。その仕組みが postbackです:ユーザーがあなたのサイトで目的の行動をしたら、あなたのサーバーが当社サーバーに短いリクエストを送信し、当社は元のクリックに対してコンバージョンを記録します。この配線がないと、CPAキャンペーンはクリックを配信しても課金されません - どのクリックが顧客になったのか、当社には知るすべがないからです。

このページでは配線を順に説明します。開発作業は約15分、SDKは不要です。

info
これが必要なのは CPAキャンペーンだけです。CPCキャンペーンはクリックで課金。CPMはインプレッションで課金。コレジストレーションは「はい/いいえ」のオプトインで課金します(スニペット内で処理 - ポストバック不要)。

流れ

  1. ユーザーがパブリッシャーのサイトであなたの広告をクリックします。
  2. 当社のアドサーバーが ?efaid=<click_id> をリンク先URLに追加し、ユーザーをそこへリダイレクトします。クリックIDは、このクリックに固有の24文字の16進文字列です。
  3. あなたのランディングページが次の値を取得します: efaid (URLパラメータ)を保存します - 通常は、ページ遷移をまたいで生き残るセッションクッキーに入れます。
  4. ユーザーがコンバージョンに当たる行動(登録、購入、インストール)を完了したら、あなたのサーバーが次へポストバックを送信します: https://ads.efind.com/serve/postback.php?efaid=<click_id>.
  5. 当社はクリックを照合してコンバージョンを記録し、クリック発生時に有効だった入札額で課金します。

ステップ1:取得する efaid ランディングページで

ユーザーがあなたのサイトに到達したときのブラウザのURLは、次のようになります:

https://example.com/landing?efaid=ee40d35706798218cce42929

次のパラメータを取り出します: efaid そして保存します。複数ステップのファネルでも生き残るため、クッキーが最も一般的な選択です。JavaScriptの例:

const url = new URL(window.location); const efaid = url.searchParams.get('efaid'); if (efaid) { document.cookie = `efaid=${efaid}; path=/; max-age=${30*24*60*60}; SameSite=Lax`; }

または、ランディングページをサーバー側で制御しているならPHPで:

<?php if (!empty($_GET['efaid']) && preg_match('/^[a-f0-9]{24}$/', $_GET['efaid'])) { setcookie('efaid', $_GET['efaid'], time() + 30*24*60*60, '/', '', true, true); }
warning
この efaid は、保存が続く限りしか生き残りません。到達からコンバージョンまでの間にクッキーを消したユーザーはアトリビューション不能になります。ほとんどのプラットフォームでこれによる約5〜10%の漏れが見られます - オープンなウェブで商売をするコストです。

ステップ2:コンバージョン時にポストバックを送信

サーバー側でコンバージョンが発生した瞬間に、保存しておいた値とともに当社のポストバックURLへGETを1回送信します: efaid:

PHP

$efaid = $_COOKIE['efaid'] ?? ''; if ($efaid !== '') { $url = 'https://ads.efind.com/serve/postback.php?efaid=' . urlencode($efaid); // Fire and forget - don't block the user's request on this. @file_get_contents($url, false, stream_context_create([ 'http' => ['timeout' => 2, 'ignore_errors' => true] ])); }

Node.js

const efaid = req.cookies.efaid; if (efaid) { fetch(`https://ads.efind.com/serve/postback.php?efaid=${encodeURIComponent(efaid)}`) .catch(() => {}); // fire-and-forget }

Python

import requests efaid = request.COOKIES.get('efaid') if efaid: try: requests.get(f'https://ads.efind.com/serve/postback.php?efaid={efaid}', timeout=2) except requests.RequestException: pass

cURL(テスト用またはシェルベースのスタック向け)

curl -s "https://ads.efind.com/serve/postback.php?efaid=$EFAID"

代替:ピクセル方式(サーバーアクセス不要)

サーバーサイドのポストバックを送信できない場合 - SaaSのランディングページやシンプルなサンキューページでよくあります - は、1×1の画像ピクセルを代わりに使えます。コンバージョン確認ページ(Shopifyの「ありがとうございました」ページ、Wixの注文確認など)のHTMLにこれを置いてください:

<img src="https://ads.efind.com/serve/pixel.php?efaid=YOUR_EFAID_HERE" width="1" height="1" alt="" style="display:none">

テンプレートで置き換える必要があります: YOUR_EFAID_HERE を保存済みの値に。ほとんどのeコマースプラットフォームには、注文メタデータ付きのカスタムHTMLを挿入する方法があります。ピクセルはサーバーポストバックよりやや信頼性が落ちます(広告ブロッカー、サードパーティリクエストを遮断するブラウザ)が、設定は簡単です。

レスポンスの形式

postback.php はJSONを返します。 pixel.php は画像を返しますが、ヘッダーにデバッグ情報を追加します - ブラウザの開発者ツールで連携を確認するのに便利です。

JSONの形

{ "ok": true, "recorded": true, "reason": null } ← conversion logged ✓ { "ok": true, "recorded": false, "reason": "already_recorded" } ← duplicate fire (no harm) { "ok": true, "recorded": false, "reason": "not_found" } ← efaid doesn't match a click { "ok": true, "recorded": false, "reason": "bad_click_id" } ← malformed efaid { "ok": true, "recorded": false, "reason": "window_expired" } ← click was over 30 days old

HTTPステータスは結果にかかわらず常に200です。成功か否かのシグナルは次にあります: recorded。連携では次を成功として扱ってください: recorded: true それ以外の状態は「送信したが記録されなかった」として扱います - たいていは問題ありません(「no」の理由のほとんどは運用上正常です)。

連携のテスト

  1. ダッシュボードでテストキャンペーンを設定します(入札額は任意 - 下書きキャンペーンのテストコンバージョンには課金されません)。
  2. パブリッシャーのサイトから、または当社アドサーバーのURLから直接、広告をクリックして次を控えます: efaid ランディングURLに付加された値。
  3. ポストバックが送信される形でコンバージョンフローを実行します。
  4. ダッシュボードのキャンペーン詳細ページを確認します - コンバージョンの数値が1分以内に増えるはずです。
  5. 同じ値で同じポストバックをもう一度送信します: efaid - 数値は2回目には増えないはずです(冪等)。

重要な挙動

次へ
レポートの読み方
arrow_forward