Skip to content

自社サイトの購入完了ページから自動応答を発火させる(postback タグ) ​

自社サイトや外部のショッピングカートで購入が完了したときに、そのお客様の LINE 側で自動応答を発火させられます。既存のカートをそのまま使いながら、購入をきっかけにサンクスメッセージの配信、ラベル付与、配信グループの切り替え、広告のコンバージョン戻しまで自動で動かせます。

外部の予約システムで予約が完了したときも同じしくみです。このページの「購入完了ページ」を「予約完了ページ」と読み替えてお読みください。

決済そのものは連動しません

このタグで送られるのは「発火キーワード」だけです。購入金額・商品明細・注文番号はサブスクラインへは渡りません。購買明細をサブスクライン側のデータとして持たせたい場合は、商品管理で購入導線をサブスクライン側に置いてください。

全体の流れ ​

1. 発火用トークンを発行する ​

場所: 管理画面サイドバー「設定」>「AI/MCP連携」

ROOT 権限のアカウントで操作してください

このタブは ROOT 権限のアカウントにのみ表示されます。ADMIN やスタッフのアカウントではタブ自体が表示されず、接続の作成もできません。タブが見つからない場合は設定の不具合ではなく権限不足です。

「接続を作成」で、スコープに postback を選んで接続を作成します。トークンは作成直後に一度だけ表示されるので控えてください。発行手順の画面は MCPコネクター と同じです。

許可オリジンを指定してください

