何かが変化したことを把握するだけでは、たいていの場合不十分です。ワークフローでは通常、変化前の状態を知る必要があります。価格が下がったのか上がったのか、その変動幅はどれくらいか、どのタグが追加されたのか、昨日のメタフィールドの値はどうだったのか、といった情報です。今回のリリースでは、アプリ全体で新旧の値を利用できるようになり、何も変化がなかった場合でも、カスタムトリガーによってワークフローを開始できるようになりました。
至る所に、古い価値観と新しい価値観が
- **メタフィールドのトリガーには、以前の値が渡されるようになりました。**すべてのメタフィールドのトリガー(汎用、商品、バリエーション、注文、顧客)は、
Metafield.value のほかに、Metafield.previousValue を Flow に渡します。メタフィールドが作成されたばかりの場合は、この値は空になります。および を参照してください。
- **価格、単価、および原価の変更は数値として反映されます。**Shopify Flowでは算術演算が行えないため、「Variant Price Changed」、「Variant Unit Price Changed」、「Product Variant Cost Changed」では、新たに「
delta」(新値から旧値を引いた値)、「percentChange」、および「direction」(増加、減少、変化なし)が返されるようになりました。 「価格が10%以上下落した」は、コードを必要としない単一の条件となりました。
- **「Product Update」、「Order Update」、「Customer Update」では、どのような変更があったかがわかります。**以前は、レコードが更新されたことのみが表示されていましたが、現在は「
changes」が含まれるようになりました。これは、変更されたフィールドの一覧と、各フィールドの旧値および新値です。 追跡対象となるフィールドは、製品の場合は「タイトル」、「説明」、「ステータス」、「タグ」、「ベンダー」、「タイプ」、「ハンドル」です。注文の場合は「支払いステータス」、「フルフィルメントステータス」、「ラインアイテム」、「タグ」、「メモ」、「追加詳細」です。お客様の場合は「タグ」、「メモ」、「アカウントの状態」です。長い値は短縮されて表示されます。在庫の変更など、これらのフィールド以外が更新された場合は、リストは空になります。
- **「下書き注文のラインアイテムの変更」**では、注文トリガーと同様に、行ごとの変更点(追加、削除、数量・価格・バリエーションの変更など)が表示されるようになりました。
- 独自のカスタムトリガーコードでも、旧値と新値の両方を確認できます。 「」のカスタムトリガー()は、「Product Update」「Order Update」「Customer Update」のいずれかが発生した際に、
payload._changesを受け取ります。これは、変更されたすべての追跡対象フィールドであり、各フィールドにはoldValueとnewValueが設定されています。これにより、コードは「ステータスが下書きからアクティブに変わった」「注文が支払済みになった」といった状態の遷移に基づいて実行されるため、現在の値に基づく条件では表現できないような変化にも対応できます。 エディタでキャプチャできるサンプルイベントには、そのフィールドが表示されています。
すべては追加形式です。すでに構築済みのワークフローは、変更されることなく引き続き動作します。各トリガーごとの完全なフィールド一覧については、「」のトリガーリファレンス()をご覧ください。
どの変更が「更新」トリガーを発動させるかを選択してください
「Product Update」、「Order Update」、「Customer Update」には、の「Triggers」ページ()にある各スイッチの横にある歯車アイコンの背後に、新しい設定が追加されました。これにより、トリガーの発動条件が変更されます。
- **チェックされている項目はありません:**トリガーは、これまでとまったく同じように、更新のたびに発動します。
- **チェックされたフィールド:**それらのいずれかが変更された場合にのみ実行されます。それ以外の更新はスキップされ、ご利用プランのカウント対象にはなりません。
これは、ワークフローが自分自身をトリガーしてしまうのを防ぐための適切な方法でもあります。「Product Update」で開始され、その後、再び自分自身を起動するために使用される製品のメタフィールドを書き込むワークフローがあります。トリガー対象を必要なフィールドに絞り込めば、その2回目の更新は実行されなくなります。
その他のトリガーについては、この選択による影響はありません。「注文の更新」の対象を支払いステータスに限定しても、「注文タグの追加」がトリガーされるタイミングは変わりません。
スケジュールに従って実行されるカスタムトリガー
Shopify Flow 何かが起こったときに反応します。何も起こらないときには反応できず、ストアの外にあるものは認識できません。のカスタムトリガー「」なら、それが可能です。エディタでは、「このトリガーを実行する条件:Shopifyのイベント****が発生したとき、またはスケジュールに従って」と尋ねられます。 「スケジュールに従って」を選択すると、コードは30秒ごとに、1日1回を上限として実行されます。前回の実行時に検知した内容を記憶しており、ストアの状態を読み取り、パブリックインターネット上の任意のサービスを呼び出すことができ、何が変更に該当するかを独自に判断します。
テンプレートを基に、上部の数値を編集してください:
- N日間更新されていない商品、注文、またはお客様 ― 古くなったカタログのレビュー、滞留している注文、お客様の呼び戻し。各レコードは、活動がない期間ごとに1回ずつトリガーされます。機能を有効にした時点で既に期限切れとなっているものについては、一度にまとめてトリガーされることはありません。
- Shopify 以外の値が変更されました。具体的には、サプライヤーの在庫データ、為替レート、価格表などです。変更前後の値、および数値の場合はその差額とパーセンテージが表示されます。
- RSS または Atom フィードの新規アイテム ― サプライヤーのニュース、商品リストフィード、ステータスページなど。
- N時間注文がない場合 ― ストアの「心拍」のようなものです。注文が途絶えたときと、注文が再開したときにそれぞれ1回ずつ発火します。
スケジュールされたトリガーの初回実行では、その時点で確認された内容のみが記録されるため、トリガーを有効にしてもワークフローが過剰に処理されることはありません。Shopify Flow には、ハンドル名でフィルタリングされた**「カスタムトリガー**」として表示され、レコードはその ID として表示されます。トリガーが作動したかどうかに関わらず、すべての実行回数はプランの消化対象となります。エディタには、各間隔ごとに合計される実行回数が表示されます。 「**テスト」では、**何もトリガーすることなくコードを1回実行します。
イベントベースのカスタムトリガー用テンプレート
Shopifyイベントを監視するカスタムトリガーにも、テンプレートが追加されました。「テンプレートから開始」からテンプレートを選択すると、イベントが選択され、コードが自動的に入力されます。各テンプレートは、変更前後の値を読み取ります:
- 製品、注文、またはお客様のフィールドの値が変更されました。たとえば、ステータスが「下書き」から「有効」に変わった場合や、注文が「支払い済み」になった場合などです。
- 価格がN%以上値下がりしました。これは単なる価格の修正ではなく、本格的な値下げです。
- 在庫が閾値を下回りました。在庫がそのラインを越えた瞬間に1回だけ発火します。在庫がすでに少ない状態でも、販売のたびに発火するわけではありません。
- 商品のメタフィールドの数値が閾値を超えました。具体的には、評価が3を下回り、マージンが40を上回りました。
- 「高額お客様による注文」――
ctx.shopify() を使用して、当店のお客様の累計購入額を読み取り、設定した金額を超えた場合にのみトリガーされます。
レコードのトリガーイベント(そのレコード専用の管理ページ上)
新しい管理ブロックでは、Shopifyの管理画面において、現在表示中のレコードに関する最新のトリガーイベントが、そのレコードのページ上に直接表示されます。各イベントには、「price: 100.00 -> 85.00」といった「旧→新」の短い説明文が付いています。そこから、そのイベント自体、またはそのレコードの「イベント履歴」を開くことができます。
商品、バリエーション、注文、下書き注文、お客様、コレクション、会社、および会社のロケーションでご利用いただけます。ページの「カスタマイズ」メニューから、このブロックを一度追加してください。 個人データを扱うトリガーは、その値が省略された状態で一覧表示されています。製品、注文、顧客ページを例に、追加方法をご説明します:レコードの管理ページでのトリガーイベント。
「Generate with AI」に対応するAIプロバイダーがさらに増えました
AI では、Anthropic や OpenAI に加え、Google Gemini および OpenRouter にも対応するようになりました。OpenRouter を利用すれば、1 つのキーで多くの会社のモデルを利用でき、入力した任意のモデル ID にも対応しています。 **「Developer」→「Connections」**でキーを接続してください:。Gemini APIキーの取得はこちら:、または。OpenRouter APIキーの取得はこちら:。従来と同様に、生成処理はご自身のプロバイダーアカウント上で実行され、キーは暗号化されるため、二度と表示されることはありません。
ShopifyのWebコンポーネントを基盤とした、より高速なインターフェース
このアプリのすべてのページは、Shopifyの新しい管理用Webコンポーネントに基づいて再構築されています。これは、Shopifyの管理画面自体が使用しているのと同じ構成要素です。
- **読み込みが速くなりました。**このアプリでは、インターフェースライブラリの独自コピーを同梱しなくなりました。コンポーネントは Shopify から取得され、管理画面の他の部分と共有されており、通常はすでにブラウザのキャッシュに保存されているため、各ページが表示されるまでにダウンロードする必要があるデータ量が大幅に少なくなっています。
- **まるで管理画面のようです。**ボタン、表、スイッチ、ダイアログ、フォームは、キーボードによるナビゲーションやスクリーンリーダーの対応を含め、Shopifyの他のどこでも使用しているものと同じ見た目と動作をしています。
- **常に最新の状態を維持します。**Shopifyがコンポーネントを改善した場合、当アプリは当社による更新を行わなくても、その改善を自動的に反映します。
何も変わっていません。すべてのページ、設定、リンクは以前と同じ場所にあります。
このリリースには他にも以下の内容が含まれています
- 「権限」ページにある「すべて許可」と「すべて取り消し」の機能をご利用ください。「すべて許可」を選択すると、カードごとに個別に表示されるのではなく、1つのShopifyダイアログで、不足しているすべての権限を一括して許可するよう求められます。「すべて取り消し」を選択すると、まず確認を求められ、その意味についても説明が表示されます。つまり、トリガーは有効なままですが、再度アクセス権を許可するまではトリガーが作動しなくなります。
- カスタムトリガーコードでは、
ctx.fetch() による自社ストアへのアクセスだけでなく、ctx.shopify() による外部インターネットへのアクセスも可能です。内部アドレスからのアクセスは拒否されます。
- **カスタムトリガーとストアフロントのトリガーは、これと同じ動作をするようになりました。**編集したい行をクリックすると、右側にステータスが表示されます。
- 「トリガー」ページでは、タイトルの横に有効になっているトリガーの数が表示され、4つのタイプ別メタフィールドトリガーには、リスト内にそれぞれ専用の切り替えスイッチが追加されました。
- 必須項目は、カスタムトリガー、ストアフロントトリガー、および接続フォーム上で明示されています。
- **修正:イベント履歴の日付フィルターが解除できない不具合がありました。**日付チップを削除したり、「すべてクリア」を選択したりしても、適用された日付が残っていました。現在は、どちらの方法でも日付がクリアされるようになりました。
- イベント履歴の行は、青いリンクではなくプレーンテキストで表示されます。行全体は引き続きクリック可能です。