# How to Automate Amazon Order Tracking using the API

- Tool: API Automations
- Difficulty: Intermediate
- Fix time: 30-60 minutes
- Compatibility: Amazon SP-API seller account; LWA OAuth credentials required; Inventory & Order Tracking role approval needed; AWS SQS for notifications
- Last updated: May 2026

## TL;DR

Automate Amazon order tracking using the event-driven architecture: subscribe to ORDER_CHANGE notifications via SQS instead of polling getOrders (which is severely throttled at 0.0167 req/sec = 1/min). When an ORDER_CHANGE event arrives, call getOrder + getOrderItems for details. Accessing buyer PII (name, address) requires a separate Restricted Data Token. FBA orders are fulfilled by Amazon — monitor FBA_OUTBOUND_SHIPMENT_STATUS notifications for shipment updates.

## Best practices

- Use ORDER_CHANGE notifications via SQS as your primary order tracking mechanism — getOrders polling at 1/min is impractical for real-time tracking
- Call getOrder (0.5 req/sec) not getOrders when you have a specific order ID from a notification — 30x better rate limit
- Handle FBA and FBM orders differently: FBA orders are fulfilled by Amazon (monitor only), FBM orders require action (submit tracking)
- Request Restricted Data Tokens for PII only when needed and cache them for their 1-hour lifetime — don't create a new RDT per order
- Implement SQS message idempotency: store processed notification IDs to handle duplicate deliveries safely
- Subscribe to FBA_OUTBOUND_SHIPMENT_STATUS notifications for FBA order delivery tracking alongside ORDER_CHANGE
- Check the x-amzn-RateLimit-Limit header on every getOrders call — your dynamic usage plan may give you a higher rate than the documented 0.0167 req/sec

## Frequently asked questions

### Why is getOrders limited to 1 request per minute?

Amazon's SP-API rate limits are operation-specific and designed to encourage event-driven architectures. getOrders was set to 0.0167 req/sec (1/min sustained) to push developers toward using ORDER_CHANGE notifications via SQS instead. This design makes sense: a notification arrives within seconds of any order change, while polling at best has 1-minute lag. Your actual applied rate may be higher than the documented default if Amazon's dynamic usage plan has raised it based on your order volume — check the x-amzn-RateLimit-Limit response header.

### What's the difference between FBA and FBM order tracking?

FBA (Fulfilled by Amazon) orders are handled entirely by Amazon's warehouses and carriers — you cannot submit tracking because Amazon does the fulfillment. You can only monitor these via FBA_OUTBOUND_SHIPMENT_STATUS notifications. FBM (Fulfilled by Merchant) orders require you to ship the product, generate a tracking number with your carrier, and submit it back to Amazon via the Listings API or Feeds API. ORDER_CHANGE notifications fire for both types.

### Why do I get a 403 when calling getOrderBuyerInfo?

Buyer name, email, and contact information are classified as PII (Personally Identifiable Information) and require a Restricted Data Token (RDT). You cannot access these fields with a regular LWA access token. Request an RDT via POST /tokens/2021-03-01/restrictedDataToken, specifying the exact operations you need (getOrderBuyerInfo, getOrderAddress). Use the RDT in place of the regular access token for those specific calls.

### How do I handle ORDER_CHANGE notification duplicates?

Amazon's Notifications API delivers messages at least once — the same event can be delivered multiple times. Use the NotificationMetadata.NotificationId field as a deduplication key. Store processed notification IDs in Redis or a database (with a TTL) and skip messages that have already been processed. Always delete SQS messages only after successful processing to enable automatic retry on failure.

### What happens when I hit the rate limit?

Amazon returns a 429 QuotaExceeded error. The x-amzn-RateLimit-Limit response header shows your actual applied rate — trust this over the documented defaults, as dynamic usage plans may give you a higher rate. For getOrders (1/min), implement a 60-second wait after any 429. For getOrder (0.5 req/sec), a 2-second wait is sufficient. Exponential backoff is appropriate for 500 and 503 errors.

### Is Amazon SP-API free to use?

As of May 2026, SP-API usage is free — Amazon announced an SP-API fee structure in November 2025 but reversed it on May 14, 2026. There are no usage fees or annual fees as of this writing. Check the SP-API Developer portal for any future fee announcements.

### Can RapidDev help build a custom Amazon order management integration?

Yes. RapidDev has built 600+ apps including multi-channel order management systems, Amazon FBM fulfillment workflows, and real-time order tracking dashboards. If you need a custom SP-API integration, get a free consultation at rapidevelopers.com.

---

Source: https://www.rapidevelopers.com/api-automations/how-to-automate-amazon-order-tracking-using-the-api
© RapidDev — https://www.rapidevelopers.com/api-automations/how-to-automate-amazon-order-tracking-using-the-api
