mcpField
D
dropshipping-integration

dropshipping-integration

github.com/finsilabsその他60149 回インストール5 日前に更新
リポジトリ

dropshipping-integration について

EC事業者向けに、プラットフォーム別の設定からカスタムのヘッドレス実装まで、ドロップシッピング連携を案内するスキルです。仕入先の在庫同期、注文振り分け、利益追跡を扱います。

主な機能

  1. 01ECプラットフォーム別の連携選択
  2. 02仕入先在庫の同期
  3. 03仕入先への注文自動振り分け
  4. 04ドロップシッピング利益の追跡
  5. 05カスタム連携の案内

活用シーン

  1. 01在庫を持たない店舗の立ち上げ
  2. 02既存商品群へのドロップシッピング商品の追加
  3. 03価格・在庫・地域に基づく仕入先選択
  4. 04仕入先在庫と販売利益の照合

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/finsilabs/awesome-ecommerce-skills --skill dropshipping-integration

インストール後、Claude Code で/dropshipping-integrationを入力して読み込まれたか確認します。

同梱ファイル

SKILL.md と一緒にインストールされる参考資料やスクリプト。

tile.json
evals/dropship-database-schema-design/
criteria.json
task.md
evals/inventory-sync-and-margin-reporting/
criteria.json
task.md
evals/supplier-order-routing-and-submission/
criteria.json
task.md

詳細

ドロップシッピング連携

概要

ドロップシッピング連携では、顧客の注文をサプライヤーの倉庫に自動的に振り分け、サプライヤーの在庫をストアフロントと同期し、販売ごとの利益率を追跡します。適切に設定すれば、実在庫に一切触れることなく、顧客に商品を期日どおりに届けられます。設定が不十分だと、在庫の過剰販売やフルフィルメントの失敗によって、評判を損ないます。

このスキルでは、適切なツールを使ってプラットフォームでドロップシッピングを設定する方法を説明し、ゼロから構築する方向けに、カスタム/ヘッドレスの実装についても解説します。

このスキルを使用する場面

  • 実在庫を持たずにストアを立ち上げ、注文をサプライヤーの倉庫に直接振り分ける場合
  • 自社在庫に加えて、ドロップシッピングでフルフィルメントする商品カテゴリーを追加する場合
  • 価格、在庫、所在地に基づいて注文ごとに最適なサプライヤーを選ぶ、複数サプライヤー対応の振り分けエンジンを構築する場合
  • サプライヤーの在庫状況フィード(CSV、EDI、API)に合わせて、ストアフロントの在庫を同期する必要がある場合
  • 会計やベンダーのパフォーマンス報告のために、ドロップシッピングの利益率を追跡する場合

基本手順

ステップ 1:プラットフォームを確認し、適切な連携方法を選択する
プラットフォーム推奨ツール理由
ShopifyDSers(無料)、AutoDS、または SpocketDSers は AliExpress の公式パートナーです。AutoDS と Spocket は、プレミアムまたは米国拠点のサプライヤーに対応し、注文の自動振り分けを行います
WooCommerceAliDropship プラグイン、DropshipMe、または WooCommerce + カスタム webhookAliDropship は AliExpress の自動化に対応します。その他のサプライヤーには、WooCommerce の webhook を使ってサプライヤーの API に注文を送信します
BigCommerceModalyst、Spocket、または BigCommerce + カスタム連携Modalyst と Spocket には、在庫同期に対応した BigCommerce のネイティブアプリがあります
カスタム/ヘッドレスサプライヤーの API または CSV/EDI フィードを使って、サプライヤー連携レイヤーを構築します振り分けロジック、利益率の追跡、サプライヤーの選定を完全に制御できます
ステップ 2:在庫同期を設定する

ストアフロントの在庫数をサプライヤーの在庫状況と同期することは、最も重要な作業です。在庫の過剰販売は、顧客の信頼をただちに損ないます。

Shopify

DSers を使用する場合(AliExpress のドロップシッピング):

  1. Shopify App Store から DSers をインストールします
  2. DSers の設定で AliExpress アカウントを接続します
  3. DSers → Products → Import から AliExpress の商品をインポートします
  4. DSers が数時間ごとに在庫数を自動同期します
  5. DSers → Settings → Supplier で「Auto-update inventory」を有効にし、サプライヤーの在庫を Shopify の在庫に反映します

Spocket を使用する場合(米国/EU のサプライヤー):

  1. Shopify App Store から Spocket をインストールします
  2. Spocket のマーケットプレイスで商品を探し、Shopify にインポートします
  3. Spocket は在庫の変更を自動的に同期します。手動での設定は不要です
  4. Spocket の設定で「Auto-fulfill orders」を有効にし、新しい Shopify の注文をサプライヤーに自動的に振り分けます

