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: watch a deploy and a retrieval shipment
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"}}'
Node: weekly audit from assets.csv (asset,tracking)
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

OptionHow it worksPriceNotes
Carrier sites by handLook up each deploy and return number.FreeEasy to miss a retrieval box that never shipped.
CSV auditSend the open numbers 35 per request and write a status per asset.On Pro re-checks are freeGood for a weekly sweep.
Watches + webhookPOST /v1/watches with asset and leg in metadata.Each number counts onceDelivered, 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.