mcpField
S
shipment-tracking

shipment-tracking

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

shipment-tracking について

EC運営者や開発者向けの配送追跡スキルです。配送状況の通知、例外への対応、ブランド付き追跡ページに加え、EasyPostやShippoのWebhookによる配送イベントの集約を説明します。

主な機能

  1. 01配送状況通知の設定
  2. 02ブランド付き追跡ページの作成
  3. 03配送例外の監視とチーム通知
  4. 04Webhookによる追跡イベント集約

活用シーン

  1. 01顧客が荷物の進捗を確認
  2. 02配達失敗をサポートチームに通知
  3. 03UPS、FedEx、USPS、DHLの状況を集約

インストール

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

$npx skills add https://github.com/finsilabs/awesome-ecommerce-skills --skill shipment-tracking

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

同梱ファイル

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

tile.json
evals/customer-notifications-tracking-urls-and/
criteria.json
task.md
evals/event-normalization-idempotent-storage-a/
criteria.json
task.md
evals/webhook-receiver-with-hmac-verification-/
criteria.json
task.md

詳細

配送追跡

概要

配送追跡を利用すると、顧客は荷物が倉庫を出て玄関先に届くまでの状況を確認でき、発送、配達中、配達完了などの重要な節目で通知を受け取れます。ほとんどのプラットフォームでは、送り状が作成されると追跡メールが自動送信されますが、ブランド独自の追跡ページや、荷物の紛失や配達失敗といった問題の事前通知を利用するには、専用の追跡アプリまたはサービスが必要です。

このスキルを使う場面

  • 注文詳細ページで顧客が荷物をリアルタイムに追跡できるようにする場合
  • 配送の節目となるイベントをきっかけに、購入後の通知(メール/SMS)を送信する場合
  • 配達の問題(荷物の紛失、配達の試みの失敗)を検知して、カスタマーサービスへのアラートを発生させる場合
  • 複数の配送業者(UPS、FedEx、USPS、DHL)の追跡データを単一のインターフェースに集約する場合
  • EasyPost や Shippo などの配送業者アグリゲーターと連携し、統一された追跡 Webhook を利用する場合

基本手順

ステップ 1:プラットフォームを確認し、適切な追跡ツールを選択する
プラットフォーム推奨ツール理由
ShopifyAfterShip または RouteAfterShip は、すべての配送業者に対応したブランド独自の追跡ページ、メール/SMS による事前通知、問題のアラートを提供します
WooCommerceWooCommerce 用 AfterShip または WooCommerce の Shipment TrackingAfterShip は主要な配送業者すべてと連携します。WooCommerce の公式拡張機能では、基本的な配送業者の追跡に対応します
BigCommerceAfterShip(BigCommerce App Marketplace)または ShipStation の追跡機能AfterShip には BigCommerce とのネイティブ連携があります。ラベル作成に ShipStation を使用している場合は、ShipStation でも追跡できます
カスタム/ヘッドレスEasyPost Tracker API または Shippo の追跡 WebhookEasyPost と Shippo は、すべての配送業者の追跡イベントを正規化し、単一の Webhook フィードにまとめます
ステップ 2:配送業者の追跡通知を設定する
Shopify

Shopify の組み込み追跡機能(基本機能なら追加アプリは不要):

  1. 注文をフルフィルメントし、追跡番号を追加すると、Shopify は追跡リンク付きの「ご注文の商品を発送しました」メールを顧客に自動送信します
  2. 追跡リンクは配送業者の Web サイト(例:UPS の場合は ups.com)に移動します。追跡はできますが、ブランド独自の表示にはなりません
  3. 顧客は yourstore.com/orders/[order-id] で注文状況を確認できます

AfterShip(ブランド独自の追跡と事前通知におすすめ):

  1. Shopify App Store から AfterShip をインストールします(無料プランあり)
  2. AfterShip は Shopify の新しいフルフィルメントを自動検出し、荷物の追跡を開始します
  3. AfterShip → Notifications で、各節目にメールと SMS の通知を設定します:
    • 「輸送中」— 荷物が施設を出たとき
    • 「配達中」— 配達当日
    • 「配達完了」— 配達完了の確認
    • 「問題発生」— 配達の試みの失敗または荷物の遅延
  4. AfterShip → Tracking Page で、ロゴ、カラー、商品のおすすめを使って追跡ページをカスタマイズします
  5. AfterShip のブランド独自の追跡ページは yourstore.aftership.com でホストされます。または、自社ドメインに埋め込むこともできます

