追跡データを活用したリアルタイム配達予定日の構築方法
お客様から最も多く寄せられる質問の一つが「荷物はいつ届きますか?」です。配送業者が提供する配達予定日は、曖昧だったり不正確だったりすることが少なくありません。リアルタイムの追跡イベントを分析することで、よりスマートで正確な配達予測を構築し、お客様への情報提供を充実させ、問い合わせの削減につなげることができます。
標準的なETAでは不十分な理由
ほとんどの配送業者が提供するETAは出荷時に設定されたまま更新されることがなく、以下のような要因が考慮されていません。
- 国際配送における通関の遅延
- 天候による輸送の混乱
- 配送業者の仕分け施設の滞留
- ラストマイル配送の課題
リアルタイムの追跡イベントを処理することで、荷物が配送ネットワークを移動するにつれて予測を動的に調整できます。
追跡イベントの収集設定
まず、WhereParcelのWebhookを使用して追跡更新を受信する設定を行います。
// Register a webhook for tracking updates
const response = await fetch('https://api.whereparcel.com/v2/webhooks', {
method: 'POST',
headers: {
'Authorization': 'Bearer YOUR_API_KEY',
'Content-Type': 'application/json',
},
body: JSON.stringify({
url: 'https://your-app.com/webhooks/tracking',
events: ['tracking.updated', 'tracking.delivered'],
}),
});
イベントを活用したETA計算
各追跡イベントにはステータス情報とタイムスタンプが含まれており、これらを使って配達予測を構築できます。
function calculateEstimatedDelivery(events, carrier, destination) {
const latestEvent = events[0];
// Base estimates by status
const estimateMap = {
'picked_up': { minDays: 2, maxDays: 5 },
'in_transit': { minDays: 1, maxDays: 3 },
'out_for_delivery': { minDays: 0, maxDays: 0 },
'customs_clearance': { minDays: 1, maxDays: 7 },
'arrived_at_destination': { minDays: 1, maxDays: 2 },
};
const estimate = estimateMap[latestEvent.status] || { minDays: 2, maxDays: 7 };
const now = new Date();
return {
earliest: addBusinessDays(now, estimate.minDays),
latest: addBusinessDays(now, estimate.maxDays),
confidence: calculateConfidence(events),
};
}
適応型予測モデルの構築
より正確な予測を行うためには、配送業者とルートごとの過去の配達実績を蓄積します。
// Store delivery times for completed shipments
async function recordDeliveryTime(shipment) {
const pickupDate = shipment.events.find(e => e.status === 'picked_up')?.timestamp;
const deliveryDate = shipment.events.find(e => e.status === 'delivered')?.timestamp;
if (pickupDate && deliveryDate) {
await db.deliveryTimes.insert({
carrier: shipment.carrier,
originCountry: shipment.origin.country,
destinationCountry: shipment.destination.country,
transitDays: daysBetween(pickupDate, deliveryDate),
recordedAt: new Date(),
});
}
}
// Calculate average delivery time for a route
async function getHistoricalAverage(carrier, origin, destination) {
const records = await db.deliveryTimes
.find({ carrier, originCountry: origin, destinationCountry: destination })
.sort({ recordedAt: -1 })
.limit(100);
if (records.length < 10) return null; // Not enough data
const times = records.map(r => r.transitDays);
return {
average: Math.round(times.reduce((a, b) => a + b) / times.length),
p90: percentile(times, 90),
sampleSize: records.length,
};
}
UIでの予測表示
配達予測を信頼度レベルとともに分かりやすく表示します。
function DeliveryEstimate({ estimate }) {
const { earliest, latest, confidence } = estimate;
if (confidence === 'high') {
return (
<div className="estimate high-confidence">
<span>Expected delivery: {formatDate(earliest)}</span>
</div>
);
}
return (
<div className="estimate">
<span>
Estimated delivery: {formatDate(earliest)} – {formatDate(latest)}
</span>
{confidence === 'low' && (
<small>Estimate may change based on customs processing</small>
)}
</div>
);
}
エッジケースへの対応
通関を伴う国際配送
通関処理は配達予測における最大の変動要因です。荷物が通関に入った場合は、予測の範囲を広げます。
if (latestEvent.status === 'customs_clearance') {
// Customs can take 1-14 days depending on country
estimate.latest = addBusinessDays(now, getCustomsEstimate(destination.country));
estimate.confidence = 'low';
}
配達例外
追跡情報で配達失敗や例外が表示された場合は、それに応じて予測を更新します。
if (latestEvent.status === 'delivery_exception') {
estimate.earliest = addBusinessDays(now, 1); // Next business day retry
estimate.latest = addBusinessDays(now, 3);
estimate.note = 'Delivery was attempted. The carrier will retry.';
}
追跡すべき主要指標
予測精度を継続的に向上させるために、以下の指標をモニタリングしましょう。
| 指標 | 目標値 | 説明 |
|---|---|---|
| 予測的中率 | > 85% | 予測期間内に配達された割合 |
| 平均誤差 | < 1日 | 日数の平均絶対誤差 |
| 顧客問い合わせ数 | 減少傾向 | 配達時期に関するWISMOコールの件数 |
| 信頼度の校正 | 適切 | 高信頼度の予測は95%以上の確率で正確であること |
まとめ
リアルタイムの追跡イベントと過去のデータを組み合わせることで、強力な予測システムを構築できます。
- 収集 — すべての配送に対して追跡Webhookを登録する
- 分析 — イベントを処理し、ステータスと過去のデータを使って予測を計算する
- 表示 — 適切な信頼度レベルとともに予測を表示する
- 学習 — 実際の配達実績を記録して将来の予測を改善する
- 通知 — 予測が大幅に変更された場合にお客様に通知する
このシステムをWhereParcelのマルチキャリア追跡APIの上に構築することで、500以上の配送業者にわたる一貫した追跡イベントを取得でき、グローバル規模で正確な予測を構築することが実現可能になります。
Webhookの設定について詳しくは、Webhook ベストプラクティスガイドをご覧ください。