Getting started
How to automate eBay × AliExpress order tracking in 2026
If you're running an eBay store and sourcing from AliExpress, the bottleneck isn't picking products or writing listings — it's the daily ritual of tracking. For every order you ship: open AliExpress, paste the order ID, copy the tracking number, paste into your sheet, copy the status, paste again. Forty-five minutes a day, every day, forever.
Here's how to automate the whole loop. We'll cover what the right architecture looks like, which APIs to use, and the four specific things that will trip you up.
The four pieces of the pipeline
An eBay × AliExpress automation has exactly four moving parts:
- eBay sales pull — fetch new orders, with real net earning after fees.
- AliExpress order match — link the eBay order to the AE order ID you placed for sourcing.
- AliExpress tracking fetch — get the tracking ID, carrier, status, and EDD.
- Sheet write — push everything into the row, idempotently.
Step 1 — eBay sales pull (use the Finances API, not Order)
Every guide tells you to use eBay's Order API. Don't — use the Finances API instead. The Order API gives you gross prices; you'll have to estimate selling fees and ad fees yourself, and you'll be wrong. The Finances API gives you the literal payout that hit your account, with fees already deducted. That's the number you actually got paid, and it's the one you want in your "Order Earning" column.
The Finances API is gated behind a separate scope in eBay's developer console. Make sure your OAuth flow requests https://api.ebay.com/oauth/api_scope/sell.finances, otherwise the token won't work.
Step 2 — Match orders to AE order IDs
This step is manual. The eBay buyer has no idea your AliExpress order ID is. You'll need a column in your sheet (we use column H) where you paste the AE Order ID when you place the source order. Some sellers use a Chrome extension that auto-fills this; we found that fragile and prefer the manual paste — it's two seconds per order and you only do it once.
Step 3 — AliExpress tracking fetch (the tricky part)
The AliExpress Dropshipping API has two endpoints that matter:
aliexpress.ds.order.tracking.get— returns tracking ID, carrier, status, EDD.aliexpress.trade.ds.order.get— returns order amount, payment status, and refund state.
You'll want both. The tracking endpoint alone misses refunds; the details endpoint alone misses the actual courier scan events.
Watch out for these four gotchas:
- 16-digit vs 19-digit IDs. AE has two order ID formats. Both work, but the response structure differs slightly — your parser needs to handle both.
- Rate limits. AE will throttle you with "Api access frequency exceeds the limit" if you hit it too fast. Implement retry-with-backoff or you'll lose orders mid-batch.
- Carrier names are "service" names, not real couriers. AE will tell you the carrier is "AliExpress Selection Premium shipping" when the actual courier is Evri. You need a prefix-to-carrier mapper (e.g.
H06R4A→ Evri,JJD→ Yodel,GV…GB→ Royal Mail). - Refunds on delivered orders. AE doesn't update the tracking status when a refund hits — it just stays "Delivered". You have to check
gmt_refund,issue_status, and the child order list separately. We've written more on this in our refund detection guide.
Step 4 — Sheet write, idempotently
The naive approach is to write every field on every run. Don't do that — manual overrides get clobbered. The pattern that works:
- Write tracking ID and carrier always (these are the source of truth).
- Write status always (it changes over time).
- Write EDD, order amount, and order date only if the cell is empty — these don't change after the first fetch.
- Write refund always (you want the latest state).
The skip list trick
Once your queue is in the hundreds of orders, you'll want batching. The right way: hit 25 orders per click, then auto-chain to the next batch with a 1.5s delay. The trick most tutorials skip: maintain a JS-side skip list of IDs already processed in this run. Otherwise if your write doesn't take (data validation rejection, AE returns nothing for a brand-new order), the collector keeps re-returning the same rows and your chain loops forever.
The shortcut
You can build all of this yourself — it's about three weeks of work and a fair amount of API debugging. Or you can use Fetch Order Tracking, which is what we built so we'd never have to write the same code again. Either way: stop copy-pasting tracking numbers. It's 2026.