メタデータの末尾にスキップ
メタデータの先頭に移動

このページの古いバージョンを表示しています。現在のバージョンを表示します。

現在のバージョンとの相違点 ページ履歴を表示

« 前のバージョン バージョン 8 次のバージョン »

こちらの記事ではfutureshop コマースクリエイターにて会員情報連携の設定方法について解説します。

会員情報連携の概要については以下の記事をご参照ください。
【WhatYa】会員情報連携のトラブルシューティング

前提条件

futureshopのレイアウトパーツの表示条件にて会員情報連携を設定しています。

留意事項

futureshopの表示条件の機能を活用してログインユーザー未ログインユーザーのWhatYaタグの出し分けを行っています。以下の点をご理解の上ご利用をご検討いただけますと幸いです。

  1. ショップテーマのレイアウト部分を触ることになりますので、作業にご不安の企業様はベンダーさまにご依頼ください。

  2. 一括での導入ができない(手作業で必要ページにタグを入れる)部分になりますので、
    ・トップページ
    ・商品一覧(商品グループ・バンドル商品・クーポン対象商品)
    ・商品検索結果一覧
    ・商品詳細
    ・ショッピングカートページ
    ・会員登録完了
    ・メールマガジン申込完了
    ・注文完了ページ 
    上記リストでチェックを行いながら実施をお願いします。

フリーパーツの設定

futureshop管理画面のメニュー:コマースクリエイター>パーツ>パーツを追加するをクリックします。

  • 会員情報連携 の利用に必要なタグ…注文完了ページ以外

  • 注文完了後のCV金額送信に必要なタグ…注文完了ページのみ

スクリーンショット 2024-11-18 174202.png

フリーパーツを選択

スクリーンショット 2024-11-18 182017.png

必要事項を記載して保存します。

image-20241226-085629.png

ログインユーザー用のタグと、未ログインユーザー用のタグ2種類作成する必要があります。

image-20241118-092343.png

以下は例となりますので、ご参考の上、フリーパーツを作成お願いいたします。

ログインユーザー用タグ

パーツ名…【ログイン】WhatYa会員連携あり

置き換え文字…{% parts[whatya_member] %}

内容…

<div class="member-info" data-member-id="{@ member.id @}" data-member-lastname="{@ member.last_name @}" data-member-firstname="{@ member.first_name @}" data-member-nickname="{@ member.nickname @}"></div>

未ログインユーザー用タグ

パーツ名…【未ログイン】WhatYa会員連携なし

置き換え文字…{% parts[whatya_not_member] %}

内容…

<div class="member-info"></div>

レイアウトパーツの設置

WhatYaを埋め込みたいページに、レイアウトパーツを設定します。
代表的な以下のページにこれから示す設定手順を行ってください。

  • トップページ

  • 商品一覧(商品グループ・バンドル商品・クーポン対象商品)

  • 商品検索結果一覧

  • 商品詳細

  • ショッピングカートページ

  • 会員登録完了

  • メールマガジン申込完了

  • 注文完了ページ ※コンバージョンタグ設置の詳細は下部に別途記載しています。

※PC/タブレットおよび、レスポンシブ/スマートフォンは別設定となりますので設置忘れにご注意ください。

スクリーンショット 2024-11-18 184748.png

WhatYaのタグを埋め込みたい、利用中のレイアウトの鉛筆マークをクリック

スクリーンショット 2024-11-18 192716.png

「レイアウトパーツを追加する」をクリック

スクリーンショット 2024-11-18 192852.png

レイアウトパーツ(会員連携あり)を設定します。

パーツ名…whatya_会員連携あり
HTML要素…div
id…空欄
class…fs-clientInfo

※詳しくはこちら(class名について)の記事および、こちら(レイアウトパーツの表示条件について)の記事をご確認ください。

スクリーンショット 2024-11-18 193013.png

続いて、レイアウトパーツ(会員連携なし)を設定します。

パーツ名…whatya_会員連携なし
HTML要素…なし
id…空欄
class…空欄

スクリーンショット 2024-11-18 193529.png

続いて、レイアウトパーツを開き、その内に1️⃣で作成したフリーパーツを設定します。

image-20241118-104710.png

【ログイン】WhatYa会員連携ありのフリーパーツをドラッグ・アンド・ドロップでレイアウトパーツ内に設置して保存します。
WhatYa会員連携なしのレイアウトパーツ内にも同様に、【未ログイン】WhatYa会員連携なしのフリーパーツを設置します。

スクリーンショット 2024-11-18 194829.png

最後に、表示条件を設定するを設定します。

image-20241118-105335.png

WhatYa会員連携ありの場合、以下の設定でOKを押します。

