How do I get an email when my package is delivered?

On Pro, opt in per watched shipment and email goes only to your verified account address, for out for delivery, delivered and exception. You can newly monitor 10 shipments a billing period, with at most 5 exception emails per shipment. There is no email overage. It counts once toward the tracking allowance. Free accounts and prepaid packs get no email.

Try it

curl: create the watch (this is the call that counts toward tracking)
curl -X POST https://api.lastscanned.com/v1/watches \
  -H "Authorization: Bearer lsk_live_YOUR_KEY" \
  -H "Content-Type: application/json" \
  -d '{"trackingNumber": "YT2621200705470145", "metadata": {"order": "1042"}}'
JavaScript fetch: create the watch
const res = await fetch("https://api.lastscanned.com/v1/watches", {
  method: "POST",
  headers: {
    Authorization: `Bearer ${process.env.LASTSCANNED_KEY}`,
    "Content-Type": "application/json",
  },
  body: JSON.stringify({ trackingNumber: "YT2621200705470145", metadata: { order: "1042" } }),
});
if (!res.ok) throw new Error(`${res.status} ${await res.text()}`);
const watch = await res.json();
console.log(watch.id, watch.status);
Python requests: create the watch
import os
import requests

r = requests.post(
    "https://api.lastscanned.com/v1/watches",
    headers={"Authorization": f"Bearer {os.environ['LASTSCANNED_KEY']}"},
    json={"trackingNumber": "YT2621200705470145", "metadata": {"order": "1042"}},
    timeout=60,
)
r.raise_for_status()
print(r.json()["id"])
Opt-in body the signed-in Watches page sends (there is no email field)
POST https://api.lastscanned.com/v1/email-alerts/enroll
Content-Type: application/json

{"watchIds": ["wat_109060ade9f9a48732117f7a"]}

POST https://api.lastscanned.com/v1/email-alerts/disable
{"watchId": "wat_109060ade9f9a48732117f7a"}

POST https://api.lastscanned.com/v1/email-alerts/disable
{"all": true}

Who the email goes to

OptionHow it worksPriceNotes
Carrier notificationSign the recipient up on the carrier's site.FreeMail to the recipient, from the carrier.
lastscanned shipment emailWatch the number, then opt in on that shipment. Mail goes to the verified address on the account.Included with Pro. No email overage and no extra tracking charge.Free accounts and prepaid packs are not emailed.
Webhook to your serverPOST /v1/watches and receive tracking.updated yourself.The number counts once. Re-checks are free.A different channel. Stopping email leaves the webhook running.

Shipment email limits

LimitValue
Who can opt inPro, per shipment, after sign-in
RecipientThe verified email on the account
Eventsout_for_delivery, delivered, exception
New shipments with email10 per billing period
Exception emailsAt most 5 per shipment, one per distinct exception
OveragesNone. The cap stops new email only
Tracking chargeThe watch counts once. Email adds nothing
Free and prepaid packsNo shipment email

Details

The request fields that exist

Create the watch with POST /v1/watches and a trackingNumber or trackingNumbers array (up to 100), plus optional carrier and metadata. That response includes the watch id. Opt in with POST /v1/email-alerts/enroll and a watchIds array of 1 to 100 watch ids. Turn one shipment off with POST /v1/email-alerts/disable and watchId, or every shipment with {"all": true}. GET /v1/email-alerts returns the account's email state. There is no recipient field. The address is the verified email on the account. These email routes answer a signed-in dashboard session. A normal API key gets 404, because the route is only registered for that session. Open Watches after you sign in and opt in on the shipment there. GET /v1/email-alerts/unsubscribe?token= shows a confirmation page, and POST with the same token stops the email. OpenAPI does not document these routes; the fields above are the ones the API reads.

What gets emailed, and the caps

Eligible Pro accounts can opt in per shipment. The mail covers out for delivery (once per shipment), delivered (once), and a shipment exception (once per distinct exception, at most 5 for that shipment). You can newly monitor 10 shipments by email per billing period. That cap is 10 shipments, not 10 emails. Events already on the shipment when you opt in are not emailed. A missing tracking record or a failed lookup is not an exception and sends nothing. There is no email overage. Turning email on does not add a tracking charge: the watch counts once toward the 1,000 unique numbers on Pro, and re-checks are free. Hitting the cap only stops new shipment email. An enrollment keeps running into the next billing period without using another of the 10.

Who gets no email

Free accounts do not get shipment email, and prepaid packs do not either. Accounts that are not billed as Pro do not. The message follows the same watch schedule as other checks (out for delivery every 15 minutes, exception every 30, in transit hourly, label created every 2 hours). It is not a live push, and a send that times out is not retried as a second copy.

What enroll returns

results is one entry per watch id, with status enrolled, already, cap_reached or not_watchable. The same body includes available, cap (10), used, recipient (the account email), suppressed, and enrolled (the active watch ids). cap_reached means this period's 10 shipments are used. not_watchable means that watch is not open.

FAQ

Can you email me when my package is delivered?
On Pro, yes, if you opt in on that watched shipment. The message goes to your verified account address, once, when the status becomes delivered.
Can I pass the recipient in the API?
No. POST /v1/email-alerts/enroll takes watchIds only. The recipient is the account email. A Bearer API key cannot call that route.
What does shipment email cost?
Nothing extra. Pro is $4.99 a month for 1,000 unique numbers, then $0.015 each. The watch counts once. There is no email overage. Free accounts and prepaid packs get no email.
Does an exception email me every time the carrier updates?
An exception emails once per distinct exception, and at most 5 times for that shipment. Out for delivery and delivered each email once. Scans already on the shipment when you opt in are skipped.