Shopify Flow のエラーのトラブルシューティング

Shopify Flow はストアのタスクやプロセスを自動化するのに役立ちますが、ワークフローの作成または編集時にエラーが発生したり、特定の制限に達したりすることがあります。このページでは、ワークフローの制限やデータエラーなど、直面する可能性のある一般的な問題と、その解決方法について説明します。これらのエラーを理解することで、問題のトラブルシューティングを行い、ワークフローをスムーズに実行し続けることができます。

ワークフローを作成する際のエラー

ワークフローを作成する際に、新しいワークフローの追加を妨げるエラーが発生することがあります。以下に、発生する可能性のあるエラーをいくつか示します。

新しいワークフローを作成する際に、許可されているワークフローの上限数である 1000 件に達しました。続行するには、未使用のワークフローを削除してから、もう一度お試しください。というエラーが表示されることがあります。

Flow では、ストアが所有できるワークフローの数が 1000 件に制限されています。これには、有効なワークフローと無効なワークフローが含まれます。この上限に達した後に新しいワークフローを作成する場合は、未使用または無効なワークフローを削除する必要があります。

この上限が設定される前にストアに 1000 件を超えるワークフローがあった場合、そのストアは 1000 件を超えるワークフローで引き続き運営できます。ただし、新しいワークフローを作成するには、上限を下回っている必要があります。

Flow アプリで以下のようなさまざまな操作を行う際に、このエラーが発生する可能性があります。

  • 新しいワークフローの作成
  • ワークフローの複製
  • ワークフローのインポート
  • テンプレートのインストール

ワークフローを有効にする際、ストア内で同じトリガーを使用している有効なワークフローが 10 個以上あるという警告が表示される場合があります。

トリガーイベントが発生するたびに、Flow は関連するすべてのワークフローを処理する必要があるため、同じトリガーを共有するワークフローが多数あると、パフォーマンスに問題が生じる可能性があります。このようなファンアウトにより、実行に時間がかかったり、リソースの使用量が増加したりする場合があります。

単一のトリガーを使用するワークフローの数を減らすには、以下のアプローチを検討してください。

  • 同じトリガーを使用する複数のワークフローを、複数の分岐や条件を持つ 1 つのワークフローに統合します。
  • 不要になったワークフローを無効化または削除します。
  • 一部のワークフローについて、代わりにより具体的なトリガーを使用できないか検討します。

ワークフローを編集する際のエラー

ワークフローを編集する際に、そのワークフローの保存を妨げるエラーが発生することがあります。ワークフローの編集時に発生する可能性のある一般的なエラーは、以下のとおりです。

ワークフローに新しいアクションを追加する際に、データが見つかりませんというエラーが表示されることがあります。

「データが見つかりません」のエラー

このエラーは、商品タグを追加などの多くのアクションで、商品などの Shopify リソースが必要なために発生します。そのリソースが利用できない場合、アクションは実行できません。よくあるケースとして、ワークフローに必要なデータと似てはいるものの、実際には必要なものを提供していないデータが含まれていることがあります。

以下のセクションでは、このエラーの原因となる一般的なシナリオと、その解決方法について説明します。

問題1:単一のアイテムが必要な場面で、「データを取得」によってリストが提供されている

ワークフローで Shopify リソースのリストが提供されても、アクションでは単一のリソースしか許可されないことがよくあります。たとえば、商品データを取得によってワークフローから商品のリストが提供されても、商品タグを追加アクションでは単一の商品が必要です。

このエラーを解決するには、For each アクションを追加してリストをループ処理し、リスト内の各アイテムに対してアクションを呼び出すことができます。この例では、エラーと For each を使用した解決策の両方を示しています。

「データが見つかりません」のエラー

問題2:単一のアイテムが必要な場面で、トリガーによってリストが提供されている

アクションで単一のリソースが必要な場合にトリガーがリストを提供すると、同様のエラーが発生する可能性があります。たとえば、フルフィルメント注文を発送済みとしてマークするにはフルフィルメント注文が必要ですが、トリガーは注文から取得されるため、フルフィルメント注文のリストが提供されます。

このエラーを解決するには、問題1と同様に、For each アクションを追加してリストをループ処理し、リスト内の各アイテムに対してアクションを呼び出すことができます。

フルフィルメント注文の解決策

または、必要なリソースを提供する別のトリガーを使用することもできます。たとえば、注文が作成されたときトリガーの代わりに、単一のフルフィルメント注文を提供するフルフィルメント注文のフルフィルメント準備が完了したときトリガーを使用できます。