image-20241118-105654.png

WhatYa会員連携なしの場合、以下の設定でOKを押します。

image-20241118-105729.png

保存ボタンを押します。
同様の設定を表示するページ全てに設置をお願いいたします。

測定タグ側にWhatYa表示用のタグを埋め込む(注文完了ページ)

測定タグ>測定タグを追加するをクリックします。

image-20241226-093458.png

出力設定

<body>タグ内(</body>タグの内)に出力するを選択

image-20241226-093848.png

出力内容

以下埋め込みタグのサンプルです。
※以下の埋め込みタグはあくまでもサンプルとなりますので、変数やScriptのサポートは出来ませんのでご了承下さい。
※全ページに表示したい場合は、共通出力へ、特定のページに表示したい場合は、指定の項目へ以下のスクリプトを入力してください。

<script>
document.addEventListener("DOMContentLoaded", function () {
    let scriptLoaded = false;
    let retryCount = 0; // 再試行の回数
    const maxRetries = 10; // 最大再試行回数
    const retryInterval = 500; // 再試行間隔(ミリ秒)

    // スクリプトを読み込む関数
    function loadChatScript(attributes = {}) {
        if (scriptLoaded) {
            console.log("スクリプトはすでに読み込まれています");
            return;
        }

        const script = document.createElement("script");
        script.src = "https://whatya.solairo-api.com/sola3/chat.js";

        // 属性を動的に追加
        for (const [key, value] of Object.entries(attributes)) {
            script.setAttribute(key, value);
        }

        script.onload = function () {
            console.log("スクリプトが正常に読み込まれました");
        };

        script.onerror = function () {
            console.error("スクリプトの読み込みに失敗しました: " + script.src);
        };

        document.body.appendChild(script);
        scriptLoaded = true;

        console.log("スクリプトタグが追加されました:", script.outerHTML);
    }

    // 会員情報をチェックし、スクリプトをロードする
    function checkAndLoadScript() {
        const memberInfo = document.querySelector(".member-info");

        if (!memberInfo) {
            console.error(".member-info が見つかりません");
            return;
        }

        const memberId = memberInfo.getAttribute("data-member-id");
        const lastName = memberInfo.getAttribute("data-member-lastname");
        const firstName = memberInfo.getAttribute("data-member-firstname");
        const nickname = memberInfo.getAttribute("data-member-nickname");

        // テンプレート文字列が残っている場合は未置き換えと判定
        if (
            [memberId, lastName, firstName, nickname].some(value =>
                value && value.includes("{@")
            )
        ) {
            console.log("置き換えが未完了です。再試行を行います...");
            if (retryCount < maxRetries) {
                retryCount++;
                setTimeout(checkAndLoadScript, retryInterval);
            } else {
                console.warn("置き換えが完了しないため、未ログイン状態として扱います");
                loadChatScript(); // 未ログイン時のスクリプトを読み込み
            }
            return;
        }

        // `guest`, `null`(文字列)、または `null` の場合は未ログインと判定
        if (memberId === "guest" || memberId === "null" || memberId === null) {
            console.log("未ログインユーザーと判定。デフォルトスクリプトを読み込みます");
            loadChatScript();
            return;
        }

        // ログイン済みの場合のスクリプトを読み込み
        console.log("ログイン済みと判定。スクリプトを読み込みます");
        loadChatScript({
            "data-cs-id": memberId,
            "data-cs-secret": memberId,
            "data-cs-user_name": `${lastName} ${firstName}`,
            "data-cs-nickname": nickname,
        });
    }

    // MutationObserverで置き換えを監視
    const observer = new MutationObserver(() => {
        console.log("DOM変更を検出しました");
        checkAndLoadScript();
        observer.disconnect(); // 1回のみ実行
    });

    observer.observe(document.body, {
        childList: true,
        subtree: true,
    });

    // 初期チェック
    checkAndLoadScript();
});
</script>

測定タグ側にコンバージョンタグの設置(注文完了ページ)

プロモーション管理>測定タグ一覧>測定タグを追加する

測定タグ注文完了ページに、以下の設定を行ってください。

image-20240731-095700.png

出力設定

<body>タグ内(<body>タグの後)に出力するを選択

出力内容

以下埋め込みタグのサンプルです。
※以下の埋め込みタグはあくまでもサンプルとなりますので、変数やScriptのサポートは出来ませんのでご了承下さい。

<script>
window.onWhatYaReady = (whatya) => {
  whatya.purchase({ price: {% analytics.purchase_price_with_options_including_tax %}, user_id: '{@ member.id @}' });
}
</script>

設定は以上となります。

  • ラベルがありません