How do I track laptop and IT asset shipments to remote employees?
Watch each shipment with the asset tag and leg (deploy or retrieval) in metadata. lastscanned sends a signed webhook when the laptop is out for delivery, delivered or stuck, so IT knows a new hire has their machine before day one and a leaver's machine is actually on its way back. For a weekly audit, send the open numbers from a CSV 35 per request. Pro is $4.99/mo for 1,000 unique numbers, then $0.015 each, with no daily limit. A free key tracks 5 numbers a day. With no key you get 1 lookup a day, then pay per request over MPP: $0.50 by card for a 25-number pack, or $0.02 a number in USDC on Tempo.
Try it
curl -X POST https://api.lastscanned.com/v1/watches \
-H "Authorization: Bearer lsk_live_YOUR_KEY" \
-H "Content-Type: application/json" \
-d '{"trackingNumber": "541270563758", "metadata": {"asset": "LT-0042", "leg": "deploy"}}'
curl -X POST https://api.lastscanned.com/v1/watches \
-H "Authorization: Bearer lsk_live_YOUR_KEY" \
-H "Content-Type: application/json" \
-d '{"trackingNumber": "1Z000Y770414233027", "metadata": {"asset": "LT-0042", "leg": "retrieval"}}'import { readFileSync, writeFileSync } from "node:fs";
const rows = readFileSync("assets.csv", "utf8").trim().split("\n").slice(1).map((l) => l.split(","));
const out = ["asset,tracking,carrier,status,newest scan"];
for (let i = 0; i < rows.length; i += 35) {
const batch = rows.slice(i, i + 35);
const res = await fetch(`https://api.lastscanned.com/v1/track?numbers=${batch.map((r) => r[1]).join(",")}`, {
headers: { Authorization: `Bearer ${process.env.LASTSCANNED_KEY}` },
});
const { results } = await res.json();
results.forEach(({ result, error }, j) => {
out.push([batch[j][0], batch[j][1], result?.carrier ?? "", result?.status ?? error.code, result?.events[0]?.timestamp ?? ""].join(","));
});
}
writeFileSync("asset-status.csv", out.join("\n") + "\n");Ways to follow IT equipment in transit
| Option | How it works | Price | Notes |
|---|---|---|---|
| Carrier sites by hand | Look up each deploy and return number. | Free | Easy to miss a retrieval box that never shipped. |
| CSV audit | Send the open numbers 35 per request and write a status per asset. | On Pro re-checks are free | Good for a weekly sweep. |
| Watches + webhook | POST /v1/watches with asset and leg in metadata. | Each number counts once | Delivered, exception and not-found events land in your IT system. |
Details
Day-one readiness
A tracking.updated event with status out_for_delivery or delivered tells IT the new hire's laptop arrives in time. An exception the week before a start date is the one worth a phone call.
Retrieval boxes that never ship
If a leaver never drops off the box, the retrieval label gets no scan and its watch ends as not_found after 14 days.
Mixed carriers
Deploys might go FedEx and returns UPS or USPS. One key covers both legs, and results share one shape.
What it costs
300 hires and 300 leavers in a month is 600 numbers, inside the 1,000 in Pro at $4.99, with every re-check free.
FAQ
- Can I link a tracking number to an asset tag?
- Yes. Put the tag in the watch's metadata and it comes back on every webhook.
- Does this work with UPS, FedEx and USPS?
- Yes, and the rest of the 549 carriers.
- Can I see all open shipments in one place?
- Yes. GET /v1/watches lists them with their latest status, and app.lastscanned.com/watches shows the same list.
- Do I need a carrier account?
- No. Any tracking number can be tracked with a lastscanned key.