Shopify Plus の場合: Klaviyo の AfterShip 連携を通じて、AfterShip の追跡イベントをもとに配送通知メールを送信するよう Klaviyo を設定します。これにより、メールのデザインと内容を完全に制御できます。

WooCommerce

WooCommerce Shipment Tracking(公式拡張機能)を使用する場合:

  1. WooCommerce.com からインストールします(または WordPress.org の無料コミュニティ版を使用します)
  2. 注文を発送する際に、WooCommerce → Orders → [Order] → Add Tracking Number で追跡番号と配送業者を入力します
  3. WooCommerce から、追跡リンクを記載した注文更新メールが顧客に送信されます
  4. 顧客は My Account → Orders で追跡リンクを確認できます

AfterShip for WooCommerce を使用する場合:

  1. WordPress.org から AfterShip プラグインをインストールします
  2. AfterShip が WooCommerce の注文を同期し、追跡番号が追加されると追跡を開始します
  3. AfterShip ダッシュボード → Notifications で通知メールを設定します
  4. ブランド仕様の追跡ページは、Shopify 版と同じように機能します

ShipStation による追跡(発送に ShipStation を使用している場合):

  • 追跡リンク付きのラベルが作成されると、ShipStation から顧客にメールが自動送信されます
  • ShipStation → Account Settings → Notifications で、どの配送業者のイベントをメール送信のトリガーにするか設定します
BigCommerce
  1. BigCommerce App Marketplace から AfterShip Returns Center または AfterShip をインストールします
  2. AfterShip が BigCommerce の注文を自動的に同期します
  3. AfterShip ダッシュボードで通知とブランド仕様の追跡ページを設定します(上記と同様です)

BigCommerce の組み込み追跡機能:

  • 追跡番号を指定して注文を「Shipped」にすると、BigCommerce から追跡リンク付きの発送確認メールが自動送信されます
  • Store Setup → Email Templates → Shipped Email に移動して、メールの内容をカスタマイズします
ステップ 3:追跡に関する例外に対応する

配送に関する例外(荷物の紛失、配達の失敗など)には、顧客満足度を守るため、迅速な対応が必要です。

例外アラートの設定

AfterShip:

  1. AfterShip → Notifications → Exceptions に移動します
  2. 以下の例外タイプについて、チームへのメールアラートを有効にします:
    • 「Exception」— 配送業者から報告された問題
    • 「Failed Attempt」— 配達に失敗したため、再調整が必要です
    • 「Returned to Sender」— 荷物が差出人に返送されています
  3. AfterShip では、顧客への通知に加えて、運用チームへの Slack またはメールアラートを送信できます

Shopify Flow(Plus):

Trigger: AfterShip tracking event received
Condition: Status is "Exception" or "Failed Attempt"
Action: Create customer service task in Gorgias or Zendesk
Action: Send internal Slack notification to #shipping-exceptions
例外への対応

AfterShip または追跡ツールで例外が検出された場合:

  1. 配送業者の公式追跡ポータルで、最新の状況を確認します
  2. 荷物を紛失した場合:配送業者に補償請求を提出します(UPS、FedEx、USPS はいずれもオンライン請求ポータルを提供しています)
  3. 配達に失敗した場合:顧客に連絡し、配送先住所の更新または受け取り方法を調整します
  4. 荷物が返送された場合:再発送するか返金するか、顧客と調整します
ステップ 4:ブランド仕様の追跡ページをストアに追加する

ブランド仕様の追跡ページを使用すると、顧客を自社サイトに留め(配送業者のサイトではなく)、商品のおすすめを表示でき、「注文した商品はどこですか」という問い合わせを減らせます。

AfterShip では、yourstore.aftership.com にページが自動生成されます。独自ドメインで使用するには:

  1. AfterShip → Tracking Page → Custom Domain で、サブドメイン(例:tracking.yourstore.com)を入力します
  2. tracking.yourstore.com を AfterShip のサーバーに向ける CNAME DNS レコードを追加します
  3. 発送確認メールのリンク先を配送業者の URL ではなく、tracking.yourstore.com/[tracking-number] に更新します

既存の注文状況ページに追跡機能を埋め込む:

  • Shopify の場合:AfterShip には、Shopify の注文状況ページに追跡ウィジェットを直接埋め込むテーマアプリ拡張機能があります
  • WooCommerce の場合:AfterShip プラグインによって、WooCommerce の「My Account → Orders」ページに追跡セクションが自動的に追加されます
ステップ 5:カスタム/ヘッドレス — Webhook による追跡

