I recently built a FedEx Shipment Tracker using the Smartsheet API + FedEx API, and I wanted to share the approach with the Smartsheet Community.
Our use case involves tracking shipments to thousands of retail locations during a short shipping window. Instead of manually checking FedEx tracking numbers, I created a dedicated Smartsheet where users can paste tracking numbers and trigger an update directly from the sheet.
The workflow is:
Smartsheet → Python → FedEx API → Smartsheet
The integration automatically:
- Reads tracking numbers from Smartsheet
- Sends them to the FedEx Tracking API in batches
- Pulls the latest shipment status and delivery information
- Extracts the store/location ID from the FedEx customer reference
- Updates Location ID, FedEx Status, Estimated Delivery, Actual Delivery, Last Scan Location, Exceptions, and Last Checked
- Skips shipments already marked Delivered
- Writes tracking errors back into Smartsheet for review
I also added a Run FedEx Update checkbox in Smartsheet. A Windows scheduled task monitors the checkbox, so users can trigger the tracking update directly from Smartsheet without needing access to Python or the FedEx Developer Portal.
The first production test with approximately 1,500 shipments worked successfully, and I’ll be testing the workflow with our next project shipment as well.
One of the things I like most about this setup is that Smartsheet remains the user-facing tool, while the API integration handles the work behind the scenes.
This was my first time building a Python/API integration like this, so it was a great example of how Smartsheet can be extended beyond native automations when Bridge isn’t available.