← 全記事
比較

TikTok Shop room_id とLIVE注文:アトリビューションとは別にインバウンドキューが必要な理由

TikTok ShopでLIVE販売をしているチームなら、この流れをよく知っているはずです。配信中に商品を紹介し、コメントや購入前のDMが同時に入り、注文は少し後でSeller Centerや注文同期ツールに現れる。足りないのは注文そのものではなく、「どのLIVEがこの注文を生んだのか」と「購入前に顧客は何を聞いていたのか」をつなぐ文脈です。

だからこそ、2026年7月8日のTikTok Shop Partner Center更新は注目に値します。公式changelogでは、TikTok Shopが一部のOrder APIレスポンスにroom_idを追加し、注文行が作成されたLIVE sessionを識別できるようにすると説明されています。LIVEコマースを運営するセラーにとって、これは実用的なアトリビューションデータです。CRMやBIツールは、すべてのLIVE売上を一般的なShop注文として扱うのではなく、注文行を特定の配信に結び付けられます。

ただし、room_idはあくまで注文メタデータです。リアルタイムのカスタマーサポートフィードではなく、DM webhookでもなく、購入を迷っている顧客が最初に送ったメッセージでもありません。この更新を「TikTokのメッセージ問題が解決した」と解釈すると、アーキテクチャは引き続きリアルタイム受信の問題を取りこぼします。

room_id が解決すること

この更新が答えるのは、明確なコマース上の問いです。どのLIVEルームがこの注文行を生んだのか。これは次の仕事に役立ちます。

ワークフローroom_id が役立つことできないこと
LIVE成績レポート注文行を特定の配信に帰属させる配信中の購入前質問を捕捉する
クリエイター報酬売上をLIVE sessionに紐づけるDMをサポートにルーティングする
在庫計画どの配信がどのSKUを動かしたかを見る在庫質問を受けた瞬間に担当者へ通知する
配信後の分析配信ごとの転換率を比較する購入前の会話を保存する

この線引きは重要です。LIVEコマースは注文ワークフローであると同時に、会話ワークフローでもあります。注文ワークフローはアトリビューション、SKU、売上、配送状態を扱います。会話ワークフローは、すべてのインバウンドメッセージを素早く受け取り、検証し、保存し、担当者やAIに回すことを扱います。

TikTok Shopには公式のカスタマーサービス機能もあります。Customer Service API overviewはTikTok Shopの購入者メッセージをサードパーティのサポートシステムへ転送する機能を説明し、TikTok Seller CenterのCustomer Messages guideも購入者メッセージを専用のサポートワークベンチとして扱っています。これらはShop購入者サポートにとって重要な公式ルートです。しかしOrder APIのアトリビューションとは別の面であり、注文メタデータを汎用のマルチチャネル受信箱に変えるものではありません。

間違った設計:注文をサポートの事実ソースにする

小さなチームは、直近で更新されたAPIを中心に最初の連携を組みがちです。今回の更新後、自然に見える設計はこうなります。

TikTok Shop order sync
  -> order line の room_id を読む
  -> LIVE session を推定する
  -> 関連しそうな顧客質問を探す
  -> サポートに通知する

これは分析には使えますが、インバウンド経路としては脆弱です。注文が存在した後から始まるため、購入に至らなかった事前質問を取りこぼします。顧客がTikTokで質問し、あとでWhatsAppで追記し、最後にLINEでスクリーンショットを送るような現実の流れも表現できません。さらに、サポートをコマースオブジェクトの後ろに置いてしまいます。本来のサポートの仕事は、まず顧客メッセージを保存し、その後に下流システムが意味を判断することです。

LIVEコマースでは、より安全な境界は単純です。注文は商業的な結果を表し、メッセージは顧客のニーズを表します。両方を保存する。ただし、片方をもう片方の代わりにしない。

よい分離:アトリビューションと受信を並べる

room_idは注文タイムラインの補助フィールドとして扱い、インバウンドメッセージは署名付きキューに入るイベントとして扱います。2つの記録は後でCRM、倉庫ダッシュボード、AIトリアージ層で合流できます。

Order path
  TikTok Shop Order API
    -> room_id 付き注文行
    -> 売上、SKU、配送、LIVEアトリビューション

Message path
  TikTok / WhatsApp / LINE / Zalo / Telegram / X account
    -> UnifyPort message.received webhook
    -> signature verification
    -> event store
    -> routing, CRM lookup, agent queue, or AI triage

