How do I track modem, router and telecom CPE shipments by API?

Watch the replacement's tracking number and the old unit's return label with the same swap order in metadata. Your endpoint gets a signed tracking.updated event when the new modem is out for delivery or delivered, so support can schedule activation, and when the return is scanned, so unreturned-equipment fees only go to subscribers whose box never shipped. 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 both legs of a swap
curl -X POST https://api.lastscanned.com/v1/watches \
  -H "Authorization: Bearer lsk_live_YOUR_KEY" \
  -H "Content-Type: application/json" \
  -d '{"trackingNumbers": ["9612804045318533301017", "1Z54V8630394427740"], "metadata": {"order": "SWAP-2207"}}'
Node: route swap events
// after checking the Lastscanned-Signature header (see the webhooks docs)
export async function onLastscanned(event) {
  if (event.type !== "tracking.updated") return;
  const { watch, result } = event.data;
  const order = watch.metadata.order;
  switch (result.status) {
    case "out_for_delivery": return notifySubscriber(order, "Your new equipment arrives today");
    case "delivered": return markDelivered(order, watch.trackingNumber, result.deliveredAt);
    case "exception": return openTicket(order, result.statusDescription);
  }
}

Ways to follow equipment swaps

OptionHow it worksPriceNotes
Carrier sites by handLook up each replacement and return.FreeDoesn't scale past a few swaps a day.
Nightly batchSend open swap numbers 35 per request and update order status.On Pro re-checks are freeA day behind for out-for-delivery.
Watches + webhookPOST /v1/watches with the swap order and leg in metadata.Each number counts onceOut for delivery re-checked every 15 minutes.

Details

Two numbers, one order

Watches added in one call share the metadata, so the handler gets the swap order on both the replacement and the return, and the tracking number tells you which leg it is.

Fees only when the box never ships

A return label with no carrier scan ends as not_found after 14 days; one that is scanned shows in_transit. Bill on the first case, not the second.

Same-day activation

Out-for-delivery numbers are re-checked every 15 minutes, so the activation reminder goes out the morning the modem arrives.

What it costs

1,250 swaps in a month is 2,500 numbers: $4.99 + 1,500 × $0.015 = $27.49, with every re-check free.

FAQ

Can I track the replacement and the return under one order?
Yes. Give both watches the same order id in metadata.
Which carriers are supported?
UPS, FedEx, USPS and the rest of 549 carriers, in one response shape.
How quickly do I hear about delivery?
Out-for-delivery packages are re-checked every 15 minutes, and a change sends a webhook right away.
Can I list every open swap?
Yes. GET /v1/watches pages through active watches with limit and cursor.