ヘッドレス実装では、EasyPost または Shippo を使用して配送業者の Webhook を受信し、追跡イベントを正規化します:

// Register a tracking number with EasyPost to receive webhook updates
async function registerEasyPostTracker(params: {
  trackingNumber: string;
  carrier: string; // 'UPS', 'FedEx', 'USPS', 'DHL'
  orderId: string;
}): Promise<void> {
  const response = await fetch('https://api.easypost.com/v2/trackers', {
    method: 'POST',
    headers: {
      'Authorization': `Bearer ${process.env.EASYPOST_API_KEY}`,
      'Content-Type': 'application/json',
    },
    body: JSON.stringify({
      tracker: {
        tracking_code: params.trackingNumber,
        carrier: params.carrier,
      },
    }),
  });
  const tracker = await response.json();
  // Store tracker.id to correlate future webhook events with this order
  await db.shipments.update({ tracking_number: params.trackingNumber }, {
    easypost_tracker_id: tracker.id,
  });
}

// Receive EasyPost webhook and update order status
// POST /webhooks/easypost
async function handleEasyPostWebhook(rawBody: Buffer, signature: string): Promise<void> {
  // Verify webhook signature
  const expectedSig = crypto
    .createHmac('sha256', process.env.EASYPOST_WEBHOOK_SECRET!)
    .update(rawBody)
    .digest('hex');
  if (expectedSig !== signature) throw new Error('Invalid webhook signature');

  const event = JSON.parse(rawBody.toString());
  if (event.description !== 'tracker.updated') return;

  const tracker = event.result;
  const shipment = await db.shipments.findByEasyPostTrackerId(tracker.id);
  if (!shipment) return;

  // Normalize EasyPost status to your internal status
  const statusMap: Record<string, string> = {
    pre_transit: 'label_created',
    in_transit: 'in_transit',
    out_for_delivery: 'out_for_delivery',
    delivered: 'delivered',
    failure: 'exception',
    return_to_sender: 'returned',
  };
  const normalizedStatus = statusMap[tracker.status] ?? 'in_transit';

  await db.shipments.update(shipment.id, { status: normalizedStatus });

  // Update order to delivered when package arrives
  if (normalizedStatus === 'delivered') {
    await db.orders.update(shipment.order_id, { status: 'delivered', delivered_at: new Date() });
  }

  // Send notification email at key milestones
  if (['in_transit', 'out_for_delivery', 'delivered', 'exception'].includes(normalizedStatus)) {
    await sendTrackingNotificationEmail(shipment.order_id, normalizedStatus, tracker.tracking_code);
  }
}

ベストプラクティス

  • ポーリングよりウェブフックを使用する — 配送業者のウェブフックはほぼリアルタイムで更新を配信します。数時間ごとのポーリングでは、「配達中」や「配達完了」といった当日中のイベントを見逃します。
  • 例外発生時には先回りして通知する — 顧客が気付く前に、遅延や配達失敗についてお客様にメールで知らせることで、悪い状況をブランドの好感度を高める機会に変えられます。
  • 初日から配達予定日を表示する — AfterShip とほとんどの配送業者は、ラベルが最初にスキャンされた時点で EDD を提供します。追跡ページと注文確認メールにすぐ表示してください。
  • 顧客だけでなく、例外発生時には運用チームにも通知する — すべての例外イベントについて、社内向けの Slack/メール通知を作成し、チームが先回りして問題を解決できるようにしてください。
  • 通知メールの重複を排除する — 配送業者が重複イベントを送信することがあります。追跡アプリまたはカスタムウェブフックハンドラーで、配送ごとのイベント種別に基づいて重複を排除してください。

よくある落とし穴

問題解決策
顧客に発送確認が届かないShopify/WooCommerce の発送通知メールが有効になっていることと、チェックアウト時に顧客のメールアドレスが取得されていることを確認してください
追跡ページに何日も「情報がありません」と表示されるUSPS ではラベル作成後 24~48 時間、この状態になるのは通常です。発送確認メールで顧客にあらかじめ伝えてください
例外イベントで通知が発生しないAfterShip の通知設定に例外の種類が含まれていることを確認してください。例外イベントをシミュレートするテスト用追跡番号を使ってテストしてください
国際追跡が配送途中で更新されなくなる配送業者間の国際引き継ぎでは、更新が途切れることがよくあります。配送業者の公式追跡 URL を記録し、48 時間以上イベントがない場合はその URL にフォールバックしてください

関連スキル

  • @order-fulfillment-workflow
  • @returns-management
  • @international-shipping
  • @order-management-system
  • @same-day-delivery

コメント