「フルフィルメント注文のフルフィルメント準備が完了したとき」トリガーの例

問題3:「時間を指定」トリガーによってデータが提供されない

時間を指定」トリガーは、Shopify リソースデータを提供しません。トリガーの後に Shopify リソースを必要とするアクションを接続しようとすると、エラーが発生します。

このエラーを解決するには、商品データを取得など、必要なデータを提供するアクションを追加します。問題1で説明したように、データを取得するアクションによって返されるリストをループ処理するために、For each アクションを追加する必要もあります。

必要な商品が見つからない場合の例

問題4:アプリのトリガーによってデータが提供されない

問題3と同様に、アプリによって作成された一部のトリガーは、必要な Shopify リソースデータを提供しません。たとえば、「レビューが作成されたとき」トリガーはメールアドレスを提供しますが、お客様タグを追加などの多くのアクションで必要となるお客様オブジェクトは提供しない場合があります。

このエラーを解決するには、「データを取得」アクションを使用して、必要な Shopify リソースをフェッチできる場合があります。たとえば、お客様データを取得を使用して、トリガーから提供されたメールアドレスからお客様オブジェクトを取得できます。他の問題と同様に、データを取得するアクションによって返されるリストをループ処理するために、For each アクションを追加する必要もあります。

「データを取得」がオプションではない場合は、アプリ開発者に連絡して、必要なデータを提供するようにトリガーを修正できるか尋ねる必要があるかもしれません。

ワークフローに新しい待機ステップを追加する際に、ワークフローには 40 以下の待機ステップを設定する必要がありますというエラーが表示されることがあります。

Flow では、ワークフローで許可される待機ステップの数が 40 に制限されています。このエラーが発生した場合、この上限を超えています。この問題を解決するには、ワークフロー内の他の場所にある待機ステップを削除します。

この上限が導入される前に 40 を超える待機ステップを含むワークフローがすでにあった場合、そのワークフローは引き続き想定どおりに機能します。ただし、待機ステップを追加するには、まず既存の待機ステップを削除して上限を下回るようにする必要があります。

さらに、すべての待機ステップの合計待機時間が 90 日を超えることはできません。

ワークフローの条件内にある設定フィールドの値を編集する際に、設定フィールド値は 50kB 未満でなければなりませんというエラーが表示されることがあります。

Flow では、設定フィールド値のサイズが 50kB のデータに制限されています。このエラーが発生した場合、上限に達しているか、上限を超えています。この問題を解決するには、そのフィールドに追加するデータの長さを短くしてください。

値が 50kB 以上の設定フィールドがすでにある場合でも、ワークフローは引き続き想定どおりに実行されます。ただし、ワークフローに変更を加えるには、エラーの原因となっている値を修正する必要があります。

ワークフローの実行時のエラー

ワークフローの実行でエラーが発生すると、その実行は「失敗」としてマークされます。エラーメッセージは、ワークフローの実行の詳細に表示されます。以下は、ワークフローの実行が失敗した際に発生する可能性のある一般的なエラーです。

  • 一時的なエラー」は、Flow がタスクを完了できないときに発生する一時的なエラーです。これらのエラーは、成功するかタイムアウト制限に達するまで再試行されます。
  • 恒久的なエラー」は、Flow がタスクを完了できず、そのタスクを再試行できない場合に発生するエラーです。

一時的なエラー

一時的なエラーは、Flow がタスクを完了できないときに発生する一時的なエラーです。これらのエラーは、成功するかタイムアウト制限に達するまで再試行されます。たとえば、コネクターアクションの実行時に Flow がパートナーに連携できない場合、Flow は中止する前にタスクを複数回再試行します。

再試行は間隔を空けて行われ、試行を重ねるごとに遅延が増加します。通常、ワークフローで一時的なエラーが発生した場合、タスクを再試行するため、長時間「実行中」の状態が続きます。

タスクの再試行が成功すると、ワークフローは続行します。再試行されたタスクで恒久的なエラーが発生した場合、ワークフローは失敗します。すべてのワークフローセクションには、合計で 36 時間という実行時間の上限があります。一時的なエラーが発生したステップがその上限に達する前に成功しない場合、ワークフローは失敗します。

