コンテンツにスキップ

通信の仕様

タグが使う通信は 4 つです。どれも Cookie を送らず(credentials: 'omit')、送信元のドメインを サイトの登録 の「タグを置くドメイン」と照らし合わせます。一致しないときは 403 を返し、CORS のヘッダーも付けません。

GET /v1/sites/{サイトキー}/config

ページを読み込んだときに 1 回だけ呼びます。3 秒で打ち切ります。

応答 意味
{"enabled": true, "blocks": {"hero": "…", "plan": "…", "fields": {…}}, "measure": {…}} 出し分けが ON。差し替えるブロック・差し替える場所(fields)・プランの場所の CSS セレクタと、効果の測り方(比べる群の割合・完了ページ)
{"enabled": true, "preview": true, …} プレビュー用のリンクで開いたタブ(出し分けは OFF のまま)
{"enabled": false} 出し分けが OFF。タグは以後、何も読まず何も送りません

プレビュー用のリンク(?mitate_preview=…)で開いたタブでは、?preview=… を付けて呼びます。鍵はサイトごと・24 時間で使えなくなります。

POST /v1/sites/{サイトキー}/seen
Content-Type: text/plain

動いているとき(出し分けが ON か、プレビュー用のリンクで開いたタブ)に、タブ・ページごとに 1 回だけ送ります。本文は {"path": "/lp", "fields": {"title": true, "sub": false}} の形で、ページのパスと、差し替える場所が見つかったかだけです。訪問者の操作や相談は含みません。答えは 204 です。

POST /v1/sites/{サイトキー}/event
Content-Type: text/plain

効果を測る ための通信です。訪問(タブごとに 1 回)と申し込み(タブごとに 1 回)を送ります。本文は {"type": "visit", "group": "test"} か {"type": "conversion", "group": "test", "concern": "price"} の形で、種類・群・そのとき出していた訴求の関心だけです。MITATE は日ごとの数を足すだけで、1 件ずつは残しません。答えは 204 です。プレビュー用のリンクで開いたタブと、出し分けが OFF のサイトでは数えません。

POST /v1/sites/{サイトキー}/judge
Content-Type: text/plain

本文は JSON です(送る内容の実物)。Content-Type: text/plain にしているのは、事前確認(preflight)の往復をなくして速く返すためです。1.5 秒で打ち切ります。

応答 意味 タグの動き
200 {state, hero, heroChanged, plan} 判定の結果 hero があれば、その訴求を出す。plan があればプランを出す
200 {"reset": true} 出し分けが止められた 標準の表示に戻し、以後は何も送らない
200 {"skip": "daily_limit"} サイトの 1 日の上限に届いた 何もしない
400 本文の形が崩れている 何もしない
403 送信元のドメインが登録されていない 何もしない
413 本文が 16KB を超えた 何もしない
429 流量の上限を超えた 何もしない
503 判定が時間内に返らなかった 何もしない
項目 上限
本文の大きさ 16KB
1 回に送る操作 直近 12 件(1 件 60 字、data-mitate-act と mitate.push は 120 字)
1 回に送るやり取り 直近 10 件(1 件 300 字)
判定の頻度 1 つのタブで 1 分に 30 回
サイトの 1 日の判定の回数 サイトごとに決めた上限(既定 5,000 回)