開発者テンプレートからの時間ベースおよび在庫ベースのトリガー

テンプレートからの時間ベースおよび在庫ベースのトリガー

ページをコピーする

4つのカスタムトリガーテンプレート:注文がN日間未処理の状態、出荷状況に動きがない場合、メタフィールドに設定された日付に達した場合、および在庫が各ロケーションごとの閾値を下回った場合です。

Shopify Flowは、何かが起こったときに反応します。最も有用な自動化機能の中には、何かが起こらなかったときや、特定の日付が到来したときに開始されるものもあります。例えば、3日経ってもまだ発送されていない注文、配送状況が更新されなくなった荷物、メタフィールドに保存された発売日などが挙げられます。また、ロケーションごとに異なる在庫切れラインを設定するなど、Shopify Flowの条件では表現できないルールを必要とするものもあります。

これらのケースに対応するテンプレートが4つ用意されています。それぞれがカスタムトリガーとなっており、カスタムトリガーエディタでテンプレートを選択し、コードの上部でいくつかの値を設定し、テストを行ってから有効にするだけです。ご自身でコードを書く必要はありません。

4つのテンプレート

テンプレート 仕組みについて どのようなものに反応するのか
注文がN日間未処理のままです スケジュールに従って、1時間ごとに まだフルフィルメントされていない、あるいは一部のみフルフィルメントされている未処理の注文について、注文が作成されてから設定された日数
N日間、荷物の配送状況に変化がありません スケジュールに従って、1時間ごとに 設定した日数間、注文内容に変更がないにもかかわらず、配送されなかった荷物
メタフィールド内の日付に到達しました 6時間ごとに、予定通りに 商品または注文の「日付」メタフィールドで、その日付が到来しているもの、またはその日付まであと何日あるもの
在庫が当該ロケーションの閾値を下回りました 在庫の変動があるたびに そのロケーションについて設定した閾値を下回ったロケーションの在庫状況

「間隔」は、テンプレートの初期値です。エディタで変更することができます。

テンプレートを使用してください

「トリガー」ページの**「カスタムトリガー」**セクションで、カスタムトリガーを作成してください。名前とハンドル名を指定してください。ハンドル名は、ワークフローがフィルタリングを行う際に使用されるもので、後から変更することはできません。

予定されている3つのテンプレートについては:

  1. **「実行条件」**セクションで、「**スケジュールに従って」**というオプションを選択してください。
  2. **「スケジュール」**カードで、「**テンプレートから開始」**リストを開き、テンプレートを選択してください。これにより、コードが置き換えられ、間隔が設定されます。
  3. コードの上部にある値を編集してください。各テンプレートごとの説明は、以下に記載されています。
  4. テストしてみてください。テストではコードが1回実行されるだけで、Shopify Flowには何も送信されず、何もストアされませんので、何度でも繰り返し実行できます。
  5. トリガーをオンにして、保存してください。

標準テンプレートについては:

  1. **「このランの仕組み」**セクションで、「**Shopifyのイベント1つ」**というオプションを選択してください。
  2. 「**テンプレートから開始」**のリストを開き、在庫テンプレートを選択してください。これにより、「**ロケーションでの在庫レベル変更」**というイベントが選択され、コードが入力されます。
  3. コードの上部にある値を編集してください。
  4. ストア内のバリエーションの在庫を変更して実際のイベントを再現し、それを基にテストを実行してください。
  5. トリガーをオンにして、保存してください。

Shopify Flowでご利用ください

これら4つすべてが、Shopify Flow では「カスタムトリガー」として表示されます。ワークフローに追加し、条件として「トリガーハンドル」フィールドがご自身のトリガーのハンドルと一致するように設定してください。テンプレートから送信されるすべての値は、トリガー上のフィールドとなります。

3つのスケジュール済みテンプレートでは、注文または商品をイベントのレコードIDとして渡します。「注文データの取得」や「**商品データの取得」**などのステップを追加して、完全なレコードを読み込み、その後のステップでそれを活用してください。

注文がN日間未処理のままです

