vendor-management について
vendor-managementは、EC運営チーム向けのサプライヤー管理スキルです。事業規模に応じたツール選定と、発注書、入荷、サプライヤーポータル、評価指標の運用を案内します。
主な機能
- 01事業規模に応じたツール選定
- 02発注書の作成と送信
- 03メールやポータルでの注文確認
- 04入荷と差異の記録
- 05サプライヤー評価指標の算出
活用シーン
- 01複数サプライヤーの一元調整
- 02表計算ベースの発注業務の自動化
- 03新しいドロップシッピング業者の登録
- 04四半期ごとのサプライヤー評価
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ finsilabs/ awesome-ecommerce-skills --skill vendor-managementインストール後、Claude Code で/vendor-managementを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
tile.jsonevals/goods-receipt-and-vendor-scorecard/criteria.jsontask.mdevals/po-submission-and-vendor-portal-auth/criteria.jsontask.mdevals/vendor-database-schema-design/criteria.jsontask.md詳細
ベンダー管理
概要
ベンダー管理では、仕入先への発注書の作成と送信、商品の入荷記録、ベンダーのパフォーマンススコアカード(納期遵守率、充足率、不良率)の作成、さらにベンダーが発注書を確認し、追跡番号を提供できる仕入先ポータルの維持を行います。ほとんどの小売事業者では、発注書とベンダーの追跡に QuickBooks/Xero を使用します。小規模な事業では、仕入先ポータルはメールベースのワークフローだけで済む場合もあります。
このスキルを使用する場面
- 5 社以上の仕入先を管理しており、メールベースの調整ではなく一元管理システムが必要な場合
- マーチャンダイジングチームがスプレッドシートで発注書を手作業で作成しており、自動化が必要な場合
- 新しいドロップシッピング仕入先をオンボーディングする際、体系的な連携フローが必要な場合
- 仕入先との四半期ごとのビジネスレビューに向けて、パフォーマンス指標が必要な場合
- 各販売者に独自のダッシュボードが必要となるマルチベンダーのマーケットプレイスを構築する場合
基本手順
ステップ 1:プラットフォームを確認し、適切なベンダー管理ツールを選択する
| ストアの段階 | 推奨ツール | 理由 |
|---|---|---|
| 小規模(売上高 $1M 未満) | QuickBooks Online または Xero +メールベースの発注書 | QuickBooks では発注書、ベンダーへの支払い、基本的な入荷記録を管理できます。ほとんどの小規模事業者には、専用のベンダーポータルは必要ありません |
| 中堅($1M~$20M) | DEAR Inventory(現在の Cin7 Core)または Unleashed | どちらも Shopify/WooCommerce/BigCommerce との連携により、発注書、入荷記録、ベンダースコアカードを管理できます |
| エンタープライズ | NetSuite または Coupa | 承認ワークフロー、仕入先ポータル、コンプライアンス追跡を備えた完全な調達スイートです |
| ドロップシッピング重視 | DSers、AutoDS、または Spocket | 仕入先ごとのドロップシッピングツールについては、@dropshipping-integration スキルを参照してください |
| カスタム | 発注書システムと仕入先ポータルを構築 | 既存ツールでは対応できない独自のワークフローがある場合に適しています |
ステップ 2:EC プラットフォームをベンダー管理システムに接続する
Shopify
Cin7 Core(旧 DEAR Inventory)を使用する場合:
- Shopify App Store、または Cin7 Core の連携設定から Cin7 Core コネクターをインストールします
- Cin7 Core により Shopify の商品と在庫が同期されます。Shopify の在庫数には、Cin7 で「手持ち」として表示される数量が反映されます
- Cin7 Core で「購入」→「追加購入」の順に選択し、発注書を作成します
- Cin7 で商品を受領済みとして記録すると、Shopify の在庫が自動的に更新されます
発注書に QuickBooks Online を使用する場合:
- QuickBooks Online アプリまたは A2X コネクターを使って、QuickBooks を Shopify に接続します
- QuickBooks Online で「経費」→「発注書」の順に選択し、発注書を作成します
- 商品を受領したら、QuickBooks で該当する発注書を開き、「受領」をクリックして入荷を記録します
- 受領後、Shopify の在庫を手動で更新します(または、この処理を自動で行う Cin7 Core を使用します)
WooCommerce
ATUM Inventory Management(発注書モジュール)を使用する場合:
- WordPress.org から ATUM Inventory Management をインストールします(発注書機能には有料版が必要です)
- ATUM →「発注書」→「発注書を追加」の順に移動します
- 仕入先を選択し、商品を追加して、納品予定日を設定します
- ATUM から仕入先に発注書が自動送信されます
- 商品が到着したら、ATUM で発注書を受領済みとして記録します。WooCommerce の在庫が自動的に更新されます
Cin7 Core を使用する場合:
- Cin7 Core →「連携」→「WooCommerce」の順に移動し、連携機能を使って Cin7 Core を WooCommerce に接続します
- Cin7 Core で発注書とベンダーとの関係をすべて管理します。在庫は WooCommerce に同期されます
BigCommerce
Unleashed を使用する場合:
- BigCommerce App Marketplace から Unleashed コネクターをインストールします
- Unleashed で「購入」→「新しい発注書」の順に選択し、発注書を作成します
- 発注書が受領済みになると、Unleashed から BigCommerce に在庫が同期されます
Cin7 Core を使用する場合:
- Cin7 Core の設定にある BigCommerce API 連携を使って接続します
- Shopify/WooCommerce と同じワークフローを使用します
ステップ 3:仕入先に発注書を作成して送付する
適切な発注書には、発注書番号、商品の説明(自社の SKU と仕入先の SKU を含む)、数量、単価、納品予定日、納品先住所が記載されています。
QuickBooks Online の場合
- Expenses → Vendors → [Vendor] に移動し、New Transaction → Purchase Order をクリックします
- 仕入先、発注日、出荷予定日、数量と単価を含む商品を入力します
- Save and Send をクリックすると、QuickBooks から仕入先へ発注書を直接メールで送信できます
- Expenses → Purchase Orders で発注書のステータスを追跡します。未処理の発注書は「Open」、受領済みの発注書は「Closed」と表示されます
Cin7 Core / ATUM の場合
- Purchase → New Purchase Order に移動します
- 仕入先を選択します。システムによって、仕入先カタログに登録されている仕入先の商品が自動入力されます
- 発注数量に基づいて数量を調整します(@demand-forecasting を参照)
- 納品予定日を設定します。仕入先のリードタイムを今日の日付に加算します
- 組み込みのメールワークフローを使用して発注書を送信します。発注書の PDF がメールに添付されます
まだ発注書システムを使用していない販売事業者向けのシンプルなメールテンプレート
Subject: Purchase Order PO-202603-001
Dear [Supplier Contact],
Please find our purchase order details below:
PO Number: PO-202603-001
Order Date: March 12, 2026
Expected Delivery: March 26, 2026
Items:
| SKU | Description | Qty | Unit Cost | Total |
|-----|-------------|-----|-----------|-------|
| YS-1001 | Cotton T-Shirt, White, S | 100 | $8.50 | $850.00 |
| YS-1002 | Cotton T-Shirt, White, M | 150 | $8.50 | $1,275.00 |
Total: $2,125.00
Payment Terms: Net 30
Please confirm receipt of this order and your expected ship date.
Ship to:
[Your warehouse address]
ステップ 4:発注確認用の仕入先ポータルを設定する
メールでやり取りする仕入先の場合、シンプルな確認メールのワークフローで十分です。取引量の多い仕入先との関係では、ポータルによって可視性が向上します。
シンプルなメールベースのワークフロー:
- 返信期限(2 営業日)を設定して発注書をメールで送信し、発注書番号、商品、数量、出荷予定日の確認を依頼します
- 仕入先から返信があったら、システム上の発注書のステータスを「Acknowledged」に更新します
- 仕入先が全数量を納品できない場合は、一部数量の納品について書面で確約を得ます
ATUM Supplier Portal(WooCommerce):
- ATUM Premium には、仕入先が発注書を受け取り、確認し、追跡番号を入力できる仕入先向けポータルが含まれています
- ATUM → Suppliers → [Supplier] に移動し、ポータルへのアクセス認証情報を設定します
Cin7 Core Supplier Portal:
- Cin7 Core には、仕入先が発注書を確認し、納品日を確定し、配送書類をアップロードできる仕入先ポータルが含まれています
- Cin7 Core → Settings → Suppliers → Invite to Portal から仕入先を招待します
ステップ 5:入荷を記録して在庫を更新する
仕入先からの出荷品が到着したら、次の手順を行います。
- 梱包明細を発注書と照合し、すべての商品明細の数量を確認します
- 不一致がないか確認します。
- 数量不足: 仕入先からの納品数が発注数に満たない場合 → 入荷数で発注書を更新し、残数分は発注書を「open」のままにします
- 破損品: 別途記録し、破損した在庫を販売可能な在庫に含めないでください
- 誤納品: 仕入先にすぐ連絡し、仕入伝票用の写真を送ります
QuickBooks の場合:
- 発注書を開き、"Receive Items" をクリックして、実際の入荷数量を入力します
- QuickBooks は、入荷数量分の請求書を自動的に作成します
Cin7 Core / ATUM の場合:
- 発注書に移動し、"Receive Stock" をクリックして、各明細の入荷数量を入力します
- Shopify/WooCommerce/BigCommerce の在庫が自動的に更新されます
ステップ 6:仕入先のパフォーマンススコアカードを算出して確認する
パフォーマンスの低い仕入先を特定し、交渉に役立てるため、仕入先のスコアカードを四半期ごとに作成します。
主な指標:
| 指標 | 定義 | 目標 |
|---|---|---|
| 納期遵守率 | 実際の受領日 ≤ 納品予定日となった発注書の割合 | > 90% |
| 充足率 | すべての発注書における受領総数量 / 発注総数量 | > 95% |
| 不良率 | 受領した破損品/誤納品の数量 / 受領総数量 | < 2% |
| リードタイムの正確性 | 実際のリードタイムと見積もりリードタイムの差 | ± 2 日 |
発注書システムから算出する:
QuickBooks では、発注書データをエクスポートして表計算ソフトでこれらの指標を算出します。Cin7 Core と ATUM では、組み込みの仕入先レポートからこれらの指標を自動的に確認できます。
カスタム/ヘッドレス — 仕入先スコアカードの算出
async function calculateVendorScorecard(params: {
vendorId: string;
periodDays: number;
}): Promise<{
onTimeRatePct: number;
fillRatePct: number;
defectRatePct: number;
overallScore: number; // 0–100
}> {
const since = new Date(Date.now() - params.periodDays * 86400000);
const pos = await db.purchaseOrders.findAll({
vendor_id: params.vendorId,
status: { in: ['received', 'partial'] },
created_at: { gte: since },
});
if (pos.length === 0) return { onTimeRatePct: 0, fillRatePct: 0, defectRatePct: 0, overallScore: 0 };
// On-time: PO received on or before expected delivery date
const onTimeCount = pos.filter(po => po.received_at && po.received_at <= new Date(`${po.expected_delivery}T23:59:59Z`)).length;
// Fill rate: total received / total ordered
const allLines = await db.poLines.findByPoIds(pos.map(p => p.id));
const totalOrdered = allLines.reduce((s, l) => s + l.quantity_ordered, 0);
const totalReceived = allLines.reduce((s, l) => s + l.quantity_received, 0);
// Defect rate: damaged units / total received
const totalDamaged = await db.damagedReceipts.sumByVendorAndPeriod(params.vendorId, since);
const onTimeRatePct = (onTimeCount / pos.length) * 100;
const fillRatePct = totalOrdered > 0 ? (totalReceived / totalOrdered) * 100 : 0;
const defectRatePct = totalReceived > 0 ? (totalDamaged / totalReceived) * 100 : 0;
// Weighted score: on-time 40%, fill rate 40%, defect-free 20%
const overallScore = Math.round(
(onTimeRatePct * 0.4) + (fillRatePct * 0.4) + ((100 - defectRatePct) * 0.2)
);
return { onTimeRatePct, fillRatePct, defectRatePct, overallScore };
}
ベストプラクティス
- 売上が100万ドル未満なら、発注書には会計ソフトウェア(QuickBooks、Xero)を使用してください — 買掛金管理と在庫の入荷処理を1つのツールで連携できます。この段階では、別の仕入先ポータルは必要ありません
- 納品予定日は余裕を持って設定してください — 仕入先が提示したリードタイムに2日間のバッファーを加えます。実際のパフォーマンスを変えずに、納期遵守率を高められます
- 分納の受領を慎重に記録してください — 多くの発注書は複数回に分けて納品されます。明細ごとに受領数量を記録し、すべて受領するまで発注書を未完了のままにしてください
- 不良品は後からではなく、荷受け場で記録してください — 破損品は受領時に写真を添えて記録する必要があります。後から申し立てても、仕入先に証拠を示すのは困難です
- 四半期ごとに仕入先とスコアカードを共有してください — 指標を確認した仕入先は改善に取り組みます。価格交渉ではデータを活用してください(「前四半期に貴社の充足率は88%まで低下しました」)
よくある問題
| 問題 | 解決策 |
|---|---|
| 発注書の合計額が仕入先の請求書と一致しない | 単価は発注明細ごとに保存し、後から遡って更新しないでください。価格の相違は、確認のためにフラグが付けられる買掛金の例外となります |
| 仕入先が誤った住所に配送する | すべての発注書とポータルの確認画面に倉庫の住所を記載し、配送先住所が確認済みであることを確かめてください |
| 破損品を計数から除外する前に在庫数が加算される | 状態が「良好」の受領品のみ在庫数に加算してください。破損品は販売可能な在庫ではなく、隔離用の在庫数に計上します |
| スコアカードでは納期遵守率が高いのに、在庫が切れる | 納期遵守率が測定するのは、納品日と予定日の差であり、実際の需要に基づく必要日との比較ではありません。「納品遅延に起因する欠品イベント」も別の指標として追跡してください |
関連スキル
- @dropshipping-integration
- @order-management-system
- @multi-channel-selling
- @demand-forecasting
- @accounts-payable-management