夜間のLINE・メール配信を防ぐ!Shopify Flowにトリガー発火時間ごとの制御を追加する方法

ワークフローの自動化アプリ「Shopify Flow」はとても便利ですが、活用していくと「もう少しこうできたらいいのに…!」と感じるシーンもちらほらあるかと思います。例えば、詳しくは記事内で解説しますが、意外とワークフローの実行時間の制御が難しかったり……。

本記事では、Flowで構築したワークフローに「トリガーの発火時間ごとの制御」を追加する方法をご紹介します。

本記事で紹介する方法を使うことで、下記のような制御が可能になります。

  • Flowを使って自動化しているLINE・メール配信の夜間配信を避ける
  • 夜間に発送処理された注文のLINE・メール通知を、日中に配信するよう制御する

Shopify Flowは時間の制御に弱い……?

Shopify Flowは、Shopify内の会員登録・購入・発送などのイベントやShopifyアプリ側のイベントをトリガー(発火条件)にして、Shopify内のデータで条件分岐を作り、Shopify上でのアクション(タグ付与・削除やメタフィールドへのデータ追加など)やShopifyアプリ側でのアクションをノーコードで実現できるアプリです。

Shopify Flowで構築するワークフローは、基本的にはトリガーイベント(Order created:注文が作成された時など)が起点となるため、時間に依存した細かな制御を行うのは意外と難しいです。直近数年で追加された「スケジュールトリガー」や「Waitアクション」により、ある程度の時間制御は可能になりましたが、以下のような課題も残っています。

  • スケジュールトリガーを利用する場合、変数として扱いたい顧客情報や商品情報を「Get Customer/Order data」する操作が必要ですが、一度に取得できるデータ件数は100件までという上限があるため、大規模なデータ操作には向きません。
  • Waitアクションを利用する場合、トリガーが発火した時刻から「何秒/分/時間/日 待機するか」という時間指定はできますが、「◯時まで待機する」などの細かい時間制御はできません。
  • 「Run codeアクション」内でJavaScriptを利用するという手もありますが、日時取得の関数などは利用できないため、細かい時間制御には不向きです。

そこで本記事では、ストアのメタフィールドにて現在時刻を更新し続け、それを参照してワークフローの条件分岐を行う方法を紹介します。

▼関連ブログ:スケジュールトリガーの活用方法

▼関連ブログ:Waitアクションの活用方法

Shopify Flowにトリガーの発火時間ごとの制御を追加する方法

全体の流れとしては下記のような形です。

  1. ストアのメタフィールドに、現在時刻を格納する定義を追加する
  2. Shopify Flowで「毎時、ストアメタフィールドの時間情報を更新する」ワークフローを作成する
  3. 時間制御したいワークフローに、 1.で定義したストアメタフィールドの情報を参照する条件ブロックを追加する

それでは、各工程を解説していきます。

手順1. ストアのメタフィールドに、現在時刻を格納する定義を追加する

ストアのメタフィールドに定義を追加して、現在時刻を格納するメタフィールドを作成するためのワークフローを作成します。このワークフローは初期設定で使うだけで、一度発火させたらその後は使いません。

▼ワークフローの完成イメージ

ワークフローの完成イメージ

まずはScheduled timeトリガー(スケジュールトリガー)で、指定した時間にワークフローが動くようにします。開始時間は、必ず現在時刻より「後」になるように指定してください。(皆さんがこの操作を行なっている時刻に、数分足した時間を設定すると良いです)

本ワークフローは1度の実行しかしませんので、繰り返し設定を追加する必要はありません。

スケジュールトリガーの設定

続いて、「Create metafield definition(メタフィールドの定義を作成する)」アクションのブロックを追加して設定していきます。

今回の例では、ストアのメタフィールドに shop.metafield.timeOfHour.jst という定義を追加してみました。

「Create metafield definition」アクションのブロックを追加
  • Name:メタフィールドの定義名を入れます。今回は時間の中でもJST(日本標準時)を格納するため現在時刻(JST)としました。
  • Description:メタフィールドの説明を入力します。
  • Namespace:特にこだわりがなければ timeOfHour を入力してください。
  • Key:特にこだわりがなければ jst を入力してください。
  • Resouce type:ストアのメタフィールドとして追加するので Shop を選択します。
  • Data typeInteger(整数)を選択します。

設定が完了したらワークフローを「オン」にして実行します。

アクティビティログを確認し、結果欄で「Create metafield definition」アクションの実行状況が「完了」となっていればOKです。

実行状況が完了となっているのを確認

このワークフローは今後は使用しないので、オフに切り替えてください。

手順2. Shopify Flowで「毎時、ストアメタフィールドの時間情報を更新する」ワークフローを作成する

1.の工程で定義したストアメタフィールド shop.metafield.timeOfHour.jst に、毎時時刻を更新するワークフローを作成します。

▼ワークフローの完成イメージ

ワークフローの完成イメージ

まずはトリガーとして、Scheduled time(スケジュールトリガー)を選択します。

開始時間は、必ず現在時間より「後」になるように指定してください。操作している時間の、次の時刻の00分を指定するのがおすすめです。(例:12:35頃に作業している場合、13:00に設定)

毎時00分にワークフローを実行したいので、繰り返しは 1時間ごと で設定してください。

繰り返しを「1時間ごと」に設定

トリガーの「その場合(条件を満たした場合)」から接続して、「Update shop metafield(ストアメタフィールドを更新する)」アクションを選択します。

