Manual
コンバージョンAPI — 注文の実額をサーバーから送る
最終更新: 2026年8月25日
この機能が必要な方・必要ない方
- 必要な方 … ネットショップ・会員サービスを運営していて、注文ごとの金額を成果に載せたい方。 サーバー側のプログラム(WordPressのテーマやプラグイン、自作アプリ)に数行足せる方、または制作を頼める方。
- 必要ない方 … ブログ・アフィリエイト・お問い合わせが目標のサイト。「目標(成果・CV)」の設定だけで成果は数えられます。この機能は使わなくて構いません。
この機能は、注文の確定を知っているのがあなたのサーバーだけだから必要になります (ブラウザの計測タグは「買ったこと」は分かっても「いくらだったか」を確実には知りません)。
できること
注文が確定したとき、あなたのサーバーからAnalytics CORE に金額を送ると、その注文が実額で成果に載ります。 タグで数える成果は「1件の価値」×件数の概算ですが、こちらは注文ごとの本当の金額です。
買い手のIPアドレスとブラウザ情報を一緒に送ると、同じ日にサイトを見た訪問と自動で結びつき、 どの経路(検索・SNS・AI…)の、どの入口ページから生まれた売上かまで分かります。 Cookieもクリック用のIDも要りません。
- 広告ブロッカーで計測タグが止められた訪問の注文も、サーバーからなら届く
- 決済完了ページを閉じられても、サーバーの確定処理から送れる
- キャンセル・返金は同じ
order_idで金額を送り直すだけ(0円なら取り消し)
準備(1分)
- 設定画面(左メニューの「設定」)を開き、「コンバージョンAPI」のカードまでスクロールする
- [トークンを発行] を押す。表示されたトークンを控える
- [疎通を確認する] を押して「確認できました」と出れば、受け口の準備は完了です(成果としては記録されません)
- 注文が確定する処理の最後に送る。WordPress(WooCommerce)なら下の貼るだけの例が使えます。 それ以外は次の項目の形式で送ってください
トークンはサーバー側だけに保存してください(ブラウザのJavaScriptや公開リポジトリに置くと、 誰でも偽の成果を送れてしまいます)。
送り方
POST https://analyticscore.jp/api/cv
Authorization: Bearer <トークン>
Content-Type: application/json
{
"order_id": "ord_123", // 必須。注文ごとに一意(再送は上書き)
"value_jpy": 4980, // 金額(円・整数)。取り消しは 0
"goal": "purchase", // 目標の名前。目標画面の名前と同じにすると一覧が繋がる
"buyer_ip": "203.0.113.7", // 買い手のIP(結びつけ用・保存しません)
"buyer_ua": "Mozilla/5.0 ...", // 買い手のブラウザ情報(同上)
"url": "https://example.com/thanks" // 任意
}注文が確定した直後に送るなら、時刻の指定は要りません(受信した時刻を使います)。 あとからまとめて送る場合だけ occurred_at に確定時刻をISO 8601形式 (例 2026-08-25T12:34:56Z)で入れてください。★未来の時刻は受け付けませんので、 サンプルの日時をそのまま貼らないでください。
buyer_ip と buyer_ua は、あなたのサーバーが受け取ったリクエストの 接続元IPと User-Agent ヘッダをそのまま入れてください。結びつけの計算にだけ使い、保存しません。
WordPress(WooCommerce)の例 — これを貼るだけ
使っているテーマの functions.php(推奨は子テーマ、またはコードスニペット系プラグイン)に貼り付け、 1行目のトークンだけご自分のものに置き換えてください。注文が「支払い済み」になったときに自動で送られます。
<?php
// Analytics CORE — 注文の実額を送る(WooCommerce)
add_action( 'woocommerce_payment_complete', function ( $order_id ) {
$token = 'ここにトークンを貼る'; // 設定画面 → コンバージョンAPI で発行したもの
$order = wc_get_order( $order_id );
if ( ! $order ) { return; }
wp_remote_post( 'https://analyticscore.jp/api/cv', array(
'timeout' => 5,
'blocking' => false, // 注文処理を遅くしない(応答を待たない)
'headers' => array(
'Authorization' => 'Bearer ' . $token,
'Content-Type' => 'application/json',
),
'body' => wp_json_encode( array(
'order_id' => (string) $order_id,
'value_jpy' => (int) $order->get_total(),
'goal' => 'purchase',
'buyer_ip' => $order->get_customer_ip_address(),
'buyer_ua' => $order->get_customer_user_agent(),
'url' => $order->get_checkout_order_received_url(),
) ),
) );
} );- 返金したときも送りたい場合は、同じ形で
woocommerce_order_refundedにも足し、value_jpyを返金後の金額にしてください blocking => falseにしているので、送信が遅くてもお客様の注文完了画面は待たされません- 目標名(
goal)を「目標(成果・CV)」画面の名前と同じにすると、一覧の同じ行にまとまります
応答の読み方
{ "ok": true, "order_id": "ord_123", "matched": true, "reason": null }
{ "ok": true, "order_id": "ord_124", "matched": false, "reason": "late",
"hint": "当日(UTC)内の注文だけ訪問と突合できます。台帳には件数と金額が残ります。" }- matched: true … 同じ日の訪問と結びつきました。経路別・入口ページ別の成果に載ります
- matched: false … 結びつきませんでした。それでも件数と金額は設定画面の「未照合」に残ります(黙って捨てません)
reasonは3種類:late(当日外)/no_visit(同じ日の訪問が無い)/no_identity(IPかブラウザ情報が無い)- エラー(
ok: false)はerror.messageに直し方が書いてあります
結びつく条件と限界
- 結びつくのは同じ日(UTC)の訪問だけです。訪問者IDは24時間で切り替わるプライバシー設計のため、 翌日以降に送った注文は「未照合」になります。確定したらその日のうちに送るのがコツです
- 買い手が回線を切り替えた(Wi-Fi→モバイルなど)場合や、別の端末で注文した場合は結びつきません
- 同じ
order_idの再送は上書きです。金額を変えて送り直せば差額が反映されます(0円で取り消し) - 目標画面に同じ名前の「URL到達」の目標があっても、同じ人の同じ日の成果は二重に数えません
うまくいかないとき
- 401 が返る — トークンが違います。再発行した場合は新しいトークンに差し替えてください
- 照合率が低い — 送るタイミングが翌日以降になっていないか(
reason: late)、buyer_ip/buyer_uaが空になっていないか(no_identity)を設定画面の内訳で確認してください - 解決しない場合は support@analyticscore.jp まで、応答のJSONを添えてご連絡ください