Social Stream NinjaでのShopify
画像、価格、読みやすいリンク、QRコードで公開商品を紹介します。署名付きの支払い済み注文通知を、次のアラートとして受信します: 購入 。アクティビティフィード、multi-alerts、Event Flowに表示できます。商品紹介は支払いアラートとは独立して動作します。
購入を接続 · 商品を取り込む · OBSオーバーレイ · 安全にテストする · 制限とトラブルシューティング
利用条件: 自動アラートを利用するには、SSN APIでShopify受信エンドポイントをデプロイし、有効にする必要があります。利用できない場合、「Save setup」はエラーを表示し、Shopifyを有効にしません。公開商品の取り込みと手動の紹介はそれぞれ独立して動作します。このガイドは連携コードについて説明しています。実サービスでの検証済みとするには、実際の販売者ストアでのテストがまだ必要です。
支払い済み購入を接続
- Shopifyで次を開きます: 設定 → 通知 → Webhook(Settings → Notifications → Webhooks)。手動作成Webhook用に表示される署名シークレットを確認してください。Storefrontトークンとは異なります。
- SSNで次を開きます: 収益化(Monetization)→ Shopify purchases → Setup。永続的なストアドメインを入力します:
your-store.myshopify.comのドメインとWebhook署名シークレットを入力します。Shopify purchasesを有効にして、次をクリックします: 設定を保存(Save setup). - クリックする項目: 受信URLをコピー(Copy receiver URL)。Shopifyで、次のイベントのWebhookを作成します: 注文の支払い(Order payment)、形式は JSONと、その受信URLを指定します。サポート対象の安定版Webhook APIバージョンを選択してください。この連携は2026-07の注文仕様に基づいて開発されています。
- Shopify Webhookを保存してください。購入を処理する間はSSNをオンにしておきます。受信エンドポイントは、生のリクエスト本文のHMACとストアの一致を検証してから注文データを受け付けます。

署名シークレットはSSNの受信エンドポイントで暗号化され、保存後に入力欄から消去されます。別の非公開読み取りキーはこの端末に保存されます。どちらもOBSリンクや視聴者用QRコードには含まれません。Shopifyは専用の受信エンドポイントを使用するため、従来のリモートAPI制御スイッチは不要です。
URLが生成されたという表示は、設定が保存されたことを意味し、Shopifyからの配信を確認したわけではありません。ステータスでは、待機中、検証済みテスト、スキップしたイベント、受信した購入を区別します。ストアを変更するには先に切断してください。Shopifyをオフにするとローカル処理が一時停止し、切断すると受信エンドポイントと待機中のイベントが削除されます。切断時には対応するShopify Webhookも削除してください。
公開商品を取り込む
- 次の情報を入力します:
myshopify.comのドメインをShopify設定に入力します。商品の取り込みには、購入アラートの有効化や署名シークレットの入力は不要です。 - 展開する項目: 商品をインポートで、公開商品URLを貼り付け、次をクリックします: 商品情報を読み込む(Load product details).
- トークンなしで商品にアクセスできない場合は、次を指定してください: 公開Storefrontトークン。ShopifyのHeadlessチャネルで作成できます。商品をそのストアフロントとオンラインストアで公開してください。Admin APIトークンや非公開Storefrontトークンを貼り付けないでください。
- SSNは既存の次のエディタを開きます: 商品とサポートのリンク(Products & support links) 。Shopifyが返したタイトル、画像、価格、正規の公開リンクが入力されます。内容を確認して次をクリックします: 商品またはリンクを追加(Add product or link)で、カタログと次の項目を有効にします: 設定を保存(Save setup).

Storefront APIを使い、商品を1件ずつ取り込みます。トークンは任意で、そのリクエストにのみ使用し、完了後に消去します。公開リンクにはShopifyの正規のオンラインストアURLを使用し、Shopifyが返す場合は独自ドメインも反映します。利用できない商品や公開オンラインストアリンクがない商品は除外されます。
価格は、商品のバリエーションの最低価格と最高価格が一致する場合のみ入力されます。それ以外は空欄になるため、販売内容を正確に表す場合に限り、自分で価格を指定してください。取り込んだ情報はその時点のコピーであり、在庫や価格を継続的に同期するものではありません。ストアを変更したら内容を確認してください。手動の商品登録もいつでも利用できます。
Shopify Storefront認証 · 商品クエリ(Product query) · Headlessで公開トークンを作成する
既存のオーバーレイを使用する
次のセクションで: 対象のオーバーレイリンク:で、次を選択します: 商品とサポートのリンク(Products & support links)。使う項目: 商品紹介のみ で画像、価格、QRコードを表示し、 支援カードのみ を使用すると、小さなショップリンクを常時または定期的に表示できます。また、 アクティビティ通知のみ で購入を表示します。必要なOBSリンクをそれぞれ別のブラウザソースへコピーし、まず800 × 600で設定してください。
任意のアラートソースフィルターを次に設定します: shopify 。汎用収益化オーバーレイにShopifyのアクティビティのみを表示します。この汎用表示にはProducts & support linksを有効にしてください。既存のmulti-alertsとアクティビティフィードは、商品カタログとは独立してShopify購入を受信します。

