📦

Shopify Flowでちょっと複雑な出荷指示を自動化

2023/01/06に公開

自己紹介

こんにちは。Team DELTAの石井陽子(いしいようこ)です。
元SE、現在はプロマネやらディレクターやら、情シスっぽい動きとか、品質管理やテスターから業務プロセス管理まで、とにかくがっつりした環境構築を要するコーディング以外の開発業務は、ほんとになんでもやっています。

▼参考記事:DELTAって?
https://note.com/delta_sevenrich/n/n15f551a4d7a5

サマリ

ECサイトの運用業務の中で、ShopifyおよびLOGILESSのデフォルト機能だけでは微妙に自動化できていなかった箇所を、Shopify Flowで自動化しました。

Shopify Flow

Shopify FlowはEコマースのオートメーションプラットフォームで、ストア内やさまざまなアプリ間のタスクや処理を手軽に自動化するうえで役立ちます。

参照:Shopifyヘルプセンター「Shopify Flow」

例えば、特定の注文があったら社内のSlackに通知を出したりなど、ECにまつわる業務の自動化を簡単に行うことができます。

もともとShopify PLUSプランという上位プランでないと利用できなかったのですが、2021年6月22日にShopifyスタンダードプランでも利用できるようになりました。
これにより様々な業務の自動化ができるようになったのでとても助かっています。

やりたいこと

定期便を提供しているECサイトにて、配送箱サイズ×購入形態×定期便継続回数から、利用する配送箱を変更する。
この「どの配送箱を使うか」の出荷作業指示を、委託先の倉庫に伝わるよう各受注データの特記事項に追記したい。

倉庫とのやり取りで利用しているのは、EC自動出荷システムのLOGILESS。

出荷箱指示のパターンは以下の通り。
箱在庫数の影響で、地味に複雑です。

配送箱サイズ 購入形態 定期便継続回数 利用したい箱
60サイズ 通常購入 - 新デザイン60サイズ
60サイズ 定期便 1回目 新デザイン60サイズ
60サイズ 定期便 2回目以降 旧デザイン60サイズ
80サイズ 通常定期いずれも - 新デザイン80サイズ
100サイズ 通常定期いずれも - 100サイズ(新旧なし)
2箱サイズ 通常定期いずれも - 手動対応(スタッフで受注を見て手作業で入力)

課題

以下2点の事象により、「意図した配送箱サイズの情報」をLOGILESSに渡せていませんでした。

  • Shopifyが自動で判定する配送箱サイズの表記(値)がたまにバグる
    • でも請求している送料は正しい。謎。
  • 定期便の場合、60サイズ・100サイズといった表記ではなく「Subscription Shipping」になる場合がある

ソリューション

各受注の合計重量の値は正しいので、この値をもとに配送箱サイズを割り出し、受注にタグ付けする。
このタグをもとに、LOGILESS側でマクロを組み、配送箱指示の特記事項欄追記を自動化する。

定期便継続回数のタグはすでに運用できているので、意図した配送箱サイズの判定と、LOGILESSへその情報を渡すところがキモでした。

作ったもの

Shopify Flowで受注データの重量情報より、配送箱サイズの理論値を割り出し、受注データにタグ付け

Shopify Flowの実装内容

LOGILESSのマクロで、箱サイズ×定期便継続回数タグをもとに特記事項を追記

こんな感じで判定パターンごとにマクロを入れました
LOGILESSマクロの設定一例

念のため、イレギュラーパターンもキャッチ。
箱サイズなかったときのマクロ

できたもの

▼Shopifyのテスト受注にちゃんとタグがついて…
Shopifyテスト受注のタグ

▼LOGILESSのマクロが自動判定して自動処理してくれる
ロジレステスト受注の特記事項

いい感じですね。

所要時間

3時間くらい。
実装自体はそんなに時間かからなかったのですが、全パターンのテスト受注入れたり、LOGILESS連携したりに1.5時間くらい使いました…

つまづいた部分

受注の重量値がどのフィールドに入っているか見つけられない

実際のShopify上のGUIの印象で、「Order / Shipping Line / Delivery Category」(どの配送料ルールが適用されたか)の並びに総重量も値が入っているとアタリをつけ、ずっと「Shipping Line」周辺を探していました。

▼管理画面上での表示。「Delivery Category」が「Subscription Shipping」の例
管理画面の表示

答えは、1階層上の「Order / Total Weight」でした。言われてみればそりゃそうかもしれんが…Shipping Lineの並びにいると思いこんでたよ…私の思い込みの問題なんですが…

開発者ドキュメントが英文なのと、それに応じた検索のしづらさで地味に時間を溶かしました。

重量値の判定時の単位が、設定時と異なる

設定 > 配送と配達 上では「キログラム」で設定させられているのに、実際に渡ってきてる値がグラムでした。(1.6以下、とかで設定してたら1600がわたってきてた)
商品の重量設定もキログラムでしかできないのに…

これはテスト中にさすがに「なんでやねん」って声が出ました。(筆者は関西人)
きっと各国の重量単位等の問題で、処理上はグラムで渡ってるんでしょうね。

Shopify Flow上でデバッグできないのは、地味に辛いですね。
ただ、実行ログがかなり親切なので、早々に気づけて助かりました。なんかあったらログ見よう、ログ。

最後に

Shopify Flowが解禁されたので、このほかにも対象者限定のプレゼントキャンペーンや同梱物のお届けが自動化できました。
その他にも自分たちの業務を自動化できる部分がないか、日々業務や活用例にアンテナを立てています。

ただ、テンプレート等を利用せずに意図した実装をするには、英文の開発者ドキュメントを読む必要があったり、どの値がどこに入っているかの嗅覚が必要です。
Shopify Flowの民主化はまだまだ遠そうですが、テンプレの利用や私の実装物の使いまわしをとっかかりにして、少しずつでも非エンジニアの方が活用できるようになるといいな~と思っています。

We are hiring!

現在DELTAでは、一緒に働く仲間を募集中です。
DELTAはインハウスのエンジニアチームのような側面をもちながら、自分たちの武器を事業として成長させていくこともできる二面性をもつエンジニアチームです。

今回はローコードでサクッと業務自動化した事例をご紹介しましたが、その他にも様々なお仕事があります。
様々なことにチャレンジしたい!という方はぜひこちらからご連絡ください!
正社員のみならず、副業や業務委託でのお仕事も大歓迎です!!

Discussion