この分離により、最初の顧客記録はOrder APIに依存しません。顧客が「このLIVEの青いセットはまだありますか」と聞いたら、サポートシステムはそれをメッセージイベントとして受け取ります。顧客が後で購入すれば、注文行のroom_idが商業的な結果を同じ顧客タイムラインへ紐づけます。

UnifyPort の位置づけ

UnifyPortの役割は、通常のメッセージアカウントからインバウンドメッセージを非公式インターフェースで受け取り、統一されたwebhookイベントストリームとして届けることです。同じhandlerでTikTok、WhatsApp、LINE、Zalo、Telegram、Xのメッセージを受け取れます。単一プラットフォームのコマース更新を中心に構築するのとは、ここが違います。日本のチームではLINEが主要チャネルになることも多いため、この統一性は特に重要です。

まずwebhook endpointを作成し、message.receivedを購読します。

curl -X POST https://api.unifyport.ai/v1/webhook-endpoints \
  -H "X-Api-Key: <YOUR_API_KEY>" \
  -H "Content-Type: application/json" \
  -d '{
  "url": "https://support.example.com/webhook",
  "subscribed_events": ["message.received"],
  "signing_secret": "<WEBHOOK_SIGNING_SECRET>"
}'

TikTokの購入者メッセージが届くと、受信側は他チャネルと同じエンベロープを受け取ります。

{
  "id": "evt_20260712_tiktok_001",
  "type": "message.received",
  "provider": "tiktok",
  "account_id": "acc_tiktok_live_shop",
  "occurred_at": "2026-07-12T02:18:44Z",
  "data": {
    "conversation": {
      "id": "tt_conv_live_8341",
      "type": "user",
      "title": "Mai Nguyen"
    },
    "sender": {
      "id": "tt_user_49281",
      "type": "user",
      "name": "Mai Nguyen"
    },
    "message": {
      "id": "tt_msg_20260712_001",
      "type": "text",
      "text": "Is the blue bundle still available from the live?",
      "direction": "inbound",
      "sent_at": "2026-07-12T02:18:42Z"
    }
  }
}

endpointにsigning_secretが設定されている場合、配信にはX-Device-TimestampX-Device-Signatureが含まれます。署名は<X-Device-Timestamp>.<raw request body>に対する16進HMAC-SHA256です。イベントを解析してルーティングする前に、まず署名を検証してください。その後、event IDで保存すればリトライを重複排除できます。

返信経路は別にしておきます。サポートフローが返信を決めたときに、接続済みアカウントと宛先を指定してPOST /v1/messagesを使います。これで受信、アトリビューション、返信が1本の大きな依存チェーンになるのを避けられます。

7月に組むべき流れ

TikTok Shopのroom_id更新はレポート改善に使い、サポート入口の作り直しには使わないでください。

  1. Order APIデータを同期し、対象の注文行にroom_idを保存する。
  2. UnifyPort webhookを登録し、subscribed_events: ["message.received"]を設定する。
  3. X-Device-Signatureを検証してからインバウンドイベントを保存する。
  4. idprovideraccount_id、conversation、sender、timestampで各メッセージを保存する。
  5. 後で顧客、時間帯、SKU、campaign、LIVE sessionに基づいてメッセージと注文を結合する。
  6. 返信はPOST /v1/messagesで明示的に行い、注文同期ジョブの中に隠さない。

TikTok ShopだけでなくLINEやWhatsAppも使うチームでは、この分離が効きます。LIVE注文はどの配信が売れたかを示します。LINEのフォローアップは、顧客が何に迷ったかを示すかもしれません。統一インバウンドキューがあれば、それらをTikTokの注文モデルに押し込まず、同じ顧客タイムラインに並べられます。

実務上の結論

TikTok Shopが一部のOrder APIレスポンスにroom_idを追加するのは、良いコマース更新です。LIVEアトリビューションを明確にし、どの配信が売上を動かしたかを説明しやすくします。

しかし、メッセージ受信レイヤーは不要になりません。注文アトリビューションは「この売上はどこから来たか」に答えます。インバウンドメッセージは「顧客は何を聞き、いつ受け取り、誰が対応すべきか」に答えます。

両方を作るべきです。room_idは注文分析へ。message.receivedは署名付きインバウンドキューへ。両方を取得した後でサポートシステムが結合する。1つのAPI更新に、2つの異なる仕事を背負わせないことが実務的な設計です。