JANet(ジャネット)とCV連携する

JANetに反映されているCVデータを、Squad beyondのレポート上にも反映させることが可能です。

Squad beyond上の設定

  1. アフィリエイトリンクの設置
    JANetより取得したアフィリエイトリンクを
    配信ページのCTAボタンに設置し
    計測機能付きリンク(レポート計測する)に変更します。





  2. タグの設置
    該当ページの「タグ設定」>「JS(head / body)」に連携用JS(本ページ最下部記載)を設置し、右上の「更新」 をクリックします。



  3. 編集内容を配信ページに反映
    Version編集画面の「更新」をクリックします。

JANet 側の設定

上記Squad beyond上の設定が完了しましたら、

JANetのご担当者様へ、以下2点を共有してください。

  • Squad beyond への ポストバック設定を実施したい旨
  • 上記設定が完了した beyond 配信ページの URL
JANet側の設定完了後、
JANetご担当者様にてCVテストを実施していただきます。

 

疎通テスト完了後の確認


JANetご担当者様から
疎通テスト完了の連絡がありましたら、
2〜3時間程度待って、Squad beyondのレポート上にCVデータが反映されているかをご確認ください。


CVデータが反映されない場合


CVデータが3時間以上経過しても反映されない場合は、

以下の情報をJANetご担当者様から取得の上、フリーチャットよりお問い合わせください。

  • テスト実施日時
  • テスト実施時の squadbeyond_uid
    •  (u= パラメータの値)
  • HTTP ステータスコード

 

連携用JS

▼タグ設定>JS headに以下を設置

<script>
class sbParams {
    constructor(selector = 'a[href^=http') {
        const linklist = document.body.querySelectorAll(selector);
        this.toLinkTargets = Array.prototype.slice.call(linklist, 0);
        this.url = new URL(location.href);
        this.params = new URLSearchParams(this.url.search);
        this.aid = document.querySelector('.js-a-id') ? document.querySelector('.js-a-id').dataset.value || null : null;
        this.vid = null;
        if (window.sb_visitor_id) {
            this.vid = window.sb_visitor_id;
        } else if (document.querySelector('.js-v-id') && document.querySelector('.js-v-id').dataset.value) {
            this.vid = document.querySelector('.js-v-id').dataset.value;
        } else if (this.getCookie('_sb_tu')) {
            this.vid = this.getCookie('_sb_tu');
        }
    }
    static async init(selector = 'a[href^=http') {
        const SB = new sbParams(selector);
        SB.vid = await this.getDatasetVid();
        return SB;
    }
    static async getDatasetVid() {
        return new Promise(async (resolve, reject) => {
            const el = document.querySelector('.js-v-id');
            if (!el) {
                reject('.js-v-id missing');
            } else {
                let vid = el.dataset.value;
                if (!vid || vid == "") {
                    const observer = new MutationObserver((_mutationList, observer) => {
                        vid = el.dataset.value;
                        if (vid && vid != "") {
                            observer.disconnect();
                            resolve(vid);
                        }
                    });
                    observer.observe(el, {
                        attributes: true,
                        attributeFilter: ['data-value']
                    })
                } else {
                    resolve(vid);
                }
            }
        });
    }
    getCookie(name) {
        const match = document.cookie.match(new RegExp('(^| )' + name + '=([^;]+)'));
        if (match) return match[2];
    }
    assignParams(base, extend) {
        const baseParams = [...base.entries()]
            .reduce((obj, e) => ({ ...obj, [e[0]]: e[1] }), {});
        const extendParams = [...extend.entries()]
            .reduce((obj, e) => ({ ...obj, [e[0]]: e[1] }), {});
        const joinParams = Object.assign({}, extendParams, baseParams);
        return new URLSearchParams('?' + Object.entries(joinParams).map((e) => `${e[0]}=${e[1]}`).join('&'));
    }
    parameterToLink(fn = ((href) => { return href })) {
        this.toLinkTargets.forEach((element) => {
            if (element.href.includes('tel:')) return
            const href = fn(new URL(element.href));
            element.href = href.toString();
        });
    }
    addParameter(href, list) {
        list = new URLSearchParams(list);
        href.search = this.assignParams(list, href.searchParams).toString();
        return href;
    }
    addParameterToLink(list) {
        this.parameterToLink((href) => this.addParameter(href, list));
    }
    /* Squad beyond test251224_*/
}
</script>

 

▼JS bodyに以下を設置

 <script>
    window.addEventListener('load', () => {
        const SB = new sbParams();
         (async () => {
             const SB = await sbParams.init();
            SB.addParameterToLink({
              'u': SB.vid
             });
         })();
    }, false);
</script>

 

関連FAQ

▼ Squad beyondのソケット連携仕様書

https://knowledge.squadbeyond.com/improve-ad-effect/integrate-tool/tool#flow5

 

▼外部ツールのCVをSquad beyondに反映する

https://knowledge.squadbeyond.com/improve-ad-effect/integrate-tool/tool