待機ステップを含むワークフローはセクションに分割され、これがワークフローでのタイムアウト制限の計算方法に影響します。各セクションは、まとめて実行されるタスクのグループであり、それぞれに 36 時間の時間制限があります。たとえば、ワークフローに 1 時間待機する待機ステップがある場合、待機ステップの前のタスクは 1 つのセクションとしてまとめて実行され、待機ステップの後のタスクは別のセクションとしてまとめて実行されます。ワークフローに複数の待機ステップがある場合、各待機ステップ間のタスクが 1 つのセクションとしてまとめて実行されます。待機ステップのないワークフローは、1 つのセクションと見なされます。

一時的なエラーが時折発生するのは一般的です。しかし、複数の実行にわたって、ワークフローで同じ一時的なエラーが一貫して発生する場合は、ワークフローの再設定が必要になる可能性があります。

ステップのタイムアウトエラーは通常、ワークフローのタスクが 1 つのセクション内でクエリするデータが多すぎる場合に発生します。このエラーは、リスト (特に、ネストされたリストが大きすぎて迅速に処理できない場合) をループ処理するワークフローでよく発生します。

このエラーが発生すると、トリガーまたは待機ステップに再試行中と表示されます。

この問題を解決するには、リストやネストされたリストにアクセスする条件を見直し、正しく設定されていることを確認してください。よくある問題は、注文に含まれる商品だけでなく、ストアのすべての商品をチェックする条件を設定していることです。

ほとんどの Flow アクションには、HTTP コールが含まれます。ネットワークや他のサーバーの問題によって HTTP コールが失敗し、500 から 599 までのエラーコードが返されることがあります。このエラーが 1 回発生するだけでは問題ありません。しかし、繰り返し発生する場合は、ステップの設定方法ではなく、タスクを処理しているサーバーに問題があることを示している可能性があります。

このタイプのエラーは、「HTTPリクエストを送信」アクションで最も一般的に表示されますが、ほとんどのタスクで発生する可能性があります。

ワークフローによって完了する作業の総量は、API レート制限によって制限されます。これは、契約プランによって部分的に決定されます。通常、ワークフローが非常に複雑であるか、意図しない設計エラーが含まれていない限り、これらの制限に達することはありません。

このエラーにつながる可能性のある状況の例を次に示します。

  • HTML を含むメタフィールド値を確認する場合など、ワークフローの Liquid または条件で大量のデータを含むリストがループ処理される。
  • 大規模なストアで shop.orders をループ処理する場合など、ワークフローの Liquid または条件で大規模なリストがループ処理される。
  • ワークフローが新しいワークフローの実行を作成し続けることで、無限ループが発生します。たとえば、ワークフローが「お客様のタグが追加されました」トリガーを使用し、「お客様のタグを追加」アクションを含んでいる場合に、これが発生する可能性があります。

制限に達すると、GraphQL スロットリングエラーが表示されます。このエラーは、他のワークフローが実行を試みた際に影響を与える可能性があるため、発生した場合はすぐに解決してください。

恒久的なエラー

「恒久的なエラー」は、Flow がタスクを完了できず、そのタスクを再試行できない場合に発生するエラーです。たとえば、メールアドレスが無効なために Flow がメールを送信できない場合、タスクは再試行されず、ワークフローは失敗します。

Shopify のアクションを実行するには、商品、お客様、注文などのリソースが 1 つ以上必要です。必要なリソースが利用できない場合、アクションは意図したとおりに実行できません。たとえば、管理画面ではお客様情報なしで注文を作成できます。この場合に「お客様のタグを追加」などのアクションを実行すると、このエラーが発生してアクションは失敗します。

このエラーを防ぐには、アクションの前に条件を追加してリソースが存在するかどうかを確認します。前の例で、「お客様のタグを追加」と同じワークフローで内部メールを送信する場合、失敗する可能性のあるステップの前にメールアクションを配置するか、次のいずれかのアプローチを使用できます。

アクションを並行した分岐 (1つのステップから2つ以上の分岐が出ている状態) に配置します。

トリガーの後に 2 つのアクションが並行している例。

アクションの前にお客様が存在するかどうかを確認する条件を追加します。たとえば、order / customer / id is not empty and exists を確認できます。

ID を探す条件の例。

Google スプレッドシートコネクターを使用するには、スプレッドシートに書き込む権限を付与するため、Google アカウントを Flow にリンクする必要があります。このエラーは、アカウントと Flow のリンクが解除された、またはそのアカウントがスプレッドシートにアクセスできないといった理由で、Flow にスプレッドシートへの書き込み権限がない場合に発生する可能性があります。

