Shopify Flow のスケジュール、データ取得、ループワークフロー
ほとんどの場合、イベント発生時に実行されるトリガーに、複数の条件とアクションを連携させることでワークフローを構築できます。より複雑なユースケースでは、実行したい内容に対応するトリガーが存在しない場合、特定の時刻に実行する必要がある場合、またはデータのリストを扱う必要がある場合があります。このような場合は、指定時刻トリガー、データ取得アクション、ループを使用して、高度なワークフローを作成できます。
たとえば、未発送の注文の日次サマリーを取得する必要があるとします。これらの機能群を使用すると、毎日決まった時刻に実行され、該当の注文を取得し、そのサマリーを送信するワークフローを実行できます。これらのトリガーとアクションを利用した、その他の例とテンプレートを確認できます。
指定時刻トリガー
イベントをきっかけにワークフローを開始する代わりに、指定時刻トリガーは、指定した特定の日時にワークフローを開始します。また、時間、日、週、または月単位でワークフローが繰り返し実行されるようにスケジュールすることもできます。スケジュールに基づいて実行されるため、お客様、注文、商品などのデータを使用するには、アクションを使用してそのデータを取得する必要があります。これは、データ取得アクションを使用して行うことができます。
指定時刻トリガーは、最短 10 分間隔で実行できます。
データ取得アクション
ほとんどのアクションでは、ストアの何かが変更されます。たとえば、お客様にタグを追加したり、アプリにお客様へのプッシュ通知を送信するよう指示するなど、アプリにコマンドを送信したりします。
データ取得アクションは、Shopify Flow で使用するためにストアからデータを取得します。これらのアクションでは、過去1日間に更新されたもののみを取得するなど、一連のフィルターを使用してクエリを呼び出します。このアクションは、条件に一致するデータのリストを返します。たとえば、注文データを取得アクションは、Admin APIでOrder queryを呼び出し、クエリに一致する注文のリストを返します。
データ取得アクションは、最大 100 件のアイテムを含むリストでのみ実行できます。
以下のアクションはストアから情報を取得するため、そのデータをワークフローで使用できます。各アクションで、データを絞り込む方法と返されるデータに関する詳細を確認してください。
- キャッシュフロー追跡セッションデータの取得
- コレクションデータの取得
- 会社データの取得
- 会社のロケーションデータの取得
- お客様データの取得
- ディスカウントデータの取得
- 下書き注文データの取得
- フルフィルメント注文データの取得
- ギフトカードデータの取得
- ロケーションデータの取得
- メタオブジェクトエントリーリストの取得
- メタオブジェクトエントリーの取得
- 注文データの取得
- 商品データの取得
- 商品バリエーションデータの取得
- 販売計画グループデータの取得
- サブスクリプション請求試行データの取得
- サブスクリプション契約データの取得
データ取得アクションにおけるLiquidタグ
データ取得アクションで日付を使用する場合、クエリ内の日付を変更するために、date_minus および date_plus Liquid タグを使用できます。たとえば、ワークフローのスケジュールされた実行時刻の 5 日前の日付を計算するには、次の Liquid を使用できます。
{{ scheduledAt | date_minus: "5 days" }}これらのタグの使用方法に関する詳細については、Liquid 変数に関するドキュメントを参照してください。
項目ごとループ
データ取得アクションを使用すると、クエリに一致するデータのリストを取得できます。項目ごとループ (繰り返し) アクションを使用して、そのリストをループ処理できます。項目ごとループでは、そのアイテムにのみ適用される条件とアクションを使用できます。
たとえば、毎週月曜日に実行されるワークフローを作成します。このワークフローでは、注文データを取得アクションを使用して、その週に行われた注文を取得します。次に、項目ごとループ (繰り返し) は、getOrderData リストから返された各注文に New order タグを適用します。リスト内のすべての注文にタグが付けられると、タグ付けが完了したことを示す社内メールが送信されます。

