eコマース自動化ソリューション Shopify Flow の使い方
Shopify Flowは Shopify社が提供するアプリで、ストア内およびアプリ全体のタスクとプロセスを自動化できるeコマース自動化プラットフォームです。ストアのイベントを監視し、特定の条件を満たした場合に自動的に実行されるアクションをあらかじめ設定しておくことで、業務の効率化を図ることができます。言わばルールベースのRPAですね。
Trigger, Condition, Action
Shopify Flowの事前定義(ワークフローと呼ばれます)は下記のパターンに従います。
Trigger |
トリガーはワークフローを開始するためのストアまたはアプリで発生するイベントです。 |
Condition |
アクションを実行するための条件を設定します。 |
Action |
ShopifyFlowで実行したい Shopifyへの変更内容を定義します。 |
ワークフロー作成時の留意事項
ワークフローを作成する前に次の考慮事項を確認してください。
・ワークフローはできるだけ早く実行されます。ただしトリガーがワークフローを開始してからアクションが完了するまでに遅延が生じる場合があります。ワークフロー完了にかかる時間は定義されていません。
・注文、製品、または顧客に関連付けられたタグが250を超える場合、タグを含む条件を含むワークフローが機能しない可能性があります。
・ワークフローを手動で実行することはできません。すべてのワークフローは Flowまたはアプリからのトリガーで開始する必要があります。ただしストアオーナーが Shopify管理画面から、個々の注文、下書き注文、顧客、または製品に対して手動で実行することができます。
【アプリ】Shopify Flowの基本
前述の Trigger、Condition、Actionを設定するだけです。該当するイベントが発生し、条件に合致したとき Actionに指定した処理が自動的に実行されます。例えば、注文発生時に特定の商品が購入されている場合に注文情報に特別なタグをつけることで、後のデータ抽出や集計・分析などのシーンで作業が楽になります。なお、このようなワークフローのテンプレートが多数用意されているので、テンプレートをカスタマイズして利用することが多いでしょう。
ワークフローの作成手順
ワークフローの作成
Shopifyのダッシュボードのメニューで「アプリ管理」をクリックし、表示されたアプリの一覧から「Shopify Flow」を選択して、Shopify Flowの画面を表示します。そして「ワークフローを作成」ボタンをクリックします。
テンプレートから事前定義されたワークフローを作成することも可能ですが、今回は手動でのワークフロー作成を行うため「トリガーを選択」ボタンを押下します。
トリガーの選択
Shopify Flowで事前に定義されているイベントから「Trigger」となるイベントを選択します。
Shopifyのイベントには下記のものがあります。また、これ以外に「その他のアクションを増やす」でパブリックアプリのイベントを追加することもできます。
Collection created |
コレクションが作成された |
Collection deleted |
コレクションが削除された |
Customer account disabled |
顧客のアカウントが無効になった |
Customer account enabled |
顧客のアカウントが有効になった |
Customer Created |
新規顧客が作成された |
Customer deleted |
顧客が削除された |
Draft order created |
下書き注文が作成された |
Draft order deleted |
下書き注文が削除された |
Fulfillment created |
フルフィルメントが作成された |
Fulfillment event created |
フルフィルメントイベントが作成された |
Inventory item created |
在庫アイテムが作成された |
Inventory item deleted |
在庫アイテムが削除された |
Inventory quantity changed |
在庫数量が変わった |
Order cancelled |
注文がキャンセルされた |
Order created |
注文が作成された |
Order deleted |
注文が削除された |
Order fulfilled |
注文がフルフィルメントされた |
Order paid |
注文が支払われた |
Order reader to fulfill |
在庫がありリスク分析済みで、注文のフルフィルメントが可能になった |
Order ridk analyzed |
注文がリスクありと分析された |
Order transaction created |
注文取引が作成された |
Product added to store |
商品が追加された |
Product deleted |
商品が削除された |
Product status updated |
商品のステータスが更新された |
Product variant added |
商品のバリエーションが追加された |
Product variant deleted |
商品のバリエーションが削除された |
Refund created |
返金が作成された |
Sunscription Contract Created |
サブスクリプション契約が作成された |
Tender transaction created |
マーチャントと顧客の間で金銭の受け渡しが行われた後、入札取引イベントが発生したとき |
今回は「Order Created」のイベントを選択しました。右下の「Output」の横の(+)をクリックすると下図のように後続条件が示されます。「Condition」を設定するために「条件」を選択します。
コンディションの設定
「Condition」を選択します。
「基準を追加する」を選択します。複数の条件をすべて満たす必要がある場合は「すべての条件が満たされている場合」を、複数の条件のうちの1つでも条件を満たせばよい場合は「いずれかの条件が満たされている場合」を選択します。
続いて表示される選択肢より利用する条件項目を設定します。表示項目は、ストアから取得できるデータで、GraphSQL Admin APIから抽出されます。詳細は下記のサイトをご覧ください。
データ(オブジェクト)を選択します。
例えば、Orderの場合は下記のようなオブジェクト(データ)を条件にすることができます。
agreements |
注文に関する販売契約のリスト |
alerts |
管理画面の注文に表示されるメッセージ |
app |
注文を作成したアプリケーション |
billingAddress |
顧客の支払住所 |
billingAddressMatchsShippingAddress |
顧客の支払住所と配送住所が合致するかどうか |
canMarkAsPaid |
注文を手動で支払済みとマークするかどうか |
canNotifyCustomer |
注文に顧客のメールアドレスが存在するかどうか |
cancelReason |
注文キャンセルの理由 |
cancelledAt |
注文キャンセルされたときの日時 |
capturable |
支払が回収可能かどうか |
cartDiscountAmountSet |
返品前の注文単位での割引額 |
channelInformation |
注文を作成したチャネルの詳細 |
clientIp |
注文を作成した APIクライアントのIPアドレス |
closed |
注文がクローズしているかどうか |
closedAt |
注文がクローズした日時 |
confirmed |
注文に対する在庫が確保されているかどうか |
createdAt |
注文が作成された日時 |
currencyCode |
注文が作成されたときのショップの通貨 |
currentCartDiscountAmountSet |
注文が更新されたときの注文単位の割引額 |
currentSubtotalLineItemsQuantity |
注文の小計金額に対する商品数量の合計 |
currentSubtotalPriceSet |
割引および返品後の全商品の価格合計 |
currentTaxLines |
返品後の全商品に適用される税金のリスト |
currentTotalDiscountsSet |
返品後の注文の割引額合計 |
currentTotalDutiesSet |
返品後の関税の合計額 |
currentTotalPriceSet |
返品後の注文金額合計 |
currentTotalTaxSet |
全商品に適用される税金合計 |
currentTotalWeight |
返品後の商品重量合計(グラム) |
customAttributes |
注文に追加されたカスタム属性のリスト |
customer |
注文主 |
customerAcceptsMarketing |
顧客がマーケティングに同意したかどうか |
customerJourneySummary |
注文前にストアに来ていたかどうか |
customerLocale |
顧客のロケール(例 ja-JP) |
discountApplications |
注文に適用される割引のリスト |
discountCode |
注文に使われた割引コード |
displayAddress |
顧客のプライマリの住所 |
displayFinaicialStatus |
マーチャントに表示可能な注文の財務状態 |
displayFulfillmentStatus |
マーチャントに表示可能なフルフィルメント状態 |
disputes |
注文に関する係争のリスト |
edited |
注文が編集されたかどうか |
email |
顧客に紐づいたメールアドレス |
estimatedTaxes |
税金が見積もられたかどうか |
events |
注文に紐づいたイベント |
fulfillable |
全商品がフルフィルメント可能かどうか |
fulfillmentOrders |
フルフィルメントのリスト |
fulfillments |
配送のリスト |
fullyPaid |
すべての支払が済んでいるかどうか |
hasTimelineComment |
タイムラインコメントを追加したかどうか |
id |
全世界でユニークなID |
legacyResourceId |
REST Admin APIの対応するリソースID |
lineItems |
注文明細のリスト |
localizationExtensions |
リソースのローカライズ拡張のリスト |
merchantEditable |
マーチャントによって編集可能な注文かどうか |
merchantEditableError |
注文を編集できない理由 |
metafieldDefinitions |
メタフィールドの定義 |
metafields |
リソースに属するメタフィールドのリスト |
name |
管理画面の注文を識別する一意の値(例 #1001) |
netPaymentSet |
注文金額から返金金額を差し引いた純支払額 |
nonFulfillableLineItems |
フルフィルメントできない商品明細のリスト |
note |
注文に紐づけられた備考 |
originalTotalDutiesSet |
返金前の関税合計 |
originalTotalPriceSet |
注文作成時の注文金額合計 |
paymentCollectionDetails |
注文の代金回収の詳細 |
paymentGatewayNames |
注文のペイメントゲートウェイのリスト |
paymentTerms |
注文に紐づけられた支払条件 |
phone |
顧客に紐づけられた電話番号 |
physicalLocation |
注文作成時にアサインされたロケーション |
presentmentCurrencyCode |
顧客の支払通貨コード |
privateMetafields |
リソースに属するプライベートメタフィールド |
processedAt |
注文が処理された日時 |
publication |
注文が作成された刊行物 |
refundDiscrepancySet |
返金の提案額と実際の返金額の差額 |
refundable |
返金可能かどうか |
refunds |
実際の返金額の内容 |
registeredSourceUrl |
注文の発信元URL |
requiresShipping |
出荷が必要な注文かどうか |
restockable |
注文のどの商品も再入荷可能かどうか |
riskLevel |
不正リスクのレベル |
risks |
注文に紐づけられたリスク |
shippingAddress |
顧客の送り先 |
shippingLine |
送料の合計 |
shoppingLines |
配送の明細 |
sourceIdentifire |
一意のPOSまたはサードパーティ注文の識別子 |
subtotalLineItemsQuantity |
明細の商品数量の合計 |
subtotaPriceSet |
返品前かつ割引後の明細金額合計 |
suggestedRefund |
返金の提案額 |
tags |
注文に紐づけられたタグのカンマ区切りのリスト |
taxLines |
税金明細 |
taxesIncluded |
明細合計に税金が含まれているかどうか |
test |
テスト注文かどうか |
totalCapturableSet |
回収不可または回収不足と認められた額 |
totalDiscountsSet |
返品前の割引総額 |
totalOutstandingSet |
注文の未取引の合計金額(売掛金・買掛金) |
totalPriceSet |
返品前の注文金額合計 |
totalReceivedSet |
顧客から受け取った返品前の合計金額 |
totalRefunedSet |
返金金額合計 |
totalRefundedShippingSet |
返金された送料合計 |
totalShippingPriceSet |
返品、割引前の送料合計 |
totalTaxSet |
返品前の税金合計 |
totalTipReceivedSet |
チップの合計 |
totalWeight |
返品前の商品重量の合計 |
transactions |
注文に紐づけられたトランザクションのリスト |
unpaid |
注文に対する支払が行われてないかどうか |
updatedAt |
注文の最終更新日時 |
条件を設定します。下図はオブジェクトに「lineItems」の「name」を選択した状態です。
比較演算子としては次のものが選べます。後続の入力フィールドに指定した値との比較方法を示すものです。
Equal to |
~と等しい |
Not equal to |
~と等しくない |
Includes |
~を含む |
Does not include |
~を含まない |
Any of |
~のいずれか |
Not any of |
~のいずれでもない |
Starts with |
~で始まる |
Does not start with |
~で始まらない |
Ends with |
~で終わる |
Does not end with |
~で終わらない |
そして値を設定します。例えば、商品名に「非売品」が含まれる商品を条件にする場合は下記のように設定します。
オブジェクト |
lineItems_item.name(Order→lineItems→nameを選択) |
比較演算子 |
includes |
値 |
非売品 |
複数の条件を設定する場合は「基準を追加」を選択します。条件追加が不要な場合、「Then」か「Otherwise」を選択し、「Action」の指定を行います。なお、「Otherwise」は条件に該当しない場合を示します。
アクションの設定
続いてアクションの設定です。前述の条件を満たしたときに実行する命令を選択して、オプションを指定します。アクションには下記のものがあります。
Add customer tags |
顧客にタグをつける |
Add draft order tags |
下書き注文にタグをつける |
Add order line item |
注文に商品を追加する |
Add order tags |
注文にタグをつける |
Add product tags |
商品にタグをつける |
Add product to collections |
商品をコレクションに追加する |
Archive order |
注文をアーカイブする |
Cancel order |
注文をキャンセルする |
Capture payment |
支払を回収する |
Create redirect URL |
ストアフロントの訪問者にリダイレクトURLを作成する |
Delete redirect URL |
合致するリダイレクトURLを削除する |
Hide product |
商品を非表示にする |
Hold Fulfillment Order |
特定の注文のためすべてのフルフィルメント注文を保留する |
Mark order as paid |
注文を支払済みにする |
Prepare shipping labels |
出荷ラベルのドラフトを作成する |
Publish product |
商品を有効にする |
Remove collection metafields |
コレクションのメタフィールドを削除する |
Remove customer metafields |
顧客のメタフィールドを削除する |
Remove customer tags |
顧客のタグを削除する |
Remove draft order metafields |
下書き注文のメタフィールドを削除する |
Remove draft order tags |
下書き注文のタグを削除する |
Remove order metafields |
注文のメタフィールドを削除する |
Remove order tags |
注文のタグを削除する |
Remove product from collections |
商品をコレクションから削除する |
Remove product metafields |
商品のメタフィールドを削除する |
Remove product tags |
商品のタグを削除する |
Remove product variant metafields |
商品バリエーションのメタフィールドを削除する |
Remove shop metafields |
ショップのメタフィールドを削除する |
Send HTTP request |
HTTPリクエストによりアプリなどに接続する |
Send email |
メールを送信する |
Send fulfillment request |
フルフィルメントをサポートする品目について選択されたサービスにフルフィルメントを要求する |
Unarchive order |
アーカイブされた注文を戻す |
Update collection metafields |
コレクションのメタフィールドを更新する |
Update customer metafields |
顧客のメタフィールドを更新する |
Update draft order note |
注文の備考を更新する |
Update order metafields |
注文のメタフィールドを更新する |
Update product metafields |
商品のメタフィールドを更新する |
Update product variant metafields |
商品バリエーションのメタフィールドを更新する |
Update shop metafields |
ショップのメタフィールドを更新する |
Wait |
指定した時間だけ待機する |
下図は条件を満たしたときに注文の備考欄にあらかじめ決められた文言を追加するアクションを選択した場合の画面イメージです。「Note」に任意の文字列を入力して、最後に「ワークフローをオン」ボタンをクリックすると、ワークフローが有効になります。
以上が Shopify Flowの簡単な説明と設定方法です。
ワークフローは実行の際に遅延が発生する場合があることや、あらかじめ定義されているアクションしかできないこと、選択肢などがすべて英語なので、英語に抵抗のある方は敷居が高いなど、少しもどかしいところもあります。また、自動化というのは、店長のお仕事の負担を軽減できる反面、設定を誤ると事故にも繋がりかねませんので、注意して設定する必要があります。まずは上記の例のように、注文の備考欄に文言を追加する等の、ストアのお客様に直接影響することのない設定で十分に試したうえで次のステップに進むことをおすすめします。