人気ワード

Copy Title & URL

Bookmark

Feed

Share

サブドメイン運用時のトラッキングタグ設定方法

目次

  1. サブドメイン運用時のトラッキング
    1. Cookie発行ファイルがアップロードできる場合
    2. Cookie発行ファイルがアップロードできない場合
      1. 同一ドメイン内の遷移
      2. 複数ドメインを含む遷移

製品バージョン:3.7.0のタグをご利用の方は、こちら から。

サブドメイン運用時のトラッキング

本ドメインとサブドメインを用いてサイトを運用する場合のトラッキングについて解説します。

  • 着地ページ(本ドメイン x.com) → CVページ(サブドメイン aaa.x.com)
  • 着地ページ(サブドメイン aaa.x.com) → CVページ(本ドメイン x.com)

Cookie発行ファイルが設置できる場合はCookie発行ファイルに、Cookie発行ファイルが設置できない場合は着地点タグに、それぞれCookieを有効とするサブドメインの記述を追記します。

ドメイン自体が異なる場合(クロスドメイン)は、タグ設置型:トラッキングタグ設置手順 を参照してください。

1. Cookie発行ファイルがアップロードできる場合

Cookie発行ファイルがアップロードできる場合(PHPファイルによるCookie認証)、「Cookie発行ファイル」に有効なサブドメインを追記します。

