インドでの配送連携:CSVアップロードと宅配APIの比較
インドでの配送連携:CSVアップロードと宅配APIの違いを比較し、自動化すべき点と手動で残すべき点を判断する実践的チェックリスト付き。

本質は:発送フォローアップを減らすこと
注文数が少ないうちは、スプレッドシートと数回のやり取りで配送更新を回せます。しかし注文が増えると、小さな穴が積み重なり、ラベル発行の遅れ、集荷の取りこぼし、追跡が更新されないといった問題が起きます。
よくあるパターンはこうです:顧客が「注文はどこ?」と聞く → サポートがオペに確認 → オペがポータルをチェック → 誰かが手動で更新(本来は自動で反映されるはず)。
ここで言う「連携」とは、あなたのシステムが配送データを送り出せ(住所、重量、COD、請求額)かつ配送データを確実に取り込める(AWB、集荷確認、追跡スキャン、配達結果)状態を指します。“確実”であることが重要です。毎日問題なく動く必要があり、誰かがファイルをアップロードするのを思い出した時だけ動けば意味がありません。
だからこの比較は重要です:
- CSVアップロードは出発点です。始めやすい反面、時間通りに同じ手順を繰り返す人に依存します。
- フルの宅配API連携は常時稼働バージョンです。出荷作成、追跡取得、例外対応が人手を待たずに行えます。
ほとんどのチームが欲しいのは「もっと技術を入れること」ではなく、遅延や手作業の修正が減り、信頼できる追跡です。フォローアップが減れば、返金や再配送コスト、サポートチケットも減ることが多いです。
実務で配送が失敗する典型的な理由
多くのチームは簡単なルーティンから始めます:集荷を予約し、ラベルを印刷して、追跡IDをシートに貼り、顧客に聞かれたら返信する。低ボリュームなら機能しますが、インドで複数業者やCOD、不安定な住所品質を扱うとすぐに破綻が見えます。
個々の手作業は小さく見えます。誰かが業者を選び、出荷を作り、ラベルをダウンロードし、正しいパッケージに正しいAWBが付くようにする。別の誰かが注文ステータスを更新し、追跡を共有し、CODの配達証を確認する。
よくある失敗点は:
- 間違ったAWBが別の荷物に紐付いてしまい、紛失や返送につながる。
- 再試行やスプレッドシートのコピーで二重出荷が作られる。
- 追跡がタイムリーに更新されず、サポートが答えられず、顧客の信頼を失う。
- 集荷が確認されず、注文は「出荷準備中」のまま放置される一方で業者側では予定がない状態になる。
- COD金額や手数料が一致せず、後で突合作業が発生する。
NDRはNon-Delivery Reportの略で、配達失敗時に発生する報告です(住所誤り、不在、受取拒否、支払い問題など)。NDRは決定を迫るため手間が増えます:顧客に電話するか、住所を直すか、再試行を承認するか、返送として扱うか。
最初に圧力を感じるのはオペです。サポートには怒ったメッセージが届き、ファイナンスはCOD突合で詰まり、顧客はステータスが変わらない沈黙を感じます。
選択肢A:CSVアップロード(得られるものと得られないもの)
CSVアップロードは多くの現場でデフォルトです。ストアやERPから有料注文を出力し、業者や集約サービスのテンプレートに合わせて整形し、ダッシュボードにアップしてAWBとラベルを生成します。
利点は簡潔さです。通常エンジニアの手を借りずに始められ、1日で稼働できます。低ボリュームや配送が予測可能(同じ集荷先、限られたSKU、例外が少ない)なら、日次CSVで“十分”で扱いやすいことが多いです。
問題が起きるのはアップロード後の作業全般です。多くのチームは毎日同じ後処理をする羽目になります:ピンコードや電話形式がテンプレートに合わず失敗行を修正して再アップロード、誤って重複した行のチェック、ストア管理画面への追跡番号のコピペ。
さらに面倒なのは例外対応の追跡です(住所問題、支払い問題、RTOリスク)。メールや電話、業者ポータルをまたいで対応し、業者のダッシュボードがあなたのシステムの一次ソースではないため複数箇所にステータスを更新します。
隠れたコストは時間と一貫性の欠如です。業者ごとに期待する列やルールが違うので「1つのCSV」が複数のバージョンとスプレッドシートの回避策に変わります。更新がリアルタイムでないため、サポートは顧客の苦情があって初めて遅延を知ることが多いです。
選択肢B:フルの宅配API連携(得られるものとコスト)
フルの宅配API連携とは、あなたのシステムと業者のシステムが直接対話することです。ファイルをアップロードする代わりに注文や住所の詳細を自動送信し、ラベルを受け取り、追跡を継続的に取得します。そうなれば配送は日常の作業からインフラのように信頼できる挙動になります。
得られるもの
多くのチームは3つの主要機能のためにAPI連携を始めます:予約(booking)、ラベル、追跡。典型的な機能は、出荷を作って即座にAWBを受け取る、ラベルとインボイス情報の生成、集荷リクエスト(対応する業者で)、ほぼリアルタイムでの追跡スキャンの取得などです。
これらが整えば、住所問題やNDRステータス更新の扱いもきれいになります。
見返りは明確です:出荷が速くなり、コピー&ペーストミスが減り、顧客への更新が明瞭になります。たとえば注文が午後2時に支払われれば、システムが自動で出荷を予約し、ラベルを印刷し、数分で追跡番号を送れるようになります。CSVのエクスポートと再アップロードを待つ必要はありません。
コスト
API連携は「設定して忘れる」ものではありません。セットアップ、テスト、継続的なメンテナンスの時間を見積もってください。
主な労力源は:
- 業者固有のルール(ピンコードの配達可否、重量区分、COD上限など)
- ステータスコードの不一致(ある業者の「RTO initiated」と別業者の「return in transit」など)
- Webhookの信頼性と見逃したイベントに対するリトライロジック
- ラベル形式や書類要件の変更
- サンドボックス環境が本番と完全一致しないこと
これらの差分を初期段階で想定しておけば、セットアップはきれいにスケールします。想定していないと、出荷は予約されたが集荷されない、あるいは追跡イベントのマッピングが間違って顧客に混乱を与える、といった事態になります。
自動化するものと手動のままにするもの(実践的な分け方)
シンプルなルール:1日何度も発生し、小さなミスが大きな手戻りを生む作業は自動化する。
インドでは一般に、予約、ラベル発行、追跡更新の自動化が優先されます。1文字のミスタイプや1回のスキャン漏れが連鎖的なフォローアップを誘発します。
手動が適切な場面もあります。ボリュームが少ないとき、例外が頻繁に起きるとき、業者のプロセスが一貫していないため自動化を信用できないときは手動のままにします。
ワークフロー別の実用的な分け方:
- まず自動化するもの:注文からの出荷予約、ラベル生成と印刷、追跡ステータス取得(ポーリングやWebhook)、NDRアラートと内部キュー、サポート向けの配達確認メッセージ。
- 手動で残すもの(ボリュームが出るまで):エッジケースでの業者選択、電話での集荷変更交渉、リスクの高いCOD再試行の承認、判断が必要な個別住所修正。
構築前の簡単な判断表:
| 要因 | 手動で良い場合 | 自動化の価値が出る場合 |
|---|---|---|
| 日次注文量 | 約20件/日未満 | 50件+/日、または頻繁なピーク |
| 配送業者数 | 1社 | 2社以上または頻繁に切替える場合 |
| SLA圧力 | 3–5日配送が許容 | 翌日配送や高いペナルティがある場合 |
| チームサイズ | 専任のオペ担当者がいる | オペ/サポートが兼務している |
簡単なチェックポイント:チームが同じデータを2回触っている(注文から業者ポータルへコピペし、戻している)なら、その工程は自動化候補です。
追跡イベントチェックリスト:Pickup、In-transit、NDR、Delivered
「荷物はどこ?」を減らしたければ、追跡を単一のステータスとして扱うのではなく、イベントのタイムラインとして扱ってください。インドでは同じ荷物がハブ間を行き来したり、再試行や返送を繰り返したりします。
チームと顧客が同じ物語を見られるように、次の段階を捉えてください:
- Pickup:集荷が予定された時点、試行が行われたか、最終結果(集荷済みか失敗か)。失敗時は業者の失敗理由を保存して、配達員に電話せずとも対応できるようにする。
- In-transit:最初のスキャン(実際の開始を示すことが多い)、主要ハブのスキャン、例外や遅延フラグ、「配達中(Out for delivery)」など。サポートの問い合わせが最も発生するポイントです。
- NDR:NDRが上がったとき、その理由コード、顧客への連絡有無、次に何をするか(再試行予定か返送開始か)。ここは通常時間が勝負です。
- Delivered(または未配達):配達時刻と受領証の詳細(氏名、署名、写真参照など)。“配達失敗”と“返送”は顧客にとって全く違った意味なので別に扱ってください。
各イベントに対して、共通フィールドを保存してください:タイムスタンプ、場所(可能なら都市とハブ)、未加工のステータステキスト、正規化ステータス、理由コード、配送業者参照/AWB。未加工と正規化の両方を保持すると監査や業者とのやり取りが楽になります。
連携前に揃えるべきデータ(後で壊れないために)
多くの配送連携が凡庸な理由で失敗します:電話番号がない、重量が不一致、あるいはどのシステムが真実を持つか決めていない。APIに触る前に、すべての注文で常に持っている最低限のデータを確定してください。
CSVでも使えるベースラインから始めてください。これらのフィールドを確実にエクスポートできなければ、APIはエラーをより速く増やすだけです:
- 注文ID(一意で再利用しない)
- 配送先住所の完全な情報(氏名、ピンコード、都市、州、ランドマーク)
- 電話番号(検証済み形式)とメール(任意)
- 商品・出荷情報(SKU、数量、実重量、可能なら寸法)
- 支払情報(COD金額、前払いフラグ)
次に、業者から何を返してほしいかを定義してください。これらが他のすべての「把手」になります。最低限、出荷ID、AWB番号、業者名/コード、ラベル参照、集荷日やウィンドウを保存してください。
1つの決定が数週間の混乱を防ぎます:出荷ステータスの単一の真実ソースを決めること。チームが業者ポータルを見てシステムを上書きするようになると、顧客には別の情報、サポートには別の情報が見えるようになります。
簡単なマッピング計画で全員を揃えましょう:
- 内部で使うステータスを決める(例:Created、Picked Up、In Transit、Out for Delivery、Delivered、NDR)。
- 各業者のステータスを1つの内部ステータスにマッピングする(詳細が失われても構わない)。
- 未加工の業者ステータス文は別に保存しておく。
- どのイベントが自動でステータス変更できるか、どれが人の判断を要するかを決める。
Koder.aiのようなツールでこれを組み込む場合、これらのフィールドとマッピングを早期にモデル化しておくと、二番目の業者を追加したときにエクスポートや追跡、ロールバックが壊れません。
ステップバイステップ:CSVからAPIへ混乱なく移行する方法
安全なアップグレードは一度に全部切り替えるのではなく、小さな切り替えを積み重ねることです。統合が進む間もオペは出荷を続けられるようにしてください。
1) コードを書く前にスコープを固める
実際に使う業者を選び、今必要なアクションと後で必要なアクションを確認します:出荷予約、追跡、NDR処理、返送(RTO)など。業者ごとにステータス名や提供フィールドが違うので重要です。
2) まず追跡を統合する(読み取り専用)
予約やラベル作成を自動化する前に、追跡イベントを取り込んで注文横に表示してください。これはリスクが低く、荷物作成方法を変えないため安全です。
AWBでイベントを取得できること、AWBが欠けている/間違っているケースを扱えることを確認してください。
3) ステータスをマップし、未加工の真実を保存する
小さな内部ステータスモデル(pickup、in-transit、NDR、delivered)を作成し、業者ステータスをそこにマップします。同時に、受け取った生のイベントペイロードをそのまま保存してください。
「配達済みと表示されているが受け取っていない」という顧客対応では、未加工イベントがあればサポートは迅速に答えられます。
4) NDR自動化は慎重に追加する
簡単な部分から自動化します:NDR検出、キューへの割当、顧客への通知、再試行ウィンドウのタイマー設定。
住所変更や特殊ケースには常に手動の上書きを残してください。
5) その後に予約、ラベル、集荷スケジュールを追加する
追跡が安定したら、APIによる予約、ラベル生成、集荷リクエストを追加します。業者ごとに段階的に導入し、数週間はCSVアップロード経路をフォールバックとして残してください。
実際のシナリオでテストすること:
- NDR後の住所変更
- 再試行がリクエストされたが実行されなかった場合
- RTOが起きてからキャンセルされた場合
- 分割出荷や一部配達
- OTPやPOD詳細がないまま配達スキャンが来るケース
遅延やサポートチケットを生む一般的なミス
多くの配送チケットは単に「荷物はどこ?」ではなく、期待値の不一致です:あなたのシステムはAを示し、業者はBを示し、顧客はCを見ている。これを防ぐにはタイムラインが必要です。
よくある落とし穴は、ステータステキストが均一であると仮定することです。同じマイルストーンが地域やサービス、ハブで異なる語句になることがあります。文字列一致だけでマップするとダッシュボードや通知がズレます。
遅延や余分なフォローアップを生むミス:
- 最新ステータスだけを保存する:イベント履歴を上書きすると、何が起きたかを説明するタイムラインを失います。履歴を保持してください。
- NDRを単一のステータスとして扱う:NDRはプロセスです。理由、取られたアクション、次回試行日が必要です。
- 遅延や順序違いのイベントを無視する:業者はイベントをバッチで送るか、奇妙な順序で送ることがあります。突合作業と安全な更新がないとステータスが行ったり来たりします。
- リトライロジックとレート制限の無視:API呼び出しは失敗します。安全にリトライしないと更新を落とします。リトライが過剰だとレート制限を受けます。
- 運用的なフォールバック計画がない:APIが落ちたとき何をするか決めておいてください。CSVに切り替える、通知を止める、手動レビューでフラグを立てる、など。
簡単な例:顧客が「返送された」と言って電話してきたとき、あなたのシステムに「NDR」しかなければ対応が長引きます。NDR理由と再試行履歴があればエージェントは1回の応答で済ませられます。
「完了」と宣言する前のクイックチェック
統合を成功と呼ぶ前に、オペとサポートが忙しい日に使う方法でテストしてください。業者のステータス更新が遅れたり、必要な詳細が欠けたりすると、更新がないのと同じ問題になります。
少なくとも10件の実注文で「1件の出荷を端から端まで」ドリルを行ってください。異なるピンコードと支払方法(前払い、COD)でテストします。1件を選んで次を計測:
- 現在どこにあるか?
- その前に何が起きたか?
- 次は何をするか?
欠落を見つけるためのチェックリスト:
- 集荷証跡が素早く見える:期待ウィンドウ内に集荷確定が確認でき、“ラベル作成”と“物理的に集荷済み”の違いが分かる。
- NDRが実行可能であること:NDR理由コードと次のステップ(再試行、電話、RTO)が保存され、変更できる。
- タイムラインが見つけやすい:エージェントが1つのAWBの全履歴を30秒以内に引ける(タイムスタンプと位置スキャン含む)。
- 配達が金銭と返送と一致すること:配達済みの荷物はCODの送金レポートや返送データと突合して、週末にファイナンスが追いかける羽目にならない。
- 安全な手動オーバーライドがある:住所修正、配達再スケジュール、別の業者への割当などをでき、すべての手動変更がログに残る。
内部画面を作るなら最初は地味に保ってください:出荷検索ボックス1つ、きれいなタイムライン1つ、ボタン2つ(手動メモ、オーバーライド)。
Koder.aiのようなツールはオペ用ダッシュボードのプロトタイプ作成と、準備ができたらソースコードのエクスポートに役立ちます。必要なら後でKoder.aiを参照してください。
例:D2Cチームが20→150件/日にスケールしたケース
ある中規模D2Cブランドは日20件程度でスタートし、主に1つの都市圏へ出荷していました。配送業者は2社。プロセスは単純:注文をエクスポートして1日2回CSVをアップロードし、追跡番号を管理画面へコピペする。
日150件、配送業者が3社になるとその運用は限界に達します。顧客が「荷物はどこ?」と聞き、サポートは3つのポータルをチェックする必要が出ます。
最も厄介なのはNDRでした。配達試行が失敗して業者から電話が入り、フォローアップがWhatsAppのやり取りになる。再試行が抜け落ち、遅延がキャンセルや返金に繋がります。
彼らはイベントを自動で同期する仕組みに移行しました。これですべての出荷更新が一箇所に集まり、チームはチャットのスクリーンショットではなく単一のキューから動けます。
日常での変化:
- 追跡イベントが自動で注文に同期される(Pickup、In-transit、Out for delivery、Delivered)。
- NDRは理由つきの可視キューを作る(住所問題、顧客不在、支払問題)。
- 再試行のリマインダーが設定時刻に発火し、放置がなくなる。
- サポートは業者ポータルにログインせず最新情報を見られる。
完全に自動化したわけではありません。ピーク時やエッジPINコードでは手動で業者を切り替えます。顧客が住所訂正を電話してきた場合は、再試行を行う前に人が検証します。
次のステップ:スコープを決めてシンプルな最初の版を作る
最初の2–4週間で何が必要かを決めてください。最大の効果は通常、信頼できる追跡と「荷物はどこ?」問い合わせの減少から生まれ、すべての機能を初日に作る必要はありません。
痛みと一致する開始スコープを選んでください:
- 追跡のみ:業者からイベントを取得して顧客とサポートを同期させる。
- 予約+ラベル:出荷を作り、ラベルを生成し、AWBを自動保存する。
- 予約+ラベル+集荷:集荷スケジュールと集荷確認を追加し、オペが配達員を追いかける必要を減らす。
コードを書く前に内部で使う言葉を固めてください。イベントチェックリスト(Pickup、In‑transit、NDR、Delivered)を書き、各業者ステータスを自分たちのステータスにマップしましょう。これを飛ばすと「in transit」バリエーションが五つ生まれ、通知ルールや完了判定が不明確になります。
フェーズで展開(地味に)
安全な展開は:1社の業者、1つのレーン(倉庫)から始め、拡張していくことです。
新フローをCSV運用と並行して短期間稼働させ、オペがAWB、ラベル、追跡を比較できるようにします。API呼び出しが失敗したらブロックするのではなく、手動での予約タスクを作るフォールバックを用意してください。
速く作るが袋小路に入らない
早く進めたいなら、Koder.aiでプロトタイプするのが一案です:イベント格納テーブル、ステータスマッピングルール、小さなオペダッシュボード(注文/AWB検索、最終イベント、次のアクション)を定義します。チームの期待通りに動くようになったら、リトライやロギング、アクセス制御を追加して堅牢化します。
良い最初の版は「完璧」ではなく、1社の業者で端から端まで動き、イベントが整理され、NDRの所有者が明確で、オペが今日何に注力すべきかが分かることです。
よくある質問
CSVアップロードワークフローはいつ「十分」なのか?
CSVアップロードは、注文数が少なく(例えば1日あたり約20件未満)、配送業者が1社で例外が少ない場合には十分です。また、APIが使えないときのフォールバックにもなります。リスクは、アップロード遅れやテンプレート間違い、コピー&ペーストのミスなどの見逃しがサポート問い合わせや出荷遅延につながる点です。
CSVから配送業者APIに移行すべき明確なサインは?
1日50件以上の注文、配送業者が2社以上、またはNDR/再試行が頻繁に発生する場合、配送業者APIへの移行は費用対効果が高くなります。利点は高速な予約とラベル発行、ほぼリアルタイムの追跡、手動更新の削減です。主なコストは設定と継続的な保守(業者ごとの違いとステータスマッピング)です。
どの最低限の注文データを標準化すべきか?
最低限標準化すべき項目:
- 一意の注文ID(再利用しない)
- 配送先の完全な住所(氏名、ピンコード、都市、州、ランドマーク)
- 電話番号(検証済みの形式)とメール(任意)
- アイテム/出荷情報(SKU、数量、重量。可能なら寸法)
- 支払情報(前払いかCODか、COD金額)
これらがエクスポートで不安定だと、APIはCSVより早く失敗を増やします。
配送業者から必ず保存すべき配送データは何か?
少なくとも次を保存してください:
- 配送業者名/コード
- 配送業者の出荷ID(提供される場合)
- AWB番号
- ラベル参照/メタデータ
- 集荷日または集荷ウィンドウ(集荷をリクエストする場合)
これらが追跡取得、突合、サポート対応の「把手」になります。
「荷物はどこ?」の問い合わせを減らすために重要な追跡イベントは何か?
ステータスではなくタイムラインを追跡してください:
- Pickup:集荷予定/試行/確定(失敗時の理由を記録)
- In‑transit:最初のスキャン、主要ハブのスキャン、例外や遅延、Out for delivery
- NDR:NDR発生時(理由コード、顧客に連絡したか、次の対応)
- Delivered:配達時刻と受領証(氏名、署名、写真参照など)
各イベントに対して、タイムスタンプ、場所、未加工のステータス文、正規化したステータス、理由コード、AWBを保持してください。
NDRを混乱させずに扱うにはどうすればよいか?
NDRはワークフローとして扱うべきです:
- NDR理由コードと発生時刻を記録する
- 出荷を内部キューに入れ、担当者を割り当てる
- 決定(顧客に電話、住所修正、再試行、あるいは返送)を記録する
- 次回試行日時と結果を追跡する
住所変更やリスクの高いCOD再試行には手動オーバーライドを残して、オートメーションが悪い循環を作らないようにしてください。
複数の配送業者間でステータスの不一致を避けるには?
小さな内部ステータスセット(Created、Picked Up、In Transit、Out for Delivery、Delivered、NDR、Returned)を定義し、各業者のイベントをそこにマッピングします。同時に未加工の業者ステータス文を別に保存してください。業者はゾーンやサービス種別、ハブで表現が変わるので、文字列一致だけでマップしないことが重要です。
CSVからAPI連携に移行する最も安全な方法は?
段階的に行ってください:
- 追跡イベントをシステムに取り込む(読み取り専用)
- ステータスを正規化して未加工ペイロードを保存する
- NDR検出+キュー+通知(手動オーバーライドを残す)
- 最後に予約、ラベル、集荷リクエストを自動化する
数週間はCSVをフォールバックに残し、出荷が止まらないようにします。
追跡が古くならないようにするための信頼性機能は何を作るべきか?
障害を前提に設計してください:
- 一時的なエラーにはバックオフ付きリトライを使う
- レート制限を考慮してスローダウンする(リクエストを連打しない)
- 遅延や順序の入れ替わったイベントを想定して安全に突合する
- すべてのリクエスト/レスポンスをログに残し、冪等性を保って重複出荷を防ぐ
- APIが落ちたときのオペスフォールバック(手作業タスクや一時CSV実行)を定める
これで追跡が止まってサポートチケットになるのを防げます。
誤ったAWBや重複などの高コストなミスを防ぐには?
プロセスとデータ両方での安全策を取ってください:
- 注文/荷物ごとに一意の出荷キーを生成・強制する
- 予約処理を冪等にして、リトライで二重予約が起きないようにする
- 印刷やスキャン時にAWBと実パッケージが一致しているか確認する運用を入れる
- AWBの再利用をブロックし、重複を自動検出してフラグを立てる
多くの「紛失」はIDの混同から始まり、配送業者の問題ではないことが多いです。