発送通知の仕組み

マルチロケーション環境での出荷情報同期と顧客への自動通知

発送通知追跡番号配送会社マルチロケーション出荷管理
読了時間: 11分

背景

ShopifyとNextEngineの標準連携では、NextEngineで出荷処理を行うと、自動的にShopifyへ出荷情報が登録され、お客様に発送通知メールが届きます。しかし、Shopifyに複数のロケーション(倉庫)を設定すると、この標準連携も動作しなくなります。

本記事では、マルチロケーション環境でも発送通知を維持するために構築した仕組みを解説します。

なぜ独自実装が必要なのか

標準連携が使えない状態では、NextEngineで出荷処理をしてもShopifyには反映されません。つまり:

  • お客様に発送通知メールが届かない
  • Shopify管理画面で出荷状況が更新されない
  • 追跡番号がお客様に伝わらない

これらを解決するため、NextEngineの出荷データを取得してShopifyへ登録する仕組みを独自に構築しました。

標準連携(単一ロケーション)
NextEngine

出荷確定

標準連携
Shopify

マルチロケーションで動作しなくなる

顧客

通知

本システム(マルチロケーション対応)
NextEngine

出荷確定

定期取得
本アプリ

マルチロケーションでも動作

API
Shopify → 顧客

通知

出荷情報同期の仕組み

定期的なデータ取得

本システムでは、定期的にNextEngineから出荷確定データを取得し、Shopifyへ出荷情報を登録します。標準連携のようにリアルタイムではありませんが、30分程度の間隔で同期されます。

運営者はNextEngineで通常どおり出荷処理を行うだけで、お客様への通知は自動で行われます。

配送会社と追跡番号の自動紐付け

Shopifyに出荷情報を登録する際、配送会社と追跡番号を正しく設定する必要があります。NextEngineに入力された配送会社名から自動的に判別し、追跡URLも生成します。

営業時間内のみの自動実行

深夜や早朝にシステムを動かしても意味がないため、営業時間に合わせて動作時間を設定できるようにしました。

データフローの全体像

出荷情報同期フロー
営業時間チェック

平日 8:00-21:00 のみ実行

ロック取得

同時実行防止、25分TTL

出荷データ取得

前回同期時刻以降のデータを取得

店舗フィルタリング

複数店舗対応

各注文を処理

追跡番号確認・重複チェック・配送会社判定

Shopify API登録

出荷情報を登録 → 顧客に自動通知

同期時刻更新

統計を記録

配送会社の自動判定

システムは配送会社名のキーワードから自動的に判定し、追跡URLを生成します。

国内配送会社

ヤマト、yamato、宅急便、クロネコ
配送会社ヤマト運輸
追跡サイトkuronekoyamato.co.jp
佐川、sagawa
配送会社佐川急便
追跡サイトsagawa-exp.co.jp
日本郵便、ゆうパック、japan post
配送会社日本郵便
追跡サイトpost.japanpost.jp
西濃、seino
配送会社西濃運輸
追跡サイトtrack.seino.co.jp
福山、fukuyama
配送会社福山通運
追跡サイトcorp.fukutsu.co.jp

国際配送会社

dhl
配送会社DHL
追跡サイトdhl.com
fedex
配送会社FedEx
追跡サイトfedex.com
ups
配送会社UPS
追跡サイトups.com

処理結果のステータス

各注文の処理結果は以下のいずれかに分類されます:

OK
意味正常完了
発生条件Shopifyへの出荷情報登録・通知が成功
SKIP
意味スキップ
発生条件すでに処理済み、または出荷情報が既に登録済み
PENDING
意味保留
発生条件追跡番号が未入力(後日再処理)
ERROR
意味エラー
発生条件Shopifyで注文が見つからない、API呼び出し失敗など

ウォーターマーク方式による効率化

毎回すべての出荷データを取得するのではなく、「前回取得した最新の出荷日時」を記録しておき、それ以降のデータのみを取得します。

ウォーターマーク方式
初回実行

全データ取得

最新日時を記録

ウォーターマークとして保存

2回目以降

前回記録した日時以降のデータのみ取得

最新日時を更新

API呼び出し回数を最小化・処理時間を短縮

営業時間の判定ロジック

営業時間外にシステムを動かしても意味がありません。以下のロジックで実行を制御しています:

営業時間判定
現在時刻を日本時間に変換

タイムゾーン変換

曜日・時刻チェック

実行可否を判定

土曜・日曜
実行しない
8:00より前
実行しない
21:00以降
実行しない
平日 8:00-21:00
実行する

この設定は店舗ごとにカスタマイズ可能です。土日も営業する店舗では、週末も実行するように設定できます。

重複処理の防止

同じ出荷に対して通知が2回送られてしまうのを防ぐため、処理済みの出荷を記録しています。

判定に使用するのは以下の3つの情報を組み合わせたハッシュ値です:

  • 注文ID
  • 出荷日時
  • 追跡番号

この組み合わせが一致する処理は、すでに完了しているとみなしてスキップします。記録は90日間保持され、それ以降は自動的に削除されます。

標準連携との違い

マルチロケーション
標準連携× 動作しない
本システム○ 動作する
同期タイミング
標準連携リアルタイム
本システム定期(30分程度)
配送会社の対応
標準連携限定的
本システムカスタマイズ可能
ログ
標準連携確認困難
本システム詳細に記録

注意点

追跡番号が未入力の場合

NextEngineで追跡番号を入力せずに出荷確定した場合、その注文は「PENDING」状態となります。追跡番号が入力されると、次回の同期で自動的に処理されます。

配送会社が判定できない場合

登録されていない配送会社名の場合、追跡URLなしで通知が送られます。新しい配送会社を追加する場合は、キーワードとURLのマッピングを設定に追加します。

同期タイミングについて

標準連携と異なり、リアルタイムではなく定期的な同期となります。出荷処理からお客様への通知までに最大30分程度のタイムラグが発生しますが、運用上は問題ないレベルです。

まとめ

マルチロケーション環境では標準の発送通知機能が使えなくなりますが、NextEngine API と Shopify API を組み合わせることで、同等の自動通知を実現できます。

独自実装により、配送会社の追加やログの確認など、標準連携では難しかった柔軟な運用が可能になりました。

関連記事