これを解決するには、コネクターに使用されているアカウントでスプレッドシートを開くことができ、編集アクセス権があることを確認してください。間違ったアカウントがリンクされている場合は、接続を解除して新しいアカウントを接続できます。

手順:

  1. 既存のワークフローを開くか、新しいワークフローを作成します。
  2. ワークフローにアクションを追加します。
  3. Google スプレッドシートコネクターを選択します。
  4. [接続を解除] をクリックしてから、[接続] をクリックして、正しい Google アカウントを再接続します。

マーケティングメールを送信」アクションでは、メール受信に同意していないお客様にメールは送信されません。ワークフローが送信を試みると、恒久的なエラーが発生して失敗します。

これを解決するには、お客様のサブスクリプションステータスを確認する条件をワークフローに追加します。お客様がマーケティングメールの受信に同意していることを確認してから、メールを送信できます。「メール購読者リストの管理」の手順に従ってください。

このエラーは、ワークフローがデータを取得する前に customerorder などのリソースが削除されたことを示します。ほとんどの場合、このエラーは待機ステップの後に発生しますが、トリガーイベントの発生直後にリソースが削除された場合は、トリガーで発生する可能性もあります。

エラー発生時に通知を受け取る

エラーの発生がストアの運営に影響を与える場合は、エラー発生時に通知を設定することができます。エラー通知は、「ワークフローエラーが発生しました」トリガーを使用して、ワークフローとして構築できます。エラー通知はノイズを減らすように設計されているため、ワークフローのバージョンごとに通知は1件のみ届きます。

開始するには、以下のいずれかのテンプレートを使用できます。

実行の再試行

場合によっては、ワークフローの実行でエラーが発生したり、意図したとおりに実行されなかったりすることがあります。関連するワークフローの問題をトラブルシューティングして修正した後、過去の実行を手動で再試行して、その結果を遡って修正することができます。ワークフロー実行の再試行についての詳細は、こちらをご覧ください。

実行中 (レート制限あり)

場合によっては、1つまたは複数のワークフローがリソースを過剰に使用することがあります。これが問題を引き起こすのを防ぐために、Flow はストアでの実行を意図的に制限します。これにより、遅延やタイムアウトエラーが発生する可能性があります。この問題は、意図したとおりに機能していなかったバグを修正するために、非効率なワークフローを書き直すことで解決できます。

このメッセージは、ワークフローの実行に非常に長い時間がかかっていることを示します。これは一般的に、Flow が取得するのに多くの時間がかかる大量のデータをワークフロー内で使用していることが原因です。

このようなケースは、多くの場合、複数のアイテムリストを経由する深いリクエストパスが原因で発生します (商品が属するすべてのコレクション内のすべての商品について、すべてのメタフィールドをリクエストする場合など):

実行時間が長いワークフローの例。

また、ワークフローのトリガーステップがタイムアウトすることと関連している場合も少なくありません。

すべてのメタフィールドをループ処理するワークフローは、多くの場合、特定のメタフィールドのみを使用することで改善できます。複数のネストされたリスト (ある商品のすべてのコレクションに含まれるすべての商品など) や、特に大規模なリスト (すべてのオブジェクトのすべてのメタフィールドを含むメタフィールドの定義など) へのアクセスは、意図せず行われている可能性があります。正しいフィールド (単一の商品、またはオブジェクト上の単一のメタフィールド) を選択することで、効率を大幅に向上させることができます。その他のケースでは、「商品/注文/お客様のデータを取得する」アクションをクエリフィルターとともに使用すると、使用するオブジェクトの数を大幅に削減しつつ、関連するオブジェクトには引き続きアクセスできます。

このメッセージは、ワークフローの実行で大量のデータが生成されていることを示します。これは多くの場合、複数階層のリストにわたるフィールドをチェックするような、複雑な条件が設定されていることが原因です。

たとえば、「このお客様のタグのいずれか、注文項目のいずれか、その項目のタグのいずれか」といった条件では、多数のチェックが実行され、その結果を表示するために大量のデータが生成される可能性があります:

処理データが多すぎるワークフローの例。

このメッセージは、ワークフローの実行が何らかの一時的な問題によって繰り返し失敗しており、その後の再試行でも成功する頻度が低いことを示します。これは多くの場合、Shopify の Admin API またはパートナーのアプリが大量のリクエストを受け取っているときに発生します。