商品カードは公開商品ページにリンクします。次を使用すると、 公開リンクをコピー クリックできるアドレスをチャットに共有できます。QRコードは最終的な配信サイズでスマートフォンからテストしてください。購入アラートに、無関係なローテーション商品のQRコードや画像が流用されることはありません。注文Webhookには信頼できる商品画像URLが含まれないため、購入アラートはテキストを使用します。取り込んだ紹介カードには画像を表示できます。
Event Flowでは、イベントタイプに次を選択します: purchase 。ソース/タイプのフィルターを次に設定します: shopify。比較する値: meta.commerce.orderTotal を注文金額のルールに使用し、次を確認してください: meta.commerce.currency を確認してから金額を比較してください。これは購入なので、次のイベントは hasDonation または donoValue 送信されず、寄付目標の金額も増加しません。Giftというラベルの紹介カードを使用しても、注文イベントの分類は変わりません。別の人への配送は、クリエイターへのギフトを意味しません。
安全にプレビューとテストを行う
サンプルをプレビュー(Preview sample) は、セッションに接続しない隔離されたサンプルオーバーレイを開きます。Event Flowの起動、合計の変更、支払いの検証は行いません。
Shopifyの注文で、明示的に次のフラグが付いているものは、 test: true 受信確認を返し、受信ステータスにテストとして表示します。購入アラートやアクションは実行しません。テストフラグがない注文、未払いまたは一部支払いの注文、キャンセル済み注文、合計がゼロの注文、古いまたは無効なタイムスタンプもスキップします。全体を通したテストには開発ストアを使用してください。信頼できるテストフラグがない管理画面のサンプルを、稼働中の報酬ワークフローに送信しないでください。外観の確認にはSSNプレビューを安全に利用できます。
ストアなしで検証した内容
隔離したテストでは、署名付きUnicode JSONを使った実際のHTTP配信、署名の改ざん、重複配信、テスト注文の分離、通貨の精度、大きすぎるリクエスト、非公開の顧客情報の除去、実際のSSAppランタイムでのオフライン復旧を確認しています。これらの検証では注文を行わず、販売者アカウントも必要ありません。
本番用のShopify受信エンドポイントは、実際のストアからの配信テストが完了するまで無効です。手動の商品紹介は単独で利用できます。Shopify CLIのサンプルWebhookはペイロード処理のテストに役立ちますが、購読登録や再試行は検証できず、アプリ認証情報も必要です。参照: Shopify CLIのWebhookテストの制限.
配信の制限とトラブルシューティング
- 受信エンドポイントを利用できない: SSN APIの運営者がShopify受信エンドポイントをデプロイして有効にする必要があります。参照: サーバー設定。従来の署名なしセッションWebhook URLを代わりに使用しないでください。
- イベント待機中: Order payment、JSON、正確な受信URL、一致する永続的なストアドメイン、そのWebhookの署名シークレットを確認してください。カスタムアプリのWebhookは、手動作成用のNotificationsシークレットではなく、そのアプリの署名シークレットを使用します。
- 署名済みイベントがスキップされる: この連携には、金額が正で全額支払い済みの注文と、次の値が必要です:
test: falseと、署名付き本文の次の値が必要です:updated_atが過去7日以内である必要があります。時計が未来にずれている場合は5分まで許容します。注文作成、出荷、在庫情報から支払い済みと推測することはありません。 - SSNがオフラインだった: 受け付けたイベントは最長7日間キューに保存されます。SSNを再起動すると再開します。受信エンドポイントを再起動しても、ステータスと保留中の処理は維持されます。サービスの保存容量には上限があり、処理を永続的にキューへ保存できない場合はShopifyに再試行を要求します。
- 重複する場合: 受信エンドポイントはShopifyの配信IDが異なっていても、ストアと注文の組み合わせで重複を除外します。重複除外記録は7日間保持されます。SSNは処理済みIDを永続保存してから受信確認を返します。ただし、外部アクションの実行後から保存までの間にクラッシュすると、アクションが再実行される可能性があります。重要な自動処理には独自の冪等性対策を設けてください。
- 購入者名がない: 仕様によるものです。SSNは顧客名、メールアドレス、住所、注文メモ、明細のカスタムプロパティ、チェックアウトURL、生の注文IDを除外します。公開商品名はプレーンテキストのまま保持します。
- 返金や注文の変更: これはリアルタイムのアラートフィードであり、会計や出荷管理のシステムではありません。返金、キャンセル、合計金額の編集によって過去のアラートは取り消されません。注文履歴との照合や商品の自動削除は含まれません。
参照先: Shopifyイベント仕様 および 共通の商品とQRコードのガイド.