「Update shop metafield」アクションを選択
  • Metafield namespaceshop.metafield.timeOfHour.jst のうち、NamespaceであるtimeOfHour を入力します。
  • Keyshop.metafield.timeOfHour.jst のうち、keyであるjstを入力します。
  • Value{{ "now" | date: "%s" | plus: 32400 | date: "%H" }}を入力します。
  • TypeInteger(整数)を指定します。

Valueに入力した{{ "now" | date: "%s" | plus: 32400 | date: "%H" }} を簡単に説明すると、"now"で取得した現在時刻(UTC)date: "%s"で秒単位に変換し、plus: 32400で32,400秒(9時間)加算することで UTC(世界標準時)をJST(日本標準時)に変換。最後にその日時データのうち時刻を表す%H のみを出力するように指定しています。これで現在時刻が0023 で格納される形です。

ここまでで下準備は完了です!

手順3. 時間制御したいワークフローに、ストアメタフィールドの情報を参照する条件ブロックを追加する

最後に、実際に時間制御したいワークフロー内に、条件ブロックを追加していきます。

例えば、LINE配信を行うワークフローの時間制御をしたい場合、LINE配信アクションの直前に下記のような条件ブロックを差し込むイメージです。

条件ブロックを差し込むイメージ

条件ブロックで「変数を追加」を選択し、Shop > Metafield[引数が必要] を選択します。

Shop > Metafield[引数が必要] を選択

1.で定義したメタフィールドtimeOfHour.jst を選択します。

エイリアスはこのワークフロー内で該当のメタフィールドを取り扱うためのラベルのようなものです。特にこだわりがなければ time of hour と入力してください。

1.で定義したメタフィールドtimeOfHour.jst を選択します。

「timeOfHour.jst」を選択

「追加」を押すと、ストアのメタフィールドを条件分岐に使用することが可能となります。

続いて、Value(値)を選択します。

Value(値)を選択

最後に、実際に「何時から何時の間を条件としたいか」に合わせて設定します。

画像では、”9時〜21時59分の間”と”22時〜8時59分の間”で分岐させるため、2つの条件を”および”(And)で並べて設定しています。

2つの条件をAndで並べて設定

注意:メタフィールドの更新反映にラグがある可能性を考慮してください

メタフィールドの更新には、数秒〜1分程度時間がかかる可能性があります。1分程度の誤差が発生する可能性もあることを考慮してください。

※もし、安全側に倒したいなどある場合は、時刻更新ワークフローのスケジュールトリガーの発火時間を毎時58分や59分とし、格納する値も1時間増やして {{ “now” | date: “%s” | plus: 36000 | date: “%H” }} としてください。

設定手順の解説は以上です!

記事の締めくくりに、実際の活用例を2つご紹介します。

活用例①:マーケティング系のメッセージの夜間配信を除外する

ワークフローの完成イメージ

在庫の追加や価格の変更を日付ベースで制御しており、00時00分(深夜0時)に商品のマークダウンが実施されることがある場合などに、再入荷系のアプリのトリガーが同様に00時00分に発火してしまう(再入荷通知のLINE配信が深夜に実行されてしまう)ことがあります。

本記事で紹介した時間制御条件ブロックを追加することで、特定の時間(上記画像内では9時~21時59分)に発火したワークフローのみ実行し、それ以外の時間(上記画像内では22時〜8時59分)に発火したワークフローは実行されないように制御できます。これにより、深夜のLINE配信は実行されないよう制御可能です。

なお、活用例①で紹介した方法では、夜間に発火した再入荷通知フローはそのまま実行されず、無かったことになります。「夜間に発火したワークフローは、日中まで待機して配信したい」場合は、活用例②のようにWaitを挟んでください。

※再入荷通知はCV率も高い施策ですが、その分エンドユーザー様の熱量も高い配信のため、「日中まで待機して配信すると、配信した頃にはすでに売り切れていた」といったことも発生しかねません。活用例②のようなWaitを挟むかは、各自でご判断をお願いします。

活用例②:夜間に発送処理された注文の通知を日中に配信する

ワークフローの完成イメージ

ロジ系のアプリ・サービスが夜間に発送処理を行うことで、発送完了系のトリガーが夜間に発火する例は少なくありません。夜間にトリガーが発火した場合は12時間待機を挟むことで、トリガーの発火時間に関わらず日中に配信されるように制御するワークフロー設定例です。

条件ブロックの “それ以外の場合(Otherwise)”にWaitアクションを繋ぐことで、12時間待機をするよう設定しています。

12時間待機をするよう設定

おわりに

Shopify Flowで構築したワークフローに「トリガーの発火時間ごとの制御」を追加する方法をご紹介しました。

Flowはとても便利ですが、詳しく触ってみないと気づけない落とし穴もあったりします。

弊社が提供しているLINE連携Shopifyアプリ「CRM PLUS on LINE」では、本記事で紹介したような、LINE配信に関連する様々なFlowの構築サポートを無料で行なっています。お困りの際はぜひお声がけください!

川井悠高

株式会社ソーシャルPLUS CSチーム
LINE連携Shopifyアプリ「CRM PLUS on LINE」のカスタマーサクセスとして、導入時~導入後の活用まで幅広くサポート。LINE株式会社のTechnology Partnerとしての実績・知見をもとに、ID連携をベースにしたLINE活用や、ワークフローの自動化アプリ「Shopify Flow」との連携による配信自動化支援も積極的に行っています。

Shopify LINE連携TIPS
タイトルとURLをコピーしました