タグは HTML に書くため、トークンはページを見た人に見えます。作成時の「許可オリジン(任意・カンマ区切り)」へ設置サイトのオリジン(例: https://example.com)を入れると、そのオリジンからの発火だけが許可され、ブラウザで他サイトへ転載されても使えなくなります。

ただし、ブラウザ以外(コマンドラインのツールなど)からは送信元を偽装できるため、これは「ブラウザからの転載を抑止する」までの効果です(reCAPTCHA のドメイン制限と同じ考え方)。確実に守りたい連携は、タグではなくサーバー間の呼び出しにし、許可オリジンを空にした秘匿トークンをサーバー側だけで保管してください。

postback は発火専用のスコープです。会員情報を読み書きする read / write と同じ接続にはできません。漏えい時に発火用トークンだけを無効化・再発行できるよう、外部サイト設置用は必ず単独の接続にしてください。

2. お客様を識別できるようにする ​

タグは「どの LINE 公式アカウントの、どのお客様か」が分からないと発火しません。次の 2 つの値を購入完了ページで使える状態にします。

パラメータ内容
lcidLINE 公式アカウントの識別子。アカウントごとに固定値です。お客様へそのリンクを配信したアカウントの値を使います(取得方法は下記)
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 タグより前に書いてください。

html
<script src="https://cdn.subscline.jp/sdk/query-getter/v1/latest.js?type=setter"></script>

外部予約タグでプロフィール値を渡す場合

query-getter の予約完了タグへ氏名・メールアドレスなどを付ける場合、値は URL 用に 1 回だけエンコードしてください。タグ側で1回デコードしてプロフィールへ反映するため、%・+・= を含む値もそのまま保持されます。壊れた percent encoding が含まれる項目は、誤った文字列でプロフィールを上書きせず、その項目だけ更新しません。

方法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 のトークンです。

html
<script
  src="https://cdn.subscline.jp/sdk/postback/v1/latest.js?keyword=ec_purchase_complete"
  data-token="subscline_xxxxxxxxxxxx"
></script>

lcid / luid をサーバー側で出力できる場合は、保存値に頼らずタグへ直接書けます。

html
<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 属性で渡してください。

type="module" でも読み込めるようになりました

タグは自分自身の <script> から設定(src のパラメータと data-token)を読み取ります。type="module" を付けた場合はその読み取りができず、以前はエラーも出さずに何も起きませんでした。現在は、読み込まれたあとにページ内から自分の <script> を探して動作します。なお、タグマネージャーなどから動的に挿入する形(type="module" を付けない通常の読み込み)は、以前から動作します。

type="module" で読み込む場合は、1 ページに postback タグを 1 枚だけ置いてください。同じページに 2 枚以上あると、どれが自分のタグか判別できないため、送信せずにブラウザの開発者ツールのコンソールへ警告を出して終了します(別のタグの lcid / luid / keyword / data-token で誤って発火させないための動作です)。複数のタグをどうしても同じページに置きたい場合は、type="module" を付けない通常の読み込みにしてください。

キーワードは半角英数字とアンダースコア(例: ec_purchase_complete)で設定してください。日本語のキーワードは変換されずに送信され、自動応答側と一致しません。

同じ発火を 1 回に抑える(event_id) ​

タグは読み込まれるたびに送信するため、そのままではお客様が購入完了ページを再読み込みしたり「戻る」で開き直したりするたびに発火します。広告媒体への成果通知まで設定している場合、コンバージョンがその回数分だけ二重に計上されます。

タグの event_id に、その 1 件で一意な値(注文番号・予約番号)を渡すと、同じ値での 2 回目以降は無視されます(判定は 7 日間保持)。

html
<script
  src="https://cdn.subscline.jp/sdk/postback/v1/latest.js?keyword=ec_purchase_complete&event_id=ORDER-20260906-0012"
  data-token="subscline_xxxxxxxxxxxx"
></script>
  • 値はカート・予約システム側が発行する番号をそのまま出力してください(毎回変わる値・固定値のどちらもこの目的には使えません)。テンプレートが展開されず のような固定文字列のまま出力されると、2 件目以降のお客様の発火が消えます。
  • 190 文字までです。超えると発火しません。
  • 判定はキーワードごとに分かれます。同じ注文番号でも、別のキーワードでの発火は止まりません。
  • event_id を渡さない設置は従来どおり、読み込みのたびに発火します。

event_id を出力できない場合は、初回の発火でラベルを付与し、そのラベルを持たない人だけを条件にしたユーザーグループを自動応答の配信グループに指定する方法もあります。ただしラベルの付与は返信の送信が終わってから行われるため、ほぼ同時に 2 回届いた場合は両方とも配信されます(時間をおいた再読み込みは抑えられます)。1 回だけであることが会計上重要な処理(ポイント付与・クーポン発行など)は、この方法だけに頼らないでください。

なお、送信したキーワードは、そのお客様のトーク履歴にテキストとして記録されます。管理画面のチャット画面に表示されるため、お客様に見せても差し支えない文字列にしてください。

5. 動作を確認する ​

  1. テスト用の LINE ユーザーで、手順 2 のリンクから自社サイトへ入る
  2. テスト購入を行い、購入完了ページを表示する
  3. LINE に自動応答が届くことを確認する
  4. ポストバックログで、広告媒体への成果通知まで設定している場合はその送信結果を確認する

発火しないときは次を確認してください。

症状確認すること
何も起きない(通信もしない)lcid / luid がページで取得できているか。どちらかが無い場合、タグはリクエストを送らずに終了します。同じページに postback タグを 2 つ以上置いていないか
401 が返るdata-token のトークンが正しいか、無効化していないか。src のクエリに書いていないか
403 が返るトークンのスコープに postback があるか、許可オリジンに設置サイトのオリジンが入っているか、そのトークンと lcid / luid が同じテナントか
自動応答が動かない自動応答のきっかけが「ポストバック」になっているか、キーワードとマッチタイプが一致しているか、自動応答が有効か、配信グループの対象に入っているか
一部のお客様だけ動かないそのお客様が LINE 経由で自社サイトへ入っているか。LINE を経由したことがないブラウザには luid が無いため発火しません
2 回目以降が発火しないevent_id に毎回同じ値を出力していないか(1 件ごとに変わる番号を渡してください)
別のお客様として発火した着地ページで保存した値は期限なしで残ります。共用端末では前の利用者の値が使われることがあります(手順4のサーバー側出力に切り替えてください)

6. タグを使わずサーバー間で発火する ​

予約システム・カートに「完了時に任意の URL へ通知を送る」機能(Webhook 送信)がある場合や、タグを設置できない場合は、そちら側のサーバーから直接呼び出せます。ブラウザを経由しないため、lcid / luid の受け渡しやページ再読み込みの影響を受けません。

トークンは手順 1 と同じ postback スコープの接続トークンを使いますが、サーバー間で使うトークンは「許可オリジン」を空のまま発行してください(Origin ヘッダーを送らない呼び出しになるため)。この場合トークンそのものが秘密情報なので、呼び出し元のサーバーにだけ保管し、HTML には載せないでください。

項目内容
メソッド・URLPOST https://api.subscline.jp/api/v1/line/postback/{lcid}/{luid}
認証Authorization: Bearer subscline_xxxxxxxxxxxx
ヘッダーContent-Type: application/json
ボディkeyword(発火させるキーワード)、eventId(重複送信の抑止キー・任意)
bash
curl --request POST \
  --url 'https://api.subscline.jp/api/v1/line/postback/xZy7mZKLr9EcrEfabGgD/3IWALNrcArd1DAOMCxmU' \
  --header 'Authorization: Bearer subscline_xxxxxxxxxxxx' \
  --header 'Content-Type: application/json' \
  --data '{ "keyword": "ec_purchase_complete", "eventId": "ORDER-20260906-0012" }'
  • {lcid} は手順 2 の LINE 公式アカウントの識別子、{luid} はお客様の識別子です。どちらもお客様を LINE から誘導した時点で受け取り、注文・予約に紐づけて保存しておく必要があります(サーバー間の呼び出しでは、その場でブラウザから取得できません)。
  • eventId は重複送信の抑止キーです。リトライで同じ値を送っても、発火は 1 回だけになります(7 日間保持・キーワードごとの判定)。発火に失敗して 500 が返った場合は抑止されないので、そのままリトライしてください。
  • 応答は 200。{ "ok": true, "duplicated": true } が返った場合は、同じ eventId で既に発火済みのため無視されたことを示します。

エラー時の応答は次のとおりです。

コード意味
400eventId が 190 文字を超えているなど、ボディの形式が不正
401トークンが無い・無効・失効している
403トークンに postback スコープが無い、許可オリジンの指定と一致しない、またはトークンのクライアントと {lcid} / {luid} の所属が違う
404{lcid} / {luid} が存在しない

注意点 ​

  • 送信できるのはキーワードだけです。金額・商品名・数量・注文番号は送れません。
  • LINE を経由したことがないブラウザ(自然検索・他媒体からの直接流入だけ)は識別子を持たないため、発火対象になりません。
  • 一方で、着地ページで保存した識別子は期限なしでブラウザに残ります。過去に一度 LINE 経由で来たブラウザなら、その後は検索から直接入って購入しても、保存済みの値で発火します。共用端末では前の利用者に対して発火することがあるため、購入者を確実に一致させたい場合は手順4のサーバー側出力を使ってください。
  • 着地ページで保存した値を使う構成では、別の端末・ブラウザで購入した場合や、購入完了ページのスキーム・ホスト名・ポートのいずれかが着地ページと違う場合は発火しません(サブドメイン違いも別扱いです)。外部カートを使う場合は lcid / luid をタグへ直接出力してください。
  • 自社サイトの購入完了ページに設置する前に、テスト用の LINE ユーザーで必ず確認してください。実在のお客様を接続試験に使用しないでください。
  • 友だち追加そのものを自社サイトから計測したい場合は、トラッキング用 LIFF URLとポップアップを使います。

サブスクラインの使い方をAIに聞く

ページのタイトル・URL・公式マニュアルの参照先を入れた質問文が自動で入ります。

顧客情報、個人情報、社外秘の情報は入力しないでください。質問内容は選んだ外部AIへ送られます。

いずれも新しいタブで開きます。Geminiだけは質問文を渡せないため、コピーした内容を貼り付けて送信してください。