✓ Verified 💻 Development ✓ Enhanced Data

Shipment Tracker

Track packages across carriers (USPS, UPS, FedEx, DHL, Amazon, OnTrac, LaserShip)

Rating
4.9 (47 reviews)
Downloads
724 downloads
Version
1.0.0

Overview

Track packages across carriers (USPS, UPS, FedEx, DHL, Amazon, OnTrac, LaserShip)

Complete Documentation

View Source →

Shipment Tracker

Track packages across multiple carriers from a markdown shipments file. Auto-detects carrier from tracking number patterns. Hybrid status checking: tries direct HTTP first, falls back to recommending browser-use for full tracking details.

Shipments File Format

The skill reads a markdown file with a table of active shipments:

markdown
# Active Shipments

| Order | Item | Carrier | Tracking | Link | Added |
|-------|------|---------|----------|------|-------|
| Acme #1234 | Widget | USPS | 9449050899562006763949 | [Track](https://...) | 2026-02-19 |
  • Carrier and Link are optional — auto-detected from tracking number pattern
  • Remove entries once delivered to keep the file clean
  • Default location: memory/shipments.md in the workspace

Usage

bash
# Check all active shipments
python3 scripts/shipment_tracker.py memory/shipments.md

# JSON output for integrations
python3 scripts/shipment_tracker.py memory/shipments.md --format json

# Detect carrier from a tracking number
python3 scripts/shipment_tracker.py --detect 9449050899562006763949

Carrier Detection

Automatically identifies carrier from tracking number patterns:

CarrierPattern Examples
USPS92, 93, 94, 95 + 20-26 digits
UPS1Z + 16 alphanumeric
FedEx12, 15, or 20 digits; 7489 prefix
DHL10-11 digits or 3 letters + 7 digits
AmazonTBA + 12+ digits
OnTracC or D + 14 digits
LaserShipL + letter + 8+ digits

Status Checking (Hybrid)

  • Direct HTTP — Attempts to extract status from carrier tracking pages via urllib. Works for basic status on USPS and some other carriers.
  • Browser-use fallback — When HTTP fails or carriers use JS-heavy pages, the script provides the exact browser-use command to run.
When the script output includes needs_browser_use: true, it will provide a complete browser-use command:

python
python3 -c "
import asyncio
from browser_use import Agent, Browser, ChatBrowserUse
async def main():
    browser = Browser(use_cloud=True)
    llm = ChatBrowserUse()
    agent = Agent(
        task='Go to <tracking_url> and extract the current tracking status, delivery date, and location',
        llm=llm, browser=browser
    )
    result = await agent.run(max_steps=10)
    print('TRACKING:', result)
asyncio.run(main())
"

This ensures reliable tracking across all carriers, even those with aggressive bot detection.

When browser-use is needed:

  • UPS, FedEx, Amazon (heavily JS-based tracking pages)
  • USPS when basic parsing fails (complex status updates)
  • Any carrier with CAPTCHA or bot detection
  • Sites that require user interaction or form submission

Workflow

  • User provides a tracking number → run --detect to identify carrier
  • Add to memory/shipments.md with order details
  • Morning briefing or on-demand: run the script to check all shipments
  • For shipments needing browser-use:
  • Non-sensitive packages: Use the provided browser-use command
  • Privacy-sensitive packages: Manual browser check instead (data stays local)
  • When delivered: remove from the shipments file
Privacy guidance: For medical supplies, personal items, or confidential orders, consider manual tracking to avoid sending shipment details to cloud services.

System Access

Direct skill execution:

  • File reads: One markdown file (path provided as argument)
  • Network: HTTPS GET to carrier tracking pages (e.g., tools.usps.com) — read-only, no authentication
  • No file writes, no subprocess calls, no shell execution
Browser-use fallback (privacy implications): When the skill recommends browser-use commands, external data transmission occurs:
  • Tracking numbers and order information sent to cloud browser service
  • Package details processed by external LLM (ChatBrowserUse)
  • Carrier tracking URLs accessed via cloud infrastructure
Privacy consideration: Browser-use fallback involves third-party services that may log or process shipment data. For sensitive packages, consider manual browser tracking instead of the provided browser-use commands.

Requirements

  • Python 3.10+
  • Outbound HTTPS access to carrier tracking sites
  • browser-use (optional, for full tracking on JS-heavy sites)

Installation

Terminal bash

openclaw install shipment-tracker
    
Copied!

💻Code Examples

| Acme #1234 | Widget | USPS | 9449050899562006763949 | [Track](https://...) | 2026-02-19 |

-acme-1234--widget--usps--9449050899562006763949--trackhttps--2026-02-19-.txt
- **Carrier** and **Link** are optional — auto-detected from tracking number pattern
- Remove entries once delivered to keep the file clean
- Default location: `memory/shipments.md` in the workspace

## Usage

python3 scripts/shipment_tracker.py --detect 9449050899562006763949

python3-scriptsshipmenttrackerpy---detect-9449050899562006763949.txt
## Carrier Detection

Automatically identifies carrier from tracking number patterns:

| Carrier | Pattern Examples |
|---------|-----------------|
| USPS | 92, 93, 94, 95 + 20-26 digits |
| UPS | 1Z + 16 alphanumeric |
| FedEx | 12, 15, or 20 digits; 7489 prefix |
| DHL | 10-11 digits or 3 letters + 7 digits |
| Amazon | TBA + 12+ digits |
| OnTrac | C or D + 14 digits |
| LaserShip | L + letter + 8+ digits |

## Status Checking (Hybrid)

1. **Direct HTTP** — Attempts to extract status from carrier tracking pages via urllib. Works for basic status on USPS and some other carriers.
2. **Browser-use fallback** — When HTTP fails or carriers use JS-heavy pages, the script provides the exact browser-use command to run.

When the script output includes `needs_browser_use: true`, it will provide a complete browser-use command:
example.md
# Active Shipments

| Order | Item | Carrier | Tracking | Link | Added |
|-------|------|---------|----------|------|-------|
| Acme #1234 | Widget | USPS | 9449050899562006763949 | [Track](https://...) | 2026-02-19 |
example.sh
# Check all active shipments
python3 scripts/shipment_tracker.py memory/shipments.md

# JSON output for integrations
python3 scripts/shipment_tracker.py memory/shipments.md --format json

# Detect carrier from a tracking number
python3 scripts/shipment_tracker.py --detect 9449050899562006763949
example.py
python3 -c "
import asyncio
from browser_use import Agent, Browser, ChatBrowserUse
async def main():
    browser = Browser(use_cloud=True)
    llm = ChatBrowserUse()
    agent = Agent(
        task='Go to <tracking_url> and extract the current tracking status, delivery date, and location',
        llm=llm, browser=browser
    )
    result = await agent.run(max_steps=10)
    print('TRACKING:', result)
asyncio.run(main())
"

Tags

#devops_and-cloud

Quick Info

Category Development
Model Claude 3.5
Complexity One-Click
Author pfrederiksen
Last Updated 3/10/2026
🚀
Optimized for
Claude 3.5
🧠

Ready to Install?

Get started with this skill in seconds

openclaw install shipment-tracker