お客様からご指摘いただく前に、出荷の遅れを未然に防ぎます。

コード内の値 最初は 意味
DAYS 3 注文から経過した日数
ONLY_PAID true 支払いが完了した注文のみが対象となります。未払いの注文は通常、お客様を待つのではなく、支払いが行われるのを待つことになります。

このトリガーは、設定した経過期間に達した時点で、まだ未処理、または一部のみ処理済みの未完了注文1件につき1回、ワークフローを開始します。期限内に処理が完了した注文については、このトリガーは決して起動しません。

チェックは注文ごとに1回、その時点で行われます。1週間経ってもまだ処理されていない注文については、ワークフローが2度目には開始されません。「支払い済みのみ」の設定の場合、その時点以降に支払いが完了した注文についても、処理の対象にはなりません。

Shopify Flowに送信されたフィールド 内容:
name 注文名(例:#1042)
placedAt ご注文をいただいた際
daysSinceOrder 注文からの経過日数
fulfillmentStatus フルフィルメントの処理状況
financialStatus 注文のお支払い状況
thresholdDays 設定された日数

注文自体は、イベントのレコードIDとして渡されます。

カスタムトリガーエディタ内の「N日間未処理の注文」テンプレートのコードで、DAYS および ONLY_PAID という値から始まる部分です。
エディタ内のテンプレートです。コードの上部にある2つの値が、編集対象となります。

N日間、荷物の配送状況に変化がありません

「注文はいつ届きますか」という質問がされる前に、その答えをお知らせします。

コード内の値 最初は 意味
DAYS 5 変化がなかった日数
ONLY_WITH_TRACKING true 追跡番号のない荷物は対象外となります。そのような荷物については、配達完了の報告は一切行われません。
DONE DELIVERED, PICKED_UP, CANCELED 「完了」とみなされる出荷状況

Shopifyでは、出荷が最後に更新された日付で検索することはできません。そのため、このテンプレートは注文情報を基に動作します。設定した日数分更新されておらず、かつ未完了の出荷がまだ残っている「履行済み」または「一部履行済み」の注文を検索します。

**注文内容に変更があると、カウントが最初からやり直されます。**追跡情報の更新だけでなく、メモの編集や新しいタグの追加でも同様です。

トリガーは、配送が滞っている荷物1件につき1回、ワークフローを開始します。したがって、配送が滞っている荷物が2件ある注文の場合、ワークフローは2回開始されます。1つの注文につき、最大3件の荷物がチェックされます。

Shopify Flowに送信されたフィールド 内容:
name 注文名
fulfillmentId 出荷のID
shipmentStatus 出荷の現在の状況
lastTrackingStatus 最新の追跡イベントの状況
lastMovedAt その荷物が最後に移動したのはいつですか
daysWithoutMovement 貨物が最後に移動してから経過した日数
shippedAt 出荷が作成されたとき
estimatedDeliveryAt 配送業者から配達予定日が通知された場合、その配達予定日
carrier 運送業者の名称
trackingNumber 追跡番号
trackingUrl 追跡リンク
thresholdDays 設定された日数

注文自体は、イベントのレコードIDとして渡されます。

メタフィールド内の日付に到達しました

発売日、保証期間、賞味期限、更新日など、製品や注文に関して日付として記録しておくあらゆる情報について。

コード内の値 最初は 意味
RESOURCE "products" メタフィールドが配置される場所:商品か、それとも注文か
NAMESPACE "custom" メタフィールドのネームスペース
KEY "release_date" メタフィールドのキー
OFFSET_DAYS 0 指定した日付から前または後の日数です。以下の例をご覧ください。

オフセットに関する3つの例:

オフセット ワークフローが開始されたとき
0 当日
-7 その日の7日前
30 その日から30日後

このトリガーは、その日に期限が到来する商品または注文ごとに、ワークフローを1回ずつ開始します。日数はUTC基準の日数です。トリガーは1日ずつ処理を行うため、処理し損ねた日は順次処理されます。1日に期限が到来するレコードが100件を超える場合、残りのレコードは次回の実行時に処理されます。

Shopify Flowに送信されたフィールド 内容:
name 商品のタイトルまたは注文名
date メタフィールドに保存されている日付
reachedOn 記録の提出期限の日
offsetDays 設定したオフセット

製品または注文そのものが、イベントのレコードIDとして渡されます。

在庫が当該ロケーションの閾値を下回りました

ロケーションごとに在庫下限ルールを1つ設定します:倉庫に20個、店舗に3個です。

コード内の値 最初は 意味
THRESHOLDS { "Main warehouse": 20, "Pop-up store": 3 } 各ロケーションのしきい値(ロケーション名別)
DEFAULT 5 リストに記載されていないすべてのロケーションの閾値
ALSO_WHEN_RESTOCKED false 在庫がしきい値以上に戻った時点で、ワークフローが開始されるかどうか

特定のロケーションを無視するには、そのロケーションにしきい値nullを指定してください。リストにあるロケーションのみを監視するには、デフォルトのしきい値をnullに設定してください。

このトリガーは**、変化が生じた時点でワークフローを1回だけ**開始します。具体的には、変化の前には在庫が閾値以上でしたが、変化の後は閾値を下回っている場合です。在庫がすでに少ない状態にある間は、すべての販売に対して反応することはありません。これは、アプリが各変化の前後における在庫レベルを把握しているため可能です。

Shopifyの管理画面の「**設定」>「ロケーション」**に表示されているとおりに、ロケーション名を正確に入力してください。

このテンプレートでは、「**ロケーションごとの在庫レベル変更」**トリガーを有効にし、その権限を付与する必要があります。これにより、アプリが在庫レベルを追跡できるようになります。「トリガー」ページ(旧「設定」)および権限とデータへのアクセスをご参照ください。

Shopify Flowに送信されたフィールド 内容:
event 何が起きたか:株価が閾値を下回ったか、あるいは株価が回復した
productTitle 商品のタイトル
variantTitle 別タイトル
sku そのバリエーションのSKU
location そのロケーションの名前
locationId そのロケーションのID
oldAvailable 変更前の在庫状況
newAvailable 変更後の在庫状況
threshold 適用された閾値は

「発生した事象」のフィールドには、次の2つの値のいずれかが格納されます:

値 意味
below 株価が基準値を下回りました
restocked 株価は基準値に戻ったか、それを上回っています
トリガーをオンにしたのに、なぜワークフローが開始されなかったのでしょうか?

スケジュールされたテンプレートの初回実行では、その開始時点のみが記憶されます。トリガーは、その時点を過ぎてからラインを越えた注文、出荷、日付に対して反応し、すでにその時点を過ぎていたものに対しては反応しません。

1時間ごとよりも頻繁にチェックを行うことはできますか?

はい、間隔は30秒ごとから1日1回まで、お好きなようにお選びいただけます。間隔を短くすれば実行回数が増え、その都度、プランの達成度としてカウントされます。日単位で計測されるルールの場合、通常は1時間ごとの実行で十分すぎるほどです。

日付トリガーでエラーが発生しています。何が問題なのでしょうか?

ほとんどの場合、メタフィールドの定義が原因です。そのメタフィールドは「Date」型である必要があり、「**設定」>「カスタムデータ」**で「**フィルタリング」**オプションがオンになっている必要があります。また、コード内の名前空間とキーが、定義と完全に一致しているかご確認ください。

テンプレートによって、注文内容や商品が変更されることはありますか?

いいえ。カスタムトリガーは読み取り専用です。注文にタグを付けたり、メールを送信したり、メタフィールドを更新したりするには、そのトリガーで開始されるワークフローに、それらのアクションを追加してください。

出荷が、私が設定した日数よりも長く滞ってしまい、ワークフローが開始されませんでした。なぜでしょうか?

カウントは、注文の最後の変更時点から計測されます。その間に、スタッフによる編集、別のアプリによる変更、または追跡情報の更新などがあった場合、その時点からカウントが再開されます。

今後の手順