Get Fedex Tracking Info
Audience:
Low-code EngineersSkill Prerequisites:
Actions,Tokens,Connectors,FedEx Web Services account
Gets the tracking status of a FedEx shipment. You give it a tracking number or another package identifier. It sends a tracking request to FedEx and returns the whole reply as tokens.
The action uses a Fedex connector for your FedEx keys and passwords. Create it on the Connectors page before you add the action.
This action is part of the FedEx Tracking add-on (DnnSharp.FedexTracking). The add-on is installed separately and is licensed with the FDEXTRK feature, but the action doesn't check the license when it runs. If you don't see the Fedex Tracking action group, the add-on isn't installed. See FedEx Tracking.
The action uses the FedEx Web Services (SOAP) API, Track Service version 18. FedEx is retiring the SOAP Web Services and moving customers to its REST APIs. When FedEx turns off the SOAP Track Service for your account, this action stops working. For new work, call the FedEx Track REST API with Server Request instead.
Typical Use Cases
- Show the current status of a shipment on an order page
- Save the latest status of an order's shipment in the database from a scheduled job
- Check whether a package was delivered before you send a follow-up email
Don't use it to
- Create shipments or print labels. The action only reads tracking data.
- Track many packages at once. Each run sends one package identifier.
- Track shipments of other carriers.
Related Actions
| Action Name | Description |
|---|---|
| Parse JSON into Tokens | Reads the lists in the reply, such as the track details and the scan events. |
| Create List from JSON | Loads a list from the reply, for example all scan events, to loop through it. |
| Add Connector | Creates a Fedex connector from an action. |
| Update Connector | Changes the details of a Fedex connector from an action. |
| Server Request | Calls the FedEx REST APIs, which this action doesn't support. |
Input Parameter Reference
| Parameter | Description | Supports Tokens | Default | Required |
|---|---|---|---|---|
| Test Mode | When checked, the request goes to the FedEx test server, https://wsbeta.fedex.com:443/web-services/track. When unchecked, it goes to the live server, https://ws.fedex.com:443/web-services/track. Use the test keys with the test server. | No | Unchecked | No |
| Connector | The Fedex connector with your keys and passwords. When using an expression, the value must be the connector ID. If no connector is found, the action fails with Credentials not set. | Yes | none | Yes |
| Account Number | Your FedEx account number. | Yes | empty string | Yes |
| Meter Number | The meter number of your FedEx account, up to 9 characters. | Yes | empty string | Yes |
| Customer Transaction Id | Your own ID for the request, up to 40 characters. FedEx returns it in the reply, so you can match replies to requests. | Yes | empty string | No |
| Package Identifier Type | What Package Identifier holds. The list has the FedEx identifier types, for example Tracking number or doortag, Bill of lading, Customer reference, Invoice, Purchase order and Shipper reference. | No | Tracking number or doortag | No |
| Package Identifier | The value to track, for example a tracking number such as [TrackingNumber]. | Yes | empty string | Yes |
| Include Detailed Scans | true to get every scan event of the package. false, or empty, to get a summary with the current status. | Yes | empty string | No |
The action doesn't check the required values itself. It sends the request, and FedEx returns an error in the reply. See Check the reply for errors.
Output Parameters Reference
| Parameter | Description |
|---|---|
| Output Base Token Name | The base name of the output tokens, for example Tracking. Always set it. |
The action creates these tokens from the FedEx reply:
| Token | Description |
|---|---|
[<Output Base Token Name>] | The whole FedEx reply as JSON. |
[<Output Base Token Name>:<property>] | Each value at the top of the reply, for example [Tracking:HighestSeverity]. |
[<Output Base Token Name>:<property>.<subproperty>] | Each value inside an object of the reply, for example [Tracking:TransactionDetail.CustomerTransactionId]. |
Property names use the FedEx Web Services names and capitals, for example HighestSeverity, Notifications and CompletedTrackDetails.
Read the reply
Lists aren't expanded. A property that holds a list, such as Notifications or CompletedTrackDetails, becomes a single token with the list as JSON. To read the items, use Parse JSON into Tokens on that token. Lists inside the items are again single tokens, so you need one more parse for each level.
The shipment status is three levels down. For a base name of Tracking:
- Parse
[Tracking:CompletedTrackDetails]with base nameCompleted. This gives[Completed:0.TrackDetails]. - Parse
[Completed:0.TrackDetails]with base namePackage. This gives[Package:0.TrackingNumber],[Package:0.StatusDetail.Code]and[Package:0.StatusDetail.Description], for exampleDelivered.
With Include Detailed Scans set to true, the scan events are in [Package:0.Events]. Load them with Create List from JSON to list them.
Severities are numbers. Values that are FedEx code lists, such as HighestSeverity and the Severity of each notification, are numbers, not names:
| Value | Severity |
|---|---|
0 | ERROR |
1 | FAILURE |
2 | NOTE |
3 | SUCCESS |
4 | WARNING |
Other code lists in the reply work the same way.
Dates are in ISO 8601 format.
Check the reply for errors
The action only fails when the request can't be sent or FedEx returns a SOAP fault, for example when the server can't be reached. When FedEx answers with an error, such as wrong keys, a missing account number or an unknown tracking number, the action succeeds and the error is in the reply.
So check the reply after the action:
[Tracking:HighestSeverity]is0(ERROR) or1(FAILURE) when the request failed. In a condition, use[Tracking:HighestSeverity] < 2.- Parse
[Tracking:Notifications]to read[<base>:0.Code]and[<base>:0.Message]. - FedEx can also report a problem with one package, such as an unknown tracking number, in that package's notification. After step 2 above, read it in
[Package:0.Notification.Message].
Considerations
- Connector values. The Fedex connector holds the
WebAuthenticationDetailvalues of the FedEx Web Services. Application Key and Application Password are always sent. Account Key and Account Password are only sent when Account Key has a value. See the FedEx documentation for how to get them. - No connection test. Test Connector doesn't support Fedex connectors. Run this action in Test Mode to check them.
- Large replies. The action uses the default size limit of the .NET SOAP client, 64 KB. A reply with detailed scans for a shipment with many packages can go over it, and then the action fails.
- Set the base name. If Output Base Token Name is empty, the tokens start with
:and are hard to use. - The reply is saved as tokens only. To keep the status, save it to the database yourself, for example with Run SQL Query.
Examples
To understand how to use the below examples, please see Running Examples.
1. Get the status of a tracking number
These actions track the number in the TrackingNumber token on the live server, using the connector whose ID is in FedexConnectorId. They then read the status of the first package into [Package:0.StatusDetail.Description].
[
{
"Title": "Get Fedex Tracking Info",
"ActionType": "FedexTracking.TrackFedexShipping",
"Description": "Track the shipment",
"Parameters": {
"TestMode": false,
"Credentials": {
"IsExpression": true,
"Entry": "[FedexConnectorId]"
},
"AccountNumber": "[FedexAccountNumber]",
"MeterNumber": "[FedexMeterNumber]",
"CustomerTransactionId": "Order [OrderId]",
"PackageIdentifierType": "TRACKING_NUMBER_OR_DOORTAG",
"PackageIdentifier": "[TrackingNumber]",
"IncludeDetailedScans": "false",
"OutputBaseTokenName": "Tracking"
}
},
{
"Title": "Parse JSON Into Tokens",
"ActionType": "ParseJsonIntoTokens",
"Description": "Read the track details",
"Parameters": {
"JsonString": "[Tracking:CompletedTrackDetails]",
"BaseTokenName": "Completed"
}
},
{
"Title": "Parse JSON Into Tokens",
"ActionType": "ParseJsonIntoTokens",
"Description": "Read the first package",
"Parameters": {
"JsonString": "[Completed:0.TrackDetails]",
"BaseTokenName": "Package"
}
}
]
2. Show an error when FedEx rejects the request
Add these actions after the actions in example 1. When the highest severity is 0 (ERROR) or 1 (FAILURE), they parse the notifications and show the first message.
[
{
"Title": "Parse JSON Into Tokens",
"ActionType": "ParseJsonIntoTokens",
"Description": "Read the FedEx notifications",
"Condition": "[Tracking:HighestSeverity] < 2",
"Parameters": {
"JsonString": "[Tracking:Notifications]",
"BaseTokenName": "Notice"
}
},
{
"Title": "Display Error Message",
"ActionType": "ShowError",
"Description": "Show the FedEx error",
"Condition": "[Tracking:HighestSeverity] < 2",
"Parameters": {
"Message": "<p>FedEx couldn't track this shipment: [Notice:0.Message] ([Notice:0.Code])</p>"
}
}
]
Revised 10/03/2026