DHL Tracking in Google Sheets: Express, eCommerce, and International
"DHL" is really four different carriers sharing a logo. DHL Express is the air-freight giant that competes with FedEx Priority. DHL eCommerce (now "DHL eCommerce Solutions") is the lower-cost parcel service that hands off to local posts. Deutsche Post is the German postal service DHL is part of. DHL Parcel runs domestic in Europe. Each has its own tracking number format, its own system, and — until a sheet can query all of them — its own silo.
This guide shows how to track every DHL brand from a single Google Sheet column. One formula, every format, every country.
The formula
Install Your Package Tracker, then in any cell:
=PKG_STATUS("1234567890", "DHL")
The add-on figures out which DHL service the number belongs to and routes accordingly. You'll get In Transit, With Delivery Courier, Delivered, Held by Customs, or Returned to Shipper back in the cell.
The DHL tracking number cheat sheet
This is the table you actually want when a DHL number doesn't resolve — the format tells you which service handles it.
| Format | Example | Service |
|---|---|---|
| 10 digits | 1234567890 | DHL Express (Air Waybill) |
| 11 digits | 12345678901 | DHL Express (some national variants) |
| JJD + 18 digits | JJD000120230000001234 | DHL eCommerce / Parcel Deutschland |
| GM + 16 digits | GM60511234567890 | DHL Global Mail / eCommerce (US handoff) |
| 3S + 10 digits | 3SABCD1234567890 | DHL Parcel (Netherlands, Benelux) |
| LX + 9 digits + 2 | LX123456789DE | Deutsche Post / DHL Parcel Europe |
| CN + 9 + 2 country | CN123456789DE | DHL Registered International |
| JVGL / JD... | JD014600006888888888 | DHL eCommerce Asia-Pacific |
Rule: pass any of them with DHL as the carrier and the add-on does the right thing. If a specific number fails to resolve, it is almost always a scan-delay issue on DHL's side — the add-on polls the right endpoint, there's just nothing there yet.
Step-by-step: a DHL tracking sheet
1. Install the add-on
Extensions → Add-ons → Get add-ons → Your Package Tracker → Install. 3 free lookups.
2. Columns
International ops teams (which is most DHL use cases) tend toward a richer column set:
| Col | Header | Example |
|---|---|---|
| A | Order | PO-11284 |
| B | Origin | Shenzhen |
| C | Destination | Berlin |
| D | Tracking # | 1234567890 |
| E | Carrier | DHL |
| F | Status | (formula) |
| G | Summary | (formula) |
| H | Last event | (formula, for customs) |
3. Formulas
F2: =PKG_STATUS(D2, E2)
G2: =PKG_SUMMARY(D2, E2)
H2: =PKG_LAST_EVENT(D2, E2)
For DHL more than any other carrier, column H (last event) is where the value is — because international shipments stall at customs, and the event text tells you where.
4. Bulk track
Bulk Track Packages is mandatory for DHL at any scale. International lookups are slower than domestic ones (multi-hop routing, customs checks), so pacing matters.
- Your Package Tracker → Bulk Track Packages
- Tracking range:
D2:D500 - Carrier range:
E2:E500 - Output: Summary (captures location for customs events)
- Start Bulk Tracking
What each DHL service looks like when tracked
DHL Express
The premium air product. Tracking is detailed and frequent — you'll see scans every few hours across origin, transit, destination hub, customs, and courier. Typical lifecycle:
Shipment information received → Picked up → Processed at origin → Departed origin facility → Arrived at destination hub → Customs clearance processing → Released by customs → With delivery courier → Delivered
DHL eCommerce
Lower cost, slower, fewer scans. Often hands off to the destination country's post office for the final mile. Common lifecycle:
Shipment information received → Arrived at sort facility → Processed through export facility → Arrived in destination country → Transferred to local postal carrier → Out for delivery → Delivered
Once the package hits "Transferred to local postal carrier," DHL's visibility drops. Local post scans may or may not show up.
Deutsche Post / DHL Parcel Europe
For intra-EU shipments, DHL Parcel is effectively the domestic parcel service. Tracking is clean and frequent, with German-language event text translated by the add-on.
DHL Global Mail (US → International)
GM-prefixed numbers are for US-origin bulk international. Tracks through DHL's hub, then a local post. The handoff is where visibility can go dark — expect a 24–48 hour gap between Arrived in destination country and the first local-post scan.
Three DHL quirks worth knowing
1. "Held by Customs" often resolves by itself
About half the time, Held by Customs is routine clearance processing that resolves in 24–72 hours with no action needed. Customs only contacts the recipient when a duty is owed or paperwork is missing. A useful rule: only escalate at the 72-hour mark.
2. The waybill format is 10 digits — not 11, not 12
DHL Express waybills are exactly 10 digits. If you have an 11- or 12-digit "DHL" number, it's almost certainly DHL eCommerce or a JJD-style internal identifier, not Express. Pasting a non-waybill into DHL Express's tracker yields "not found." The add-on figures this out for you, but if you're ever debugging by hand on dhl.com, choose the right service.
3. Scan events for international come in the local language
The raw event feed from DHL comes in the local language — German for EU intra-shipments, Chinese for some APAC, Spanish for LATAM. The add-on normalizes status words to English (Delivered, In Transit, etc.) but the Last Event text may include local-language detail. That's usually useful for ops; set expectations for customer-facing columns.
A worked example: cross-border e-commerce from China to Europe
Picture a brand manufacturing in Shenzhen, shipping to EU customers via DHL Express for premium orders and DHL eCommerce for standard.
Workflow:
- One sheet for active shipments. Columns as above.
- Column F (Status) filtered to hide
Delivered. - Column H (Last Event) scanned for
CustomsorHeld. - Column I manually, for any row stuck in customs more than 72 hours — the support agent adds a ticket link.
- End-of-week pivot: average transit time by service, split by destination country. Finance uses this to price shipping.
What this replaces: DHL's MyDHL+ dashboard (one account per shipper ID), manual CSV exports, a shared Notion page that was always stale.
Frequently asked questions
Do I need a DHL developer account? No. The add-on handles every DHL system. You don't need MyDHL+, DHL API keys, or anything else.
Is my tracking info shared with DHL? Only the tracking number and carrier name are sent to query DHL. The add-on doesn't read other cells or other files. See our Privacy Policy for the full breakdown.
Will it handle the Deutsche Post consumer tracking site's numbers? Yes — Deutsche Post parcel numbers route through the same endpoints. Letters (non-package mail) aren't trackable; that's a DHL limitation, not ours.
What happens with DHL's "proof of delivery" image?
Not available via the tracking API. You'll still need to log into MyDHL+ for the image. The event Delivered, Received by [Name] does appear in PKG_SUMMARY when DHL exposes it.
How do I handle a package that shows "Delivered" but the customer hasn't received it?
Check PKG_LAST_EVENT for the exact scan location. DHL's scan-location text usually shows whether it was left at a parcel locker, with a neighbor, at reception, etc. That's almost always enough to answer the customer.
What does it cost? 3 free lookups to try. Paid plans from $19/month. See full pricing.
The takeaway
DHL's complexity is structural — it's genuinely several carriers under one brand, with real differences in speed, scan frequency, and visibility. From inside Google Sheets, that complexity collapses into one column of status strings, updated on demand. For anyone shipping internationally with DHL, the sheet is the right dashboard.
Install Your Package Tracker free from the Google Workspace Marketplace →
Multi-carrier ops? See our guides for FedEx, UPS, and USPS — or browse all articles.