Shop
Package Tracking

Package Tracking

TimberCloud Storefront — Product Catalog

TimberCloud provides real-time package tracking with automatic status updates, customer notifications, and seamless order status management through integration with the Parcels API.

Overview

The tracking system provides:

  • Real-time status updates via webhooks and polling
  • Multi-carrier support for all major carriers
  • Automatic order updates when packages are delivered
  • Customer notifications at each tracking milestone
  • Complete event history for every shipment

How It Works

Dual Update System

TimberCloud uses two methods to ensure tracking is always up-to-date:

MethodTimingPurpose
WebhooksReal-timeInstant updates when carrier scans package
PollingEvery 15 minutesBackup to catch any missed webhooks

This dual approach ensures 99.9% reliability - if a webhook fails, polling catches the update within 15 minutes.

Tracking Flow

1. Order Shipped

2. Tracking Number Added

3. Registered with Parcels API

4. Real-time Updates (Webhook + Polling)

5. Customer Notifications

6. Package Delivered

7. Order Status Updated Automatically

Tracking Statuses

StatusIconDescription
pending📝Tracking created, awaiting first scan
info_received📋Carrier has shipment info
in_transit🚚Package moving through network
out_for_delivery📦On vehicle for delivery
delivery_attempt_failed⚠️Delivery attempted but failed
deliveredPackage delivered successfully
exceptionProblem with delivery
expiredTracking no longer active
cancelled🚫Shipment cancelled

Supported Carriers

Major Carriers (Automatic Detection)

  • UPS - All services (Ground, Air, etc.)
  • FedEx - Express, Ground, Home Delivery
  • USPS - Priority, Express, First Class
  • DHL - Express Worldwide

Regional & Freight Carriers

  • LaserShip
  • OnTrac
  • Spee-Dee Delivery
  • ABF Freight
  • Estes Express
  • XPO Logistics
  • And many more...

The system automatically detects the carrier from the tracking number format.


Adding Tracking Numbers

From Order Details

  1. Open the order in your admin panel
  2. Navigate to the Shipping section
  3. Click "Add Tracking Number"
  4. Enter the tracking number
  5. Select carrier (optional - auto-detected)
  6. Add notes if needed
  7. Save

Automatic from Label Generation

When you generate a shipping label through TimberCloud:

  • Tracking number is automatically captured
  • Linked to the order
  • Registered for tracking updates
  • Customer is notified automatically

Multiple Tracking Numbers

Orders can have multiple tracking numbers:

  • Split shipments from different locations
  • Separate packages for large orders
  • Different carriers for different items

Real-Time Updates

Webhook Integration

When Parcels API receives carrier updates:

  1. Webhook sent to TimberCloud
  2. Tracking record updated instantly
  3. Socket event emitted to connected clients
  4. Frontend updates in real-time
  5. Customer notification triggered (if enabled)

Polling Backup

Every 15 minutes, the system:

  1. Queries all active (non-delivered) tracking numbers
  2. Fetches latest status from Parcels API
  3. Updates any changed records
  4. Checks if all packages for an order are delivered
  5. Updates order status if complete

Automatic Order Status Updates

When all tracking numbers for an order show as "Delivered":

  1. System automatically updates order status to "Delivered"
  2. Sets dateDelivered to actual delivery timestamp
  3. Marks order as shipped = true
  4. Emits real-time update to admin dashboard
  5. Triggers delivery confirmation notification

Customer Experience

Order Tracking Page

Customers can view tracking on their order page:

  • Current status with icon
  • Estimated delivery date
  • Complete event timeline
  • Carrier name and service
  • Direct link to carrier tracking

Event Timeline

Each tracking update shows:

  • Date and time of event
  • Location (city, state, country)
  • Status description
  • Event details

Email Notifications

Configure notifications for:

EventDescription
ShippedTracking number added
In TransitFirst movement scan
Out for DeliveryOn vehicle for delivery
DeliveredPackage delivered
ExceptionProblem with delivery

Admin Dashboard

Tracking Overview

View all active shipments:

  • Filter by status
  • Search by tracking number
  • Sort by date or carrier
  • Quick status indicators

Manual Sync

Force an update for any tracking number:

  1. Open tracking record
  2. Click "Sync Now"
  3. Fetches latest from Parcels API
  4. Updates immediately

Bulk Actions

  • Sync all tracking for an order
  • Export tracking data
  • Update carrier information
  • Add notes

Tracking Data

Information Tracked

FieldDescription
tracking_numberThe carrier tracking number
carrierCarrier name (UPS, FedEx, etc.)
carrier_codeCarrier identifier
current_statusLatest status
status_detailsCurrent status description
estimated_deliveryExpected delivery date/time
actual_deliveryWhen package was delivered
shipped_dateWhen package was shipped
originShip-from location
destinationShip-to location
status_historyComplete event timeline
last_checkedWhen last synced

API Endpoints

Create Tracking Number

POST /api/tracking-numbers
{
  "tracking_number": "1Z999AA10123456784",
  "order": 123,
  "carrier": "UPS",
  "notes": "Package 1 of 2"
}

Sync Tracking Number

POST /api/tracking-numbers/:id/sync

Sync All Tracking for Order

POST /api/tracking-numbers/sync-order/:orderId

Webhook Endpoint (Parcels API)

POST /api/tracking-numbers/webhook
// Called automatically by Parcels API

Configuration

Environment Variables

# Required
PARCELSAPP_API_KEY=your_api_key_here
 
# Optional (for webhook setup)
PARCELSAPP_WEBHOOK_URL=https://your-domain.com/api/tracking-numbers/webhook

Polling Settings

Default: Every 15 minutes

To adjust frequency, modify the cron schedule:

// Every 15 minutes (default)
'*/15 * * * *'
 
// Every 30 minutes
'*/30 * * * *'
 
// Every hour
'0 * * * *'

Best Practices

  1. Add tracking promptly - Enter tracking numbers as soon as labels are generated
  2. Use automatic capture - Let label generation auto-populate tracking
  3. Monitor exceptions - Set up alerts for delivery problems
  4. Keep customers informed - Enable email notifications
  5. Verify tracking numbers - Ensure correct format before saving

Troubleshooting

Tracking Not Updating

Check:

  • Parcels API key is configured
  • Tracking number format is valid
  • Carrier is supported
  • Webhook URL is accessible (for real-time)

Solution:

  • Try manual sync from admin
  • Verify API credentials
  • Check server logs for errors

Order Not Marked Delivered

Check:

  • All tracking numbers for the order
  • Each tracking shows "delivered" status
  • No tracking numbers stuck in transit

Solution:

  • Manually sync all tracking
  • Check individual tracking statuses
  • Verify all packages are accounted for

Webhook Not Receiving Updates

Check:

  • Webhook URL is publicly accessible
  • SSL certificate is valid
  • No firewall blocking requests
  • Server is running

Solution:

  • Test webhook URL accessibility
  • Check ngrok setup (for development)
  • Review server logs
  • Verify Parcels API configuration

Tracking Number Not Found

Check:

  • Number is entered correctly
  • Carrier has received the package
  • Allow 24 hours after label creation

Solution:

  • Wait for carrier's first scan
  • Verify number with carrier directly
  • Check for typos in tracking number