Push Notifications - NDR Eligible Shipments
Push Notifications (WebHook) is a feature enabled by Amazon Shipping (IN marketplace only) which helps shippers/integrators to automatically receive NDR-eligible tracking IDs as soon as they become eligible without the need to make any external API calls. Developers, including shippers and integrators, can subscribe to updates for NDR eligible tracking IDs via their webhook URL endpoint.
Steps to Subscribe to Push Notification Feature:
- The shipper/integrator needs to provide their -
- Webhook URL
- Authentication Mechanism
- Shipper Account ID or Shipping Party Account ID (for whom push notifications are being setup)
- Point of contact emails.
- Once these details are shared with the Account Manager they will be able to request webhook subscription setup.
- The Account Manager will internally coordinate configuring and activating the subscription for notifications.
Supported Authentication Mechanisms
One of the following must be enabled by the Shipper/Integrator:
| # | Method | Description | Example |
|---|---|---|---|
| 1 | API Key | A token sent by Amazon in the request headers when delivering tracking information to your webhook URL. |
X-API-KEY: abcdef12345 |
| 2 | Query Parameter | A key-value pair passed in the URL. Useful when you want to express a request entirely in a URL. |
https://example.com/webhook?X-Amz-Credential=<your-access-key-id> |
| 3 | Username & Password | A key-value pair passed in the header to authenticate the incoming request via username and password. |
Basic Auth header |
| 4 | OAuth 2.0 | Open Authorization framework. Amazon obtains an access token via OAuth 2.0 Client Credentials flow and presents it when calling your webhook. |
Bearer token in Authorization header |
Push Notifications payload follows this envelope structure with detail and few metadata fields: detail Object
| Name | Description | Schema |
|---|---|---|
| trackingId | Tracking ID for the container for which tracking events are requested. | TrackingId |
| latestDeliveryAttemptedDate | The ISO 8601 formatted timestamp of the latest delivery time. | string (date-time) |
| deliveryAttemptCount | Delivery attempts of the shipment | string |
| shipmentStatus | High-level status of the shipment. | Status (enum) |
| reasonCode | The reason code. | string |
| paymentType | Mentions Prepaid/ CollectOnDelivery order type | string |
| ndrDueDate | The ISO 8601 formatted timestamp (UTC) of the NDR due date. | string (date-time) |
| expectedDeliveryDate | The ISO 8601 formatted timestamp (UTC) of the expected delivery date | string (date-time) |
| appId | The application id configured for webhook (optional) | string |
| version | Payload schema version. | integer |
| timeToLive | TTL value for the event. | integer |
Important: Ensure your webhook parser handles additional fields gracefully. We periodically enhance the payload with new attributes to make notifications more informative — these additions are backward-compatible, but if your parser is strict (e.g., fails on unrecognised fields), it may break when new fields are introduced. A flexible/lenient JSON parser that ignores unknown properties is recommended
Sample event:
{
"version": "0",
"id": "48af9743-336e-00eb-7194-de9975baa012",
"detail-type": "NDR Events",
"source": "AmazonShipping",
"account": "434519225125",
"time": "2024-02-21T19:33:09Z",
"region": "eu-west-1",
"resources": [],
"detail": {
"trackingId": "370379477568",
"referenceID": " WBNBLR-37228",
"latestDeliveryAttemptedDate": "2026-07-03T01:35:24Z",
"deliveryAttemptCount": "2",
"shipmentStatus": " Attempted ",
"reasonCode": " Payment not ready",
"paymentType": "CollectOnDelivery",
"ndrDueDate": "2026-07-01T04:08:59Z",
"expectedDeliveryDate": "2026-07-02T14:30:00Z",
"shippingPartyAccountId": "A2P2W6RMQDPNGR ",
"ndrEligible":"true",
"eventTime":"2026-07-03T09:38:10Z"
}
}
FAQs
Onboarding & Subscription
1. What is the need for push notifications?
Using push notifications helps shippers to automatically receive updates about NDR eligible shipments they become available.
2. Who can enable NDR Push Notification Tracking feature?
3rd Party Integrators and direct integrated shippers who are using Shipping V2 API to create shipments for Amazon Shipping carrier can use this feature to get NDR notifications
3. What details does the Shipper/Integrator need to provide to enable Push Notifications?
| Detail | Description | Example |
|---|---|---|
| Webhook URL | Your HTTPS endpoint for receiving notifications |
https://tracking.notification.xxx/webhook/amazon-shipping/ |
| Authentication Method | Credentials for one of the 4 supported auth types |
API Key: 93GXXXXXXAhq$XXX |
| Contact Email Address | Technical contact to receive alerts if webhook health is bad |
[email protected] |
| Shipping Account Details | Customer's Shipping Account ID or Name |
Name: NewShipper, SPID: AC123TY7890 |
| Application ID (Optional) | AppId from Solution Provider Portal / Seller Central |
amzn1.sp.solution.xx3gh3fc-xx12-4z74-c2c4-u1234567890r |
4. Are HTTPS webhooks required?
Yes. HTTPS is a mandatory requirement for webhook URLs. Amazon will only accept and configure HTTPS-enabled webhook URLs to ensure secure communication and protect sensitive data during transmission
5. How long does it take to enable push notifications?
Push Notifications are configured via our tech team. You will receive a response within 5 business days
6. How can a Shipper/Integrator request Push Notification NDR?
Push Notifications can only be enabled for orders shipped with Amazon Shipping. As the subscription process is manual as of today, please contact your Amazon Account Manager for further assistance to enable Push Notification Tracking feature.
7. List of shipmentStatus and reasonCode?
| shipmentStatus | reasonCode |
|---|---|
| Attempted | Customer Unavailable |
| Rejected | Not required |
| Undeliverable | Out of Jurisdiction |
Troubleshooting
8. My webhook is returning 401 Unauthorized — what's wrong?
Common causes:
- API Key mismatch — Verify the key-value pair matches what was configured during onboarding.
- OAuth token expired — Ensure your OAuth endpoint issues tokens with sufficient TTL.
- Username/Password incorrect — Verify the Basic Auth credentials match your endpoint's configuration.
9. I'm not receiving any events after subscription — what should I check?
- Verify your endpoint is publicly accessible (not behind a VPN or firewall).
- Ensure your endpoint returns HTTP 2xx for POST requests.
- Check that your authentication credentials are valid and accessible
- Contact your Amazon Account Manager to verify your subscription is active and enabled
Updated 8 days ago