集計アクション
リストを扱う際に、後の条件やアクションで使用するためにアイテム数をカウントしたい場合があります。たとえば、メールを送信する前に、結果が 0 件より多いかどうかを確認することが考えられます。Shopify Flow には、ワークフローでリストデータの計算を実行するために、以下のアクションが用意されています。
Shopify Flowの高度なワークフローの例
Shopify Flow で使用できる高度なワークフローの例をいくつか紹介します。
- 2 日間のフルフィルメント期間を過ぎた注文の日次サマリーを取得する。
- 新しい注文が作成されたら、同じお客様が過去 24 時間以内に別の注文を行ったかどうかを確認します。
- 毎日、在庫切れになっている商品のリストを記載したサマリーメールを受信します。
- 1 日に 1 回、チャージバックに関連付けられているすべての注文を検索し、お客様にタグ付けします。
- 新しい注文が作成されたときに、お客様が過去 6 か月間に注文した件数を確認します。
- 毎日、すべての未決済の下書き注文のリストを取得し、Slack メッセージを送信します。
2日間のフルフィルメント期間を過ぎた注文のサマリーを毎日取得する
このワークフローを使用すると、発送保証期間を過ぎた注文があるかどうかを判断し、ある場合は、それらの注文の金額を確認できます。
この例では、ワークフローは毎日午後 5 時に実行されます。ワークフローは 「注文データを取得」 アクションを使用して、2 日間の発送期間内にフルフィルメントされなかった注文のリストを取得します。次に 「For each」 アクションで、遅延したすべての注文にタグを追加します。また、このワークフローは 「カウント」 アクションを使用して遅延した注文数を確認し、「合計」 アクションを使用してそれらの注文の金額を確認します。「カウント」アクションと「合計」アクションによって作成された変数が使用され、注文数とその金額を示すメールが送信されます。

新しい注文が作成されたら、同じお客様が過去24時間以内に別の注文を行ったかどうかを確認する
このワークフローを使用すると、同じお客様が同日に複数の注文を行ったかどうかを判断できます。その場合、注文をまとめて発送できるよう、フルフィルメントが保留にされます。
この例では、新しい注文が作成されるたびにワークフローが実行されます。ワークフローは 「注文データを取得」 アクションを使用して、過去 1 日にお客様が行った注文のリストを取得します。次に、「カウント」 アクションでお客様の注文数が決定されます。同じお客様から同日に 2 件以上の注文があった場合、それらの注文のフルフィルメントは保留にされ、注文にタグが追加されます。

在庫切れ商品のリストを記載したサマリーメールを毎日受信する
このワークフローを使用すると、在庫切れになっているすべての商品のリストを生成し、メールで送信することができます。
この例では、ワークフローは毎日午後 9 時に実行されます。ワークフローは 「商品データを取得」 アクションを使用して、在庫のない商品のリストを取得します。「カウント」 アクションで、在庫切れのアイテム数が決定されます。「注文データを取得」アクションと「カウント」アクションによって作成された変数を使用して、商品数と商品のリストを示すメールが送信されます。

1日に1回、チャージバックに関連するすべての注文を検索し、お客様にタグ付けする
このワークフローは、チャージバックを開始したお客様を追跡するために使用できます。
この例では、ワークフローは毎日午前 10 時に実行されます。ワークフローは 「注文データを取得」 アクションを使用して、チャージバックのあった注文のリストを取得します。次に、「For each」 アクションによって、それらの注文を行ったすべてのお客様にタグが追加されます。

新しい注文が作成されたときに、お客様が過去6か月間に行った注文数を確認する
このワークフローを使用すると、お客様が過去6か月間に行った注文数を確認して、ロイヤルティタグを追加できます。
この例では、ワークフローは新しい注文が作成されるたびに実行されます。ワークフローは 「注文データを取得」 アクションを使用して、過去 6 か月間にお客様が行った注文のリストを取得します。次に、「カウント」 アクションでお客様が行った注文数が決定され、「合計」 アクションでそれらの注文の金額が決定されます。注文数が 5 件以上の場合にお客様タグが追加され、注文の金額が 100 ドル以上の場合に別のタグが追加されます。

毎日、すべての未決済の下書き注文のリストを取得してSlackメッセージを送信する
このワークフローを使用すると、ストアに未決済の下書き注文があるかどうか、ある場合はその件数を示す Slack メッセージを送信できます。
この例では、ワークフローは毎日午後 5 時に実行されます。ワークフローは 「下書き注文データを取得」 アクションを使用して、ステータスが「オープン」の下書き注文のリストを取得します。次に、「カウント」 アクションで、未決済の下書き注文数が決定されます。「カウント」アクションによって作成された変数を使用して、未決済の下書き注文数を示す Slack メッセージが送信されます。
