shipment-tracking について
EC運営者や開発者向けの配送追跡スキルです。配送状況の通知、例外への対応、ブランド付き追跡ページに加え、EasyPostやShippoのWebhookによる配送イベントの集約を説明します。
主な機能
- 01配送状況通知の設定
- 02ブランド付き追跡ページの作成
- 03配送例外の監視とチーム通知
- 04Webhookによる追跡イベント集約
活用シーン
- 01顧客が荷物の進捗を確認
- 02配達失敗をサポートチームに通知
- 03UPS、FedEx、USPS、DHLの状況を集約
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ finsilabs/ awesome-ecommerce-skills --skill shipment-trackingインストール後、Claude Code で/shipment-trackingを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
tile.jsonevals/customer-notifications-tracking-urls-and/criteria.jsontask.mdevals/event-normalization-idempotent-storage-a/criteria.jsontask.mdevals/webhook-receiver-with-hmac-verification-/criteria.jsontask.md詳細
配送追跡
概要
配送追跡を利用すると、顧客は荷物が倉庫を出て玄関先に届くまでの状況を確認でき、発送、配達中、配達完了などの重要な節目で通知を受け取れます。ほとんどのプラットフォームでは、送り状が作成されると追跡メールが自動送信されますが、ブランド独自の追跡ページや、荷物の紛失や配達失敗といった問題の事前通知を利用するには、専用の追跡アプリまたはサービスが必要です。
このスキルを使う場面
- 注文詳細ページで顧客が荷物をリアルタイムに追跡できるようにする場合
- 配送の節目となるイベントをきっかけに、購入後の通知(メール/SMS)を送信する場合
- 配達の問題(荷物の紛失、配達の試みの失敗)を検知して、カスタマーサービスへのアラートを発生させる場合
- 複数の配送業者(UPS、FedEx、USPS、DHL)の追跡データを単一のインターフェースに集約する場合
- EasyPost や Shippo などの配送業者アグリゲーターと連携し、統一された追跡 Webhook を利用する場合
基本手順
ステップ 1:プラットフォームを確認し、適切な追跡ツールを選択する
| プラットフォーム | 推奨ツール | 理由 |
|---|---|---|
| Shopify | AfterShip または Route | AfterShip は、すべての配送業者に対応したブランド独自の追跡ページ、メール/SMS による事前通知、問題のアラートを提供します |
| WooCommerce | WooCommerce 用 AfterShip または WooCommerce の Shipment Tracking | AfterShip は主要な配送業者すべてと連携します。WooCommerce の公式拡張機能では、基本的な配送業者の追跡に対応します |
| BigCommerce | AfterShip(BigCommerce App Marketplace)または ShipStation の追跡機能 | AfterShip には BigCommerce とのネイティブ連携があります。ラベル作成に ShipStation を使用している場合は、ShipStation でも追跡できます |
| カスタム/ヘッドレス | EasyPost Tracker API または Shippo の追跡 Webhook | EasyPost と Shippo は、すべての配送業者の追跡イベントを正規化し、単一の Webhook フィードにまとめます |
ステップ 2:配送業者の追跡通知を設定する
Shopify
Shopify の組み込み追跡機能(基本機能なら追加アプリは不要):
- 注文をフルフィルメントし、追跡番号を追加すると、Shopify は追跡リンク付きの「ご注文の商品を発送しました」メールを顧客に自動送信します
- 追跡リンクは配送業者の Web サイト(例:UPS の場合は ups.com)に移動します。追跡はできますが、ブランド独自の表示にはなりません
- 顧客は
yourstore.com/orders/[order-id]で注文状況を確認できます
AfterShip(ブランド独自の追跡と事前通知におすすめ):
- Shopify App Store から AfterShip をインストールします(無料プランあり)
- AfterShip は Shopify の新しいフルフィルメントを自動検出し、荷物の追跡を開始します
- AfterShip → Notifications で、各節目にメールと SMS の通知を設定します:
- 「輸送中」— 荷物が施設を出たとき
- 「配達中」— 配達当日
- 「配達完了」— 配達完了の確認
- 「問題発生」— 配達の試みの失敗または荷物の遅延
- AfterShip → Tracking Page で、ロゴ、カラー、商品のおすすめを使って追跡ページをカスタマイズします
- AfterShip のブランド独自の追跡ページは
yourstore.aftership.comでホストされます。または、自社ドメインに埋め込むこともできます
Shopify Plus の場合: Klaviyo の AfterShip 連携を通じて、AfterShip の追跡イベントをもとに配送通知メールを送信するよう Klaviyo を設定します。これにより、メールのデザインと内容を完全に制御できます。
WooCommerce
WooCommerce Shipment Tracking(公式拡張機能)を使用する場合:
- WooCommerce.com からインストールします(または WordPress.org の無料コミュニティ版を使用します)
- 注文を発送する際に、WooCommerce → Orders → [Order] → Add Tracking Number で追跡番号と配送業者を入力します
- WooCommerce から、追跡リンクを記載した注文更新メールが顧客に送信されます
- 顧客は My Account → Orders で追跡リンクを確認できます
AfterShip for WooCommerce を使用する場合:
- WordPress.org から AfterShip プラグインをインストールします
- AfterShip が WooCommerce の注文を同期し、追跡番号が追加されると追跡を開始します
- AfterShip ダッシュボード → Notifications で通知メールを設定します
- ブランド仕様の追跡ページは、Shopify 版と同じように機能します
ShipStation による追跡(発送に ShipStation を使用している場合):
- 追跡リンク付きのラベルが作成されると、ShipStation から顧客にメールが自動送信されます
- ShipStation → Account Settings → Notifications で、どの配送業者のイベントをメール送信のトリガーにするか設定します
BigCommerce
- BigCommerce App Marketplace から AfterShip Returns Center または AfterShip をインストールします
- AfterShip が BigCommerce の注文を自動的に同期します
- AfterShip ダッシュボードで通知とブランド仕様の追跡ページを設定します(上記と同様です)
BigCommerce の組み込み追跡機能:
- 追跡番号を指定して注文を「Shipped」にすると、BigCommerce から追跡リンク付きの発送確認メールが自動送信されます
- Store Setup → Email Templates → Shipped Email に移動して、メールの内容をカスタマイズします
ステップ 3:追跡に関する例外に対応する
配送に関する例外(荷物の紛失、配達の失敗など)には、顧客満足度を守るため、迅速な対応が必要です。
例外アラートの設定
AfterShip:
- AfterShip → Notifications → Exceptions に移動します
- 以下の例外タイプについて、チームへのメールアラートを有効にします:
- 「Exception」— 配送業者から報告された問題
- 「Failed Attempt」— 配達に失敗したため、再調整が必要です
- 「Returned to Sender」— 荷物が差出人に返送されています
- 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 または追跡ツールで例外が検出された場合:
- 配送業者の公式追跡ポータルで、最新の状況を確認します
- 荷物を紛失した場合:配送業者に補償請求を提出します(UPS、FedEx、USPS はいずれもオンライン請求ポータルを提供しています)
- 配達に失敗した場合:顧客に連絡し、配送先住所の更新または受け取り方法を調整します
- 荷物が返送された場合:再発送するか返金するか、顧客と調整します
ステップ 4:ブランド仕様の追跡ページをストアに追加する
ブランド仕様の追跡ページを使用すると、顧客を自社サイトに留め(配送業者のサイトではなく)、商品のおすすめを表示でき、「注文した商品はどこですか」という問い合わせを減らせます。
AfterShip では、yourstore.aftership.com にページが自動生成されます。独自ドメインで使用するには:
- AfterShip → Tracking Page → Custom Domain で、サブドメイン(例:
tracking.yourstore.com)を入力します tracking.yourstore.comを AfterShip のサーバーに向ける CNAME DNS レコードを追加します- 発送確認メールのリンク先を配送業者の 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