AutoDS を使用する場合(複数サプライヤー):

  1. Shopify App Store から AutoDS をインストールします
  2. サプライヤー(AliExpress、Amazon、Walmart など)を追加し、それらの商品をインポートします
  3. AutoDS がサプライヤーの価格と在庫を監視し、Shopify の商品リストを自動的に更新します
  4. AutoDS → Settings → Price Rules で価格ルールを設定し、マークアップを自動設定します
WooCommerce

AliDropship プラグインを使用する場合:

  1. AliDropship プラグインを購入してインストールします
  2. Chrome 拡張機能を使って、AliExpress から WooCommerce に商品を直接インポートします
  3. AliDropship → Settings → Auto-update で、価格と在庫の自動更新を有効にします
  4. 注文のルーティングについて:プラグインのダッシュボードで注文を承認すると、AliDropship が AliExpress に注文を自動送信します

AliExpress 以外のサプライヤーの場合:

  1. WooCommerce Zapier 拡張機能をインストールするか、n8n(無料、セルフホスト可能)を使用して、WooCommerce の注文 Webhook をサプライヤーのシステムに接続します
  2. WooCommerce → Settings → Advanced → Webhooks に移動し、「Order created」イベント用の Webhook を作成します
  3. Webhook URL を、注文データを整形してサプライヤーに転送する自動化ワークフロー(Zapier/n8n)に設定します
  4. 在庫同期には、毎日実行する WP-Cron ジョブをスケジュールし、サプライヤーの CSV フィードを取得して、REST API 経由で WooCommerce の在庫数を更新します
BigCommerce

Modalyst を使用する場合:

  1. BigCommerce App Marketplace から Modalyst をインストールします
  2. Modalyst のサプライヤーカタログを閲覧し、商品を BigCommerce にインポートします
  3. 接続すると、Modalyst が在庫同期と注文ルーティングを自動的に処理します

Spocket を使用する場合:

  1. BigCommerce App Marketplace から Spocket をインストールします
  2. 商品をインポートし、Spocket の設定で自動フルフィルメントを有効にします
  3. Spocket の商品を含む新規注文は、サプライヤーに自動的にルーティングされます
カスタム/ヘッドレス

ヘッドレスのストアフロントでは、サプライヤー統合レイヤーを構築します:

// Supplier product and inventory schema
interface SupplierProduct {
  supplierId: string;
  supplierSku: string;       // supplier's own SKU
  internalProductId: string; // your product ID
  costPriceCents: number;    // what you pay the supplier
  stockQty: number;
  lastSyncedAt: Date;
}

// Route an order line to the best available supplier
async function selectBestSupplier(
  productId: string,
  requiredQty: number
): Promise<SupplierProduct | null> {
  // Pick the cheapest in-stock supplier with enough quantity
  return db.supplierProducts.findOne({
    internal_product_id: productId,
    stock_qty: { gte: requiredQty },
    is_active: true,
  }, { orderBy: ['cost_price_cents', 'asc'] });
}

// Sync supplier inventory from CSV feed
async function syncSupplierInventoryFromCsv(
  supplierId: string,
  csvContent: string
): Promise<void> {
  const rows = parseCsv(csvContent); // [{sku, qty, cost}]
  for (const row of rows) {
    await db.supplierProducts.upsert({
      supplier_id: supplierId,
      supplier_sku: row.sku,
      stock_qty: parseInt(row.qty),
      cost_price_cents: Math.round(parseFloat(row.cost) * 100),
      last_synced_at: new Date(),
    });
  }
  // Zero out SKUs not in the feed (discontinued)
  const activeSKUs = new Set(rows.map(r => r.sku));
  const allProducts = await db.supplierProducts.findBySupplierId(supplierId);
  for (const sp of allProducts) {
    if (!activeSKUs.has(sp.supplier_sku)) {
      await db.supplierProducts.update(sp.id, { stock_qty: 0 });
    }
  }
}

// Submit a dropship order to a supplier API
async function submitDropshipOrder(params: {
  supplierApiEndpoint: string;
  supplierApiKey: string;
  orderReference: string;
  shippingAddress: Address;
  items: { supplierSku: string; quantity: number }[];
}): Promise<string> {
  const response = await fetch(params.supplierApiEndpoint + '/orders', {
    method: 'POST',
    headers: {
      'Authorization': `Bearer ${params.supplierApiKey}`,
      'Content-Type': 'application/json',
    },
    body: JSON.stringify({
      reference: params.orderReference,
      ship_to: params.shippingAddress,
      items: params.items,
    }),
  });
  if (!response.ok) throw new Error(`Supplier API error: ${response.status}`);
  const result = await response.json();
  return result.order_id; // supplier's order reference
}
ステップ 3:注文の自動ルーティングを設定する
Shopify
  • DSers:DSers → Settings → Automatic Actions に移動し、「Auto-sync tracking number to Shopify」と「Auto-fulfill Shopify orders」を有効にします
  • AutoDS:AutoDS → Settings で Auto-Orders を有効にします。Shopify で支払い済みの注文はサプライヤーに自動送信され、追跡番号は Shopify のフルフィルメントに同期されます
  • サプライヤーへの注文が失敗した場合(在庫切れなど)、DSers と AutoDS からメールで通知されるため、手動で別のサプライヤーに振り替えられます
