はじめに
ShopifyとNextEngineは、デフォルトで連携機能が提供されています。注文が入れば自動的にNextEngineへ反映され、出荷処理を行えばお客様に通知が届く。通常はこの標準連携で十分に運用できます。
しかし、Shopifyに複数の倉庫(ロケーション)を設定すると、この標準連携が機能しなくなるという問題があります。
複数拠点から出荷したい、倉庫ごとに在庫を分けて管理したい——こうしたビジネス上の要件でマルチロケーションを導入すると、せっかくの自動連携が途切れてしまうのです。
このプロジェクトでは、マルチロケーション環境でも動作する独自の連携アプリを構築し、失われた自動化を取り戻しました。
なぜ標準連携が動かなくなるのか
Shopifyの標準NextEngine連携は、単一ロケーション(倉庫)を前提として設計されています。
1つの倉庫のみ
自動同期OK
倉庫A + 倉庫B
連携が切れる
複数ロケーションを追加した時点で、以下の機能が停止します:
- 注文データのNextEngineへの自動転送
- 出荷完了時のお客様への自動通知
- 在庫数の同期
本プロジェクトで実現したこと
標準連携の代わりとなる独自アプリを構築し、マルチロケーション環境でも以下の自動化を実現しました。
1. 注文データの自動転送
Shopifyで注文が発生すると、Webhookを受信してNextEngineへ自動的にデータを送信。どの倉庫から出荷するかに関わらず、注文情報は確実にNextEngineへ届きます。
2. 発送完了の自動通知
NextEngineで発送処理を完了すると、Shopifyへ出荷情報を自動登録。お客様には追跡番号付きの発送通知メールが届きます。
3. 複数店舗への対応
複数のShopifyストアを運営している場合も、店舗ごとに独立した設定で連携可能。店舗が増えても同じ仕組みで対応できます。
4. スプレッドシート連携
Google Sheetsとの双方向連携により、売上データの自動エクスポートや在庫の一括更新が可能。日々の集計作業を効率化します。
5. 信頼性とエラー対策
認証トークンの自動更新、処理の重複防止、詳細なログ記録など、安定稼働のための仕組みを実装しています。
全体アーキテクチャ
倉庫A・倉庫B からの注文・出荷
注文データ変換・出荷情報同期・重複チェック・エラーハンドリング
受注管理
双方向データ連携
標準連携との比較
| 項目 | 標準連携 | 本プロジェクト |
|---|---|---|
| 単一ロケーション | ○ 動作する | ○ 動作する |
| マルチロケーション | × 動作しない | ○ 動作する |
| 複数店舗対応 | △ 限定的 | ○ 柔軟に対応 |
| スプレッドシート連携 | × なし | ○ 双方向連携 |
| カスタマイズ性 | × 固定仕様 | ○ 要件に合わせて調整可能 |
技術スタック
| カテゴリ | 採用技術 | 役割 |
|---|---|---|
| データ保存 | Vercel KV (Redis互換) | トークン、設定、状態管理 |
| スケジューラ | QStash | 定期実行ジョブの管理 |
| 暗号化 | AES-256-GCM | 認証情報の安全な保存 |
| 外部連携 | NextEngine API | 受注管理システム連携 |
| 表計算連携 | Google Sheets API | スプレッドシート読み書き |
| 認証 | HMAC-SHA256 | Webhook署名検証 |
各機能の詳細
それぞれの機能について、技術的な仕組みを詳しく解説しています。
- 注文連携の仕組み - WebhookからNextEngineへの注文データ転送
- 発送通知の仕組み - 出荷完了時の自動通知フロー
- 複数店舗管理 - 店舗ごとの設定分離と認証情報管理
- スプレッドシート連携 - データの自動エクスポートと在庫同期
- 信頼性設計 - トークン自動更新とエラー対策
まとめ
Shopifyのマルチロケーション機能は、複数拠点での在庫管理や出荷を可能にする便利な機能です。しかし、NextEngineとの標準連携が動かなくなるという制約があります。
本プロジェクトでは、独自の連携アプリを構築することでこの制約を解消し、マルチロケーション環境でも従来と同等以上の自動化を実現しました。