setcookie() の引数例
setcookie (Cookie名, Cookieの値, Cookie有効期限, Cookie有効パス,Cookie有効ドメイン
サブドメイン運用時には、有効ドメイン(domain)の指定をします。
サブドメイン_Cookie発行ファイル

▼変更後 Cookie発行ファイル

<?php

if(defined("PHP_VERSION_ID"))
$version = PHP_VERSION_ID;
else
$version = 0;

$p_key = "p";
$link_keys = array(
array("cid", "CL_", "ACT_"),
array("plid", "PL_", "APT_"),
);

$p_val = $_GET[$p_key];

if(!ctype_alnum($p_val)) return;

foreach($link_keys as $key)
{
if(!is_array($key)) continue;

if(isset($key[0])) $val = $_GET[$key[0]];

if(!ctype_alnum($val)) continue;

$expires = time() + 63072000;
$path = "/";
$secure = true;
$samesite = "None";

if($version >= 70300)
{
$options = array("expires" => $expires, "path" => $path, "secure" => $secure, "samesite" => $samesite, "domain" => "ドメイン");
if(isset($key[1])) setcookie($key[1].$p_val, $val, $options);
if(isset($key[2])) setcookie($key[2].$p_val, "php", $options);
}
else
{
$options = $path."; SameSite=".$samesite;
if(isset($key[1])) setcookie($key[1].$p_val, $val, $expires, $options, "ドメイン", $secure);
if(isset($key[2])) setcookie($key[2].$p_val, "php", $expires, $options, "ドメイン", $secure);
}
}

追記箇所(3ヵ所)

$options = array("expires" => $expires, "path" => $path, "secure" => $secure, "samesite" => $samesite, "domain" => "ドメイン");

if(isset($key[1])) setcookie($key[1].$p_val, $val, $expires, $options, "ドメイン", $secure);
if(isset($key[2])) setcookie($key[2].$p_val, "php", $expires, $options, "ドメイン", $secure);

※サブドメインを含むドメイン全体でクッキーを有効にしたい場合、そのドメイン自体を設定します。
(例)サブドメイン が「aaa.x.com」なら「x.com」を指定。

2. Cookie発行ファイルがアップロードできない場合

Cookie発行ファイルがアップロードができない場合(JavaScriptによるCookie認証)は、「着地点タグ」「中間地点タグ」にドメイン属性の追加を行います。

  • 同一ドメイン内の遷移:着地点タグ
  • 複数ドメインを含む遷移:着地点タグ、中間地点タグ
document.cookie の属性例
Path=Cookie有効パス、Domain=Cookie有効ドメイン
サブドメイン運用時には、有効ドメイン(domain)の指定をします。
タグ編集時の注意点
以下記述例はサンプルコードのため、システム設置先URL、広告ID、中間地点タグへの遷移先URLなどは汎用例です。
タグ編集時はお客様環境の該当タグを取得し、ドメインに関する記述を変更してください。

同一ドメイン内の遷移

▼変更後 着地点タグ

<script>
(function acsKeep(){
var PK = "p";
var IMK = "im";
var LKEYS = {cid : ["cid", "CL_", "ACT_"], gclid : ["plid", "PL_", "APT_"]};
var DKEYS = ["gclid"];
var PDIR = "./";
var durl = "https://demo.affilicode.jp/system/direct.php";
function saveCookies(data){ var p = data[PK]; var out = Object.keys(LKEYS).reduce(function(ret, k){ if(k in data && data[k]) ret[k] = data[k]; return ret; }, {}); if(!p || !Object.keys(out).length) return;
var purl = PDIR + "lptag.php?p=" + p; Object.keys(out).forEach(function(k){ purl += "&" + LKEYS[k][0] + "=" + out[k]; localStorage.setItem(LKEYS[k][1] + p, out[k]); });
var xhr = new XMLHttpRequest(); var args = "; expires=" + new Date(new Date().getTime() + 63072000000).toUTCString() + "; path=/; domain=ドメイン; SameSite=None; Secure"; xhr.open("GET", purl);
xhr.onloadend = function(){ if(xhr.status === 200) return; Object.keys(out).forEach(function(k){ document.cookie = LKEYS[k][1] + p + "=" + decodeURIComponent(out[k]) + args; if(LKEYS[k][2]) document.cookie = LKEYS[k][2] + p + "=js" + args; }); }; xhr.send(); }
var data = location.search.substring(1).split("&").reduce(function(ret, s){ var kv = s.split("="); if(kv[1]) ret[kv[0]] = kv[1]; return ret; }, {}); if(!(IMK in data)){ saveCookies(data); return; }
durl += "?im=" + data[IMK] + "&navi=" + performance.navigation.type; DKEYS.forEach(function(k){ if(!(k in data)) return; durl += "&" + k + "=" + data[k]; });
var xhr = new XMLHttpRequest(); xhr.open("GET", durl); function merge(a, b){ return Object.keys(LKEYS).reduce(function(ret, k){ if(k in b && !(k in a)) ret[k] = b[k]; return ret; }, a); }
xhr.onloadend = function(){ if(xhr.status !== 200) return; try{ saveCookies(merge(JSON.parse(xhr.responseText), data)); }catch(_){ } }; xhr.send(); })();
</script>

追記箇所(1ヵ所)

var xhr = new XMLHttpRequest(); var args = "; expires=" + new Date(new Date().getTime() + 63072000000).toUTCString() + "; path=/; domain=ドメイン; SameSite=None; Secure"; xhr.open("GET", purl);

※サブドメインを含むドメイン全体でクッキーを有効にしたい場合、そのドメイン自体を設定します。
(例)サブドメイン が「aaa.x.com」なら「x.com」を指定。

複数ドメインを含む遷移

▼変更後 着地点タグ

<script>
function acsRelay_pgt6sve2vh9w(){
var PK = "p";
var PV = "pgt6sve2vh9w";
var IMK = "im";
var LKEYS = {cid : ["cid", "CL_"], gclid : ["plid", "PL_"]};
var DKEYS = ["gclid"];
var AURL = "https://example.com";
var PDIR = "./";
var ATTR = "href";
var OPSL = ["^=", "=", "*="];
var OPSV = 0;
var durl = "https://demo.affilicode.jp/system/direct.php";
function convertURL(){ var data = document.cookie.split("; ").reduce(function(ret, s){ var kv = s.split("="); if(kv[0] && kv[1]) ret[kv[0]] = kv[1]; return ret; }, []);
var out = Object.keys(LKEYS).reduce(function(ret, k){ var lk = LKEYS[k][1] + PV; var val = data[lk] ? data[lk] : localStorage.getItem(lk); if(val) ret[k] = val; return ret; }, []); if(!Object.keys(out).length) return;
var prms = Object.keys(out).reduce(function(ret, k){ ret += "&" + k + "=" + out[k]; return ret; }, "p=" + PV);
var nodes = [].slice.call(document.querySelectorAll("[" + ATTR + OPSL[OPSV] + '"' + AURL + '"]'), 0); nodes.forEach(function(node){ var url = node.getAttribute(ATTR); if(/\?/.test(url)) url += "&" + prms; else url += "?" + prms; node.setAttribute(ATTR, url); }); }
function saveCookies(data){ var p = data[PK]; var out = Object.keys(LKEYS).reduce(function(ret, k){ if(k in data && data[k]) ret[k] = data[k]; return ret; }, {}); if(!p || !Object.keys(out).length){ convertURL(); return; }
var purl = PDIR + "lptag.php?p=" + p; Object.keys(out).forEach(function(k){ purl += "&" + LKEYS[k][0] + "=" + out[k]; localStorage.setItem(LKEYS[k][1] + p, out[k]); });
var xhr = new XMLHttpRequest(); var args = "; expires=" + new Date(new Date().getTime() + 63072000000).toUTCString() + "; path=/; domain=ドメイン; SameSite=None; Secure"; xhr.open("GET", purl);
xhr.onloadend = function(){ if(xhr.status === 200){ convertURL(); return; } Object.keys(out).forEach(function(k){ document.cookie = LKEYS[k][1] + p + "=" + decodeURIComponent(out[k]) + args; }); convertURL(); }; xhr.send(); }
var data = location.search.substring(1).split("&").reduce(function(ret, s){ var kv = s.split("="); if(kv[1]) ret[kv[0]] = kv[1]; return ret; }, {}); if(!(IMK in data)){ saveCookies(data); return; }
durl += "?im=" + data[IMK] + "&navi=" + performance.navigation.type; DKEYS.forEach(function(k){ if(!(k in data)) return; durl += "&" + k + "=" + data[k]; });
var xhr = new XMLHttpRequest(); xhr.open("GET", durl); function merge(a, b){ return Object.keys(LKEYS).reduce(function(ret, k){ if(k in b && !(k in a)) ret[k] = b[k]; return ret; }, a); }
xhr.onloadend = function(){ if(xhr.status !== 200) return; try{ saveCookies(merge(JSON.parse(xhr.responseText), data)); }catch(_){ } }; xhr.send(); }
if(document.readyState === "loading"){ document.addEventListener("DOMContentLoaded", acsRelay_pgt6sve2vh9w); }else { acsRelay_pgt6sve2vh9w(acsRelay_pgt6sve2vh9w); }
</script>

追記箇所(1ヵ所)

var xhr = new XMLHttpRequest(); var args = "; expires=" + new Date(new Date().getTime() + 63072000000).toUTCString() + "; path=/; domain=ドメイン; SameSite=None; Secure"; xhr.open("GET", purl);

※サブドメインを含むドメイン全体でクッキーを有効にしたい場合、そのドメイン自体を設定します。
(例)サブドメイン が「aaa.x.com」なら「x.com」を指定。

▼変更後 中間地点タグ

<script>
(function acsKeep(){
var PK = "p";
var IMK = "im";
var LKEYS = {cid : ["cid", "CL_", "ACT_"], gclid : ["plid", "PL_", "APT_"]};
var DKEYS = ["gclid"];
var PDIR = "./";
var durl = "https://demo.affilicode.jp/system/direct.php";
function saveCookies(data){ var p = data[PK]; var out = Object.keys(LKEYS).reduce(function(ret, k){ if(k in data && data[k]) ret[k] = data[k]; return ret; }, {}); if(!p || !Object.keys(out).length) return;
var purl = PDIR + "lptag.php?p=" + p; Object.keys(out).forEach(function(k){ purl += "&" + LKEYS[k][0] + "=" + out[k]; localStorage.setItem(LKEYS[k][1] + p, out[k]); });
var xhr = new XMLHttpRequest(); var args = "; expires=" + new Date(new Date().getTime() + 63072000000).toUTCString() + "; path=/; domain=ドメイン; SameSite=None; Secure"; xhr.open("GET", purl);
xhr.onloadend = function(){ if(xhr.status === 200) return; Object.keys(out).forEach(function(k){ document.cookie = LKEYS[k][1] + p + "=" + decodeURIComponent(out[k]) + args; if(LKEYS[k][2]) document.cookie = LKEYS[k][2] + p + "=js" + args; }); }; xhr.send(); }
var data = location.search.substring(1).split("&").reduce(function(ret, s){ var kv = s.split("="); if(kv[1]) ret[kv[0]] = kv[1]; return ret; }, {}); if(!(IMK in data)){ saveCookies(data); return; }
durl += "?im=" + data[IMK] + "&navi=" + performance.navigation.type; DKEYS.forEach(function(k){ if(!(k in data)) return; durl += "&" + k + "=" + data[k]; });
var xhr = new XMLHttpRequest(); xhr.open("GET", durl); function merge(a, b){ return Object.keys(LKEYS).reduce(function(ret, k){ if(k in b && !(k in a)) ret[k] = b[k]; return ret; }, a); }
xhr.onloadend = function(){ if(xhr.status !== 200) return; try{ saveCookies(merge(JSON.parse(xhr.responseText), data)); }catch(_){ } }; xhr.send(); })();
</script>

追記箇所(1ヵ所)

var xhr = new XMLHttpRequest(); var args = "; expires=" + new Date(new Date().getTime() + 63072000000).toUTCString() + "; path=/; domain=ドメイン; SameSite=None; Secure"; xhr.open("GET", purl);

※サブドメインを含むドメイン全体でクッキーを有効にしたい場合、そのドメイン自体を設定します。
(例)サブドメイン が「aaa.x.com」なら「x.com」を指定。

以上の設定で、着地ページ、CVページいすれかにサブドメインを使用している場合でも「1st Party Cookie」での成果認証を行うことができます。

関連記事