Shopifyストアを運営する中で、期間限定商品やセール品の公開終了処理は、意外と手間のかかる作業です。手動での対応は、更新漏れやミスの原因となり、機会損失や顧客からの信頼低下に繋がりかねません。
このような定型的な商品管理タスクは、Shopify Flow を活用することで自動化が可能です。Shopify Flowは、ストア内の様々なイベントをトリガーに、特定のアクションを自動実行させるためのノーコードツールです。
本記事では、Shopify Flowを用いて「特定のカテゴリに属する公開中の商品を、指定した日時に自動で下書きステータスに変更する」ワークフローの構築手順を、具体的な設定画面の例を交えながら解説します。
この設定により、手作業による更新の手間とリスクを削減し、より効率的なストア運営を実現しましょう。
※完成版のflowです。
Step 1: ワークフロー実行のタイミングを設定する【トリガー: Scheduled time】
最初に、この自動化プロセスをいつ実行するかを定義します。Shopify Flowでは、ワークフロー開始の契機となる条件を「トリガー」と呼びます。
今回は「指定した日時に実行する」ことが要件ですので、「Scheduled time (スケジュールされた時刻)」トリガーを選択します。
ここで、ワークフローを実行したい具体的な日時、または定期的なスケジュール(例:毎週月曜日の午前10時)を設定します。セールの終了時刻やキャンペーンの切り替えタイミングに合わせて設定するのが一般的です。
Step 2: 処理対象の商品データを特定する【アクション: Get product data】
トリガーが起動した後、次に「どの商品を下書きにするか」を特定する必要があります。この役割を担うのが「Get product data」アクションです。
このアクションは、ストアの商品データベースから情報を取得します。しかし、全商品を取得するのではなく、特定の条件に合致する商品のみを抽出するために「クエリ (Query)」を使用します。クエリは、データベースに対する検索条件を指定する命令文です。
今回のシナリオでは、以下の条件で商品を絞り込む必要があります(実際の値はストアの運用に合わせてください)。
- 商品カテゴリや販売元:
product_type:'セール品'
やVender:'ブランド名'
など、対象商品を識別できる条件を指定します。 - 現在のステータス:
status:'active'
を指定し、現在公開中の商品のみを対象とします。
クエリを適切に設定することで、意図した商品群のみを後続の処理対象とすることができます。条件指定が漏れると、対象外の商品まで下書きにしてしまうリスクがあるため、慎重に設定しましょう。
Step 3: 取得した各商品を個別に処理する【アクション: For each loop】
「Get product data」で取得した商品リストには、複数の商品が含まれる可能性があります。一方で、後続の「Update product status」アクションは、原則として一度に一つの商品しか処理できません。
そこで、「For each loop (iterate)」アクションを利用します。これは、リスト内の各アイテムに対して、同じ処理を順番に繰り返すための制御構造です。
「For each loop」は、「Get product data」から商品リストを受け取り、リスト内の商品を一つずつ取り出して、ループ内のアクション(今回は商品ステータスの更新など)に渡します。リストに含まれる全商品に対して、漏れなく処理を実行するために不可欠なステップです。
Step 4: 商品ステータスを下書きに変更する【アクション: Update product status】
「For each loop」によって商品データが一つずつ取り出されたら、その商品のステータスを「下書き (Draft)」に変更します。この操作を実行するのが「Update product status」アクションです。
ここでは、どの商品のステータスを変更するかを明確にする必要があります。まず「For each loop」から渡された現在処理中の商品のIDを指定します。これは通常、{{ getProductData.foreachItem.id }}
のような変数として利用可能です。「変数を追加」メニューから選択すると確実です。
「次のものは空白ではなく存在する」とすることで該当の商品すべてを対象にすることができます。
特定の商品だけに絞りたい場合は以下のように、「次のものを含む」を選択し、商品を選択すればOKです。
最後に、変更後の商品ステータスとして「Draft (下書き)」を選択します。
これらの設定により、「For each loop」で処理される有効な商品が、一つずつ確実に「下書き」状態へと変更されていきます。
Step 5: 関係者へ処理完了を通知する【アクション: Send Slack message】
ワークフローによる自動処理が完了したことを、関係者に通知する仕組みを組み込むと、運用の透明性が高まります。「Send Slack message」アクションは、これを実現する有効な手段です。
このアクションでは、以下の主要項目を設定します。
- Channel, or member ID (送信先の指定):
- チャンネル宛:
#チャンネル名
(例:#ec-operation-log
)。注意点: 事前に該当チャンネルへSlackアプリ「Flowbot」を追加しておく必要があります。 - 個人宛 (DM): 相手のメンバーID (
U
またはW
で始まるID) を指定します。メンバーIDは、Slackのプロフィール画面からコピーできます。
- チャンネル宛:
- Message (メッセージ内容):
- 固定テキストと、ワークフロー内の動的な情報(変数)を組み合わせてメッセージを作成します。
- 変数の利用:
{{ getProductData.foreachItem.title }}
で商品名、{{ getProductData.foreachItem.onlineStoreUrl }}
で商品URLなどを挿入できます。 - メンション:
- 個人:
<@メンバーID>
- ユーザーグループ (チーム):
<!subteam^グループID>
(グループIDはメンションをコピーして確認可能 [画像:SlackグループIDの確認方法]) - チャンネル全体:
@channel
/@here
(利用は慎重に)
- 個人:
実際のメッセージ例:
このように設定することで、処理が実行されるたびに、関連チームへメンション付きで具体的な処理内容が通知され、迅速な状況把握と情報共有が可能になります。
まとめ:Shopify Flowによる商品管理の自動化で業務効率を向上
本記事では、Shopify Flowを利用して特定カテゴリの商品を自動で下書きにする具体的な手順を解説しました。
- トリガー設定: 「Scheduled time」で実行タイミングを定義
- データ取得: 「Get product data」とクエリで対象商品を特定
- 繰り返し処理: 「For each loop」で商品を個別に処理
- ステータス更新: 「Update product status」で下書きに変更
- 通知 (推奨): 「Send Slack message」で関係者へ情報共有
これらのステップを組み合わせることで、これまで手作業で行っていた商品管理業務を自動化し、ヒューマンエラーの削減と工数削減を実現できます。
Shopify Flowは、アイデア次第で様々なストア運営業務の自動化に応用可能です。ぜひ、今回の例を参考に、自社ストアの業務効率化に役立ててください。