自社サイトの購入完了ページから自動応答を発火させる(postback タグ)
自社サイトや外部のショッピングカートで購入が完了したときに、そのお客様の LINE 側で自動応答を発火させられます。既存のカートをそのまま使いながら、購入をきっかけにサンクスメッセージの配信、ラベル付与、配信グループの切り替え、広告のコンバージョン戻しまで自動で動かせます。
決済そのものは連動しません
このタグで送られるのは「発火キーワード」だけです。購入金額・商品明細・注文番号はサブスクラインへは渡りません。購買明細をサブスクライン側のデータとして持たせたい場合は、商品管理で購入導線をサブスクライン側に置いてください。
全体の流れ
1. 発火用トークンを発行する
場所: 管理画面サイドバー「設定」>「AI/MCP連携」
ROOT 権限のアカウントで操作してください
このタブは ROOT 権限のアカウントにのみ表示されます。ADMIN やスタッフのアカウントではタブ自体が表示されず、接続の作成もできません。タブが見つからない場合は設定の不具合ではなく権限不足です。
「接続を作成」で、スコープに postback を選んで接続を作成します。トークンは作成直後に一度だけ表示されるので控えてください。発行手順の画面は MCPコネクター と同じです。
許可オリジンを指定してください
タグは HTML に書くため、トークンはページを見た人に見えます。作成時の「許可オリジン(任意・カンマ区切り)」へ設置サイトのオリジン(例: https://example.com)を入れると、そのオリジンからの発火だけが許可され、ブラウザで他サイトへ転載されても使えなくなります。
ただし、ブラウザ以外(コマンドラインのツールなど)からは送信元を偽装できるため、これは「ブラウザからの転載を抑止する」までの効果です(reCAPTCHA のドメイン制限と同じ考え方)。確実に守りたい連携は、タグではなくサーバー間の呼び出しにし、許可オリジンを空にした秘匿トークンをサーバー側だけで保管してください。
postback は発火専用のスコープです。会員情報を読み書きする read / write と同じ接続にはできません。漏えい時に発火用トークンだけを無効化・再発行できるよう、外部サイト設置用は必ず単独の接続にしてください。
2. お客様を識別できるようにする
タグは「どの LINE 公式アカウントの、どのお客様か」が分からないと発火しません。次の 2 つの値を購入完了ページで使える状態にします。
| パラメータ | 内容 |
|---|---|
lcid | LINE 公式アカウントの識別子。アカウントごとに固定値です。お客様へそのリンクを配信したアカウントの値を使います(取得方法は下記) |
luid | お客様の識別子。配信や自動応答のメッセージ本文に書いたリンクでは、差し込み変数 {line_user.hashId} がお客様ごとの値に置き換わります |
lcid は、管理画面サイドバー「LINE」>「LINE公式アカウント」の一覧で対象アカウントの「編集」を開き、そのときのアドレスバーの …/line-account/ と /edit にはさまれた文字列を使います。
複数の LINE 公式アカウントを運用している場合
LIFF アプリ一覧のトラッキング用 LIFF URL に含まれる lineConfigId は、既定のアカウントのものが表示されます。お客様が既定以外のアカウントから来ている場合にこの値をそのまま使うと、別のアカウントを対象に判定・送信され、返信が届かないことがあります。必ず、そのお客様へメッセージを配信したアカウントの lcid を使ってください。
LINE から自社サイトへ送るリンクを、次の形にします。
https://example.com/lp?lcid=xZy7mZKLr9EcrEfabGgD&luid={line_user.hashId}リッチメニューのリンクでは置き換わりません
差し込み変数が使えるのはメッセージ本文です。リッチメニューは全員に同じ画像とリンクを配信するしくみのため、リンクにお客様ごとの luid を入れられません。リッチメニューから自社サイトへ送る場合は、いったん自動応答のメッセージを返し、そのメッセージ内のリンクから遷移させてください。
購入完了ページで lcid / luid を使えるようにする方法は 2 つです。
ページの URL にパラメータが付いているだけでは発火しません
postback タグが識別子を読むのは、タグ自身の src に書かれた値か、query-getter タグが保存した値のどちらかだけです。購入完了ページのアドレスに ?lcid=…&luid=… が付いていても、タグはそれを読みません。下記のどちらかを必ず行ってください。
方法A: query-getter タグで保存する
lcid / luid が URL に付いているページへ、次のタグを設置します。読み込んだ時点でその URL のパラメータを保存し、あとから読み込まれる postback タグがその値を使います。着地ページと購入完了ページのどちらに付いていても構いませんが、同じページに置く場合は postback タグより前に書いてください。
<script src="https://cdn.subscline.jp/sdk/query-getter/v1/latest.js?type=setter"></script>方法B: カート側のサーバーでタグに直接書き出す
購入完了ページを生成する時点で値が分かっているなら、手順4のとおり postback タグの src へ lcid / luid を直接出力します。保存値に依存しないため、着地ページと購入完了ページのドメインが違う場合はこちらが必要です。
query-getter タグは、パラメータが付いているページにだけ設置してください
このタグは読み込むたびに、保存済みの値をそのページの URL パラメータで上書きします。lcid / luid が付いていないページ(サイト全体の共通テンプレートなど)に設置すると、保存済みの値が消えて発火しなくなります。
保存値を共有できるのは「スキーム・ホスト名・ポートが完全に一致する」ページ同士だけです
保存先はこの3つの組み合わせごとに分かれています。次はいずれも別扱いになり、着地ページで保存した値を購入完了ページから読めません。
https://www.example.comとhttps://shop.example.com(サブドメインが違う)https://example.comとhttp://example.com(スキームが違う)https://example.comとhttps://example.com:8443(ポートが違う)https://example.comとhttps://cart.example.net(別ドメインの外部カート)
外部カートを使う構成や、カートだけ別サブドメインの構成では、次の手順4のとおりカート側のサーバーで lcid / luid をタグへ直接出力してください。
3. 発火させる自動応答を作る
自動応答を新規作成し、きっかけ(イベント)を 「ポストバック」 にして、マッチタイプとキーワード(例: ec_purchase_complete)を設定します。ここで設定したキーワードを、次の手順でタグに書きます。
この自動応答にラベル付与・ラベルスコア増減・クーポン付与を設定しておくと、購入と同時に実行されます。付与したラベルをユーザーグループの条件にすれば、配信やリッチメニューの出し分けにそのまま使えます。広告媒体へコンバージョンを戻す場合は、同じ自動応答にポストバック設定を追加します。
4. 購入完了ページにタグを設置する
購入完了ページ(サンキューページ)に次のタグを貼ります。keyword は手順 3 で設定したキーワード、data-token は手順 1 のトークンです。
<script
src="https://cdn.subscline.jp/sdk/postback/v1/latest.js?keyword=ec_purchase_complete"
data-token="subscline_xxxxxxxxxxxx"
></script>lcid / luid をサーバー側で出力できる場合は、保存値に頼らずタグへ直接書けます。
<script
src="https://cdn.subscline.jp/sdk/postback/v1/latest.js?lcid=xZy7mZKLr9EcrEfabGgD&luid=3IWALNrcArd1DAOMCxmU&keyword=ec_purchase_complete"
data-token="subscline_xxxxxxxxxxxx"
></script>トークンは data-token 属性に書いてください
src のクエリにトークンを書いても読み取られません(送信時に認証が付かず失敗します)。あわせて、URL に書いたトークンは CDN や中間サーバーのアクセスログに残ります。必ず data-token 属性で渡してください。
タグはページの HTML に直接書いてください
タグマネージャーなどを使って JavaScript から動的に読み込ませると、タグが自分自身の設定(src のパラメータと data-token)を読み取れず、エラーも出さずに何も起きない場合があります。type="module" も同様です。購入完了ページの HTML へそのまま貼り付けてください。
キーワードは半角英数字とアンダースコア(例: ec_purchase_complete)で設定してください。日本語のキーワードは変換されずに送信され、自動応答側と一致しません。
タグが読み込まれた時点で 1 回送信されます。同じ送信を止めるしくみはないため、お客様が購入完了ページを再読み込みすると、そのたびに発火します。
繰り返しを減らしたい場合は、初回の発火でラベルを付与し、そのラベルを持たない人だけを条件にしたユーザーグループを、自動応答の配信グループに指定します。ただしラベルの付与は返信の送信が終わってから行われるため、ほぼ同時に 2 回届いた場合は両方とも配信されます(時間をおいた再読み込みは抑えられます)。1 回だけであることが会計上重要な処理(ポイント付与・クーポン発行など)は、この方法だけに頼らないでください。
なお、送信したキーワードは、そのお客様のトーク履歴にテキストとして記録されます。管理画面のチャット画面に表示されるため、お客様に見せても差し支えない文字列にしてください。
5. 動作を確認する
- テスト用の LINE ユーザーで、手順 2 のリンクから自社サイトへ入る
- テスト購入を行い、購入完了ページを表示する
- LINE に自動応答が届くことを確認する
- ポストバックログで、広告媒体への成果通知まで設定している場合はその送信結果を確認する
発火しないときは次を確認してください。
| 症状 | 確認すること |
|---|---|
| 何も起きない(通信もしない) | lcid / luid がページで取得できているか。どちらかが無い場合、タグはリクエストを送らずに終了します。タグを動的に読み込ませていないか(HTML へ直接書く) |
401 が返る | data-token のトークンが正しいか、無効化していないか。src のクエリに書いていないか |
403 が返る | トークンのスコープに postback があるか、許可オリジンに設置サイトのオリジンが入っているか、そのトークンと lcid / luid が同じテナントか |
| 自動応答が動かない | 自動応答のきっかけが「ポストバック」になっているか、キーワードとマッチタイプが一致しているか、自動応答が有効か、配信グループの対象に入っているか |
| 一部のお客様だけ動かない | そのお客様が LINE 経由で自社サイトへ入っているか。LINE を経由したことがないブラウザには luid が無いため発火しません |
| 別のお客様として発火した | 着地ページで保存した値は期限なしで残ります。共用端末では前の利用者の値が使われることがあります(手順4のサーバー側出力に切り替えてください) |
注意点
- 送信できるのはキーワードだけです。金額・商品名・数量・注文番号は送れません。
- LINE を経由したことがないブラウザ(自然検索・他媒体からの直接流入だけ)は識別子を持たないため、発火対象になりません。
- 一方で、着地ページで保存した識別子は期限なしでブラウザに残ります。過去に一度 LINE 経由で来たブラウザなら、その後は検索から直接入って購入しても、保存済みの値で発火します。共用端末では前の利用者に対して発火することがあるため、購入者を確実に一致させたい場合は手順4のサーバー側出力を使ってください。
- 着地ページで保存した値を使う構成では、別の端末・ブラウザで購入した場合や、購入完了ページのスキーム・ホスト名・ポートのいずれかが着地ページと違う場合は発火しません(サブドメイン違いも別扱いです)。外部カートを使う場合は
lcid/luidをタグへ直接出力してください。 - 自社サイトの購入完了ページに設置する前に、テスト用の LINE ユーザーで必ず確認してください。実在のお客様を接続試験に使用しないでください。
- 友だち追加そのものを自社サイトから計測したい場合は、トラッキング用 LIFF URLとポップアップを使います。