WooCommerce
  • AliDropship の場合:AliDropship ダッシュボードで承認された注文は自動送信されます。AliDropship → Orders に移動して保留中の注文を確定するか、設定で完全自動化を有効にします
  • カスタムのサプライヤー統合の場合:WooCommerce の Webhook を使ってサプライヤーへの注文送信をトリガーし、2 つ目の Webhook またはポーリングを使って追跡番号を受信した後、WooCommerce REST API(POST /wp-json/wc/v3/orders/{id})経由で注文をフルフィルメント済みにします
BigCommerce
  • Modalyst と Spocket はどちらも注文ルーティングを自動的に処理します。BigCommerce → Orders を監視し、「Fulfillment」列を確認してください。サプライヤーにルーティングされた注文にはサプライヤー名が表示されます
  • 追跡番号について:どちらのアプリも追跡情報を BigCommerce の注文に自動同期し、BigCommerce に組み込まれた出荷通知メールを送信します
ステップ 4:ドロップシッピングの利益率を追跡する

利益率の追跡は非常に重要です。気付かないうちに、仕入れ価格が販売価格に対して変動することがあります。

Shopify
  • Shopify Analytics → Profit レポートを使用します(Shopify 管理画面で原価を入力する必要があります)
  • Shopify 管理画面で各商品のバリエーションに移動し、「Cost per item」を入力します。Shopify が利益率を自動計算します
  • 複数のサプライヤーを追跡する場合:DSers/AutoDS から注文と原価をエクスポートし、Google Sheet または QuickBooks を使って注文ごとの利益率を計算します
WooCommerce
  • WooCommerce Cost of Goods プラグイン(SkyVerge)をインストールすると、商品ごとの原価を追跡し、WooCommerce のレポートで利益率を自動計算できます
  • AliDropship の分析ダッシュボードでは、原価と販売価格を確認できます
BigCommerce
  • BigCommerce 管理画面 → Products → [Product] → Variants → Cost で、各商品のバリエーションに仕入れ価格を入力します
  • BigCommerce に組み込まれた Insights レポート(Plus 以上で利用可能)では、商品ごとの利益率を確認できます

ベストプラクティス

  • 在庫を少なくとも4時間ごとに同期する — 仕入先の在庫は頻繁に変動します。回転の速いSKUについては、仕入先のAPIが対応していれば1時間ごとに同期します
  • 在庫に余裕を持たせる — 仕入先ごとに最後の3〜5個は販売しないようにします。同期の間に在庫が変動する可能性があり、「在庫あり」というデータが古くなっている場合があります
  • 仕入先の注文参照番号を保存する — カスタマーサービスが特定の発送について仕入先に直接問い合わせられるよう、仕入先の注文確認番号を必ず保存します
  • 仕入先ごとに納期を管理する — 仕入先によって出荷速度は異なります。一般的な納期ではなく、仕入先ごとの納期を使って正確な配送予定を表示します
  • 仕入先が発送したら、すぐに追跡番号を顧客に送る — ほとんどの仕入先アプリでは追跡情報が自動で同期されます。アプリの設定でこれを有効にし、サンプル注文でテストします
  • 仕入先の請求書を毎月照合する — 請求額と注文時に記録した金額を比較します。価格の不一致は積み重なると無視できない損失になります

よくある問題

問題解決策
同期後に仕入先で在庫切れになった商品を顧客が注文する頻繁に同期し、在庫に余裕を持たせます。在庫切れが発生した場合に備えて、DSers/AutoDSでメールアラートを有効にします
仕入先が間違った商品を発送するほとんどの仕入先アプリでは、発送された商品を確認しません。仕入先に直接連絡し、注文参照番号を手元に用意します
アプリが再試行した際に、ドロップシッピング注文が二重に登録されるDSersとAutoDSは内部で冪等性を使用します。カスタム統合では、再送信する前に既存の仕入先注文参照番号を確認します
利益率の計算で送料が考慮されていない「送料無料」を提供していても仕入先への送料を支払っている場合は、その金額を利益率の計算から差し引きます。これは実際にかかる費用です
追跡番号がプラットフォームに同期されないアプリの追跡情報同期設定を確認します。WooCommerceのWebhookについては、WooCommerce → 設定 → 高度な設定 → WebhookでWebhookの配信ログを確認します

関連スキル

  • @order-fulfillment-workflow
  • @vendor-management
  • @shipment-tracking
  • @multi-channel-selling
  • @order-management-system

コメント