Courier performance dashboard for your carrier reviews
Compare every carrier on on-time rate, transit time, and exceptions for any date range, then drill into the shipments behind each number.
I want an internal dashboard I can open whenever I am deciding which courier to keep paying. It reads shipment data from AfterShip and turns it into a carrier scorecard I can slice by date range and by lane, drill into, and export.
At the top of the page, put a date range picker with presets such as last 30 days, last quarter, and a custom range. Everything below it reacts to the selected range. Directly underneath, show a scorecard table with one row per courier and these columns: shipment volume, on-time delivery rate, average transit days, and exception rate. Sort by volume by default, and let me sort by any column so I can rank carriers by whichever metric matters that day.
The metrics handler should page through AfterShip List Trackings for the selected dates using its cursor pagination: pass limit and cursor, then read data.pagination.next_cursor and data.pagination.has_next_page to decide whether to fetch again. Page in sequence rather than in parallel, because the account is capped at 10 requests per second. Resolve courier slugs into friendly carrier names with Get Couriers, and note that every AfterShip response is wrapped in a { meta, data } envelope. Cache the computed result per date range inside the handler so sorting, filtering, or drilling in does not refetch every page of shipments.
Compute shipment volume as the number of trackings in the range, on-time rate as the share of delivered shipments that arrived on or before their expected delivery date, average transit days as the mean number of days between pickup and delivery for delivered shipments, and exception rate as the share of shipments that hit an exception status. Show the underlying counts next to each rate, so a 100 percent on-time rate built on three shipments is not mistaken for a strong result.
Below the scorecard, add a lane view that breaks the same four metrics down by origin country and destination country pair. Let me group it either by lane across all carriers or by carrier within a lane, so I can see which routes are dragging a particular carrier's numbers down, and highlight lanes that are meaningfully worse than that carrier's own average.
Add a promised versus actual column to the lane view. Call AfterShip Batch Predict Estimated Delivery Date for the lanes currently on screen, since it accepts multiple shipment lanes in a single request, and compare the predicted delivery window against the real delivery dates for the shipments in that lane. Present it as the average gap in days plus a plain label such as on target, optimistic quoting, or genuinely slow, so I can tell whether a carrier is actually slow or just quoting dates it cannot hit.
Clicking any courier row or lane row drills into the underlying shipment list, filtered to that courier or lane within the selected date range. Each row shows tracking number, courier, origin, destination, ship date, promised date, actual delivery date, transit days, and current status. Clicking a shipment opens its checkpoint history from AfterShip Get Tracking by ID, rendered as a timeline of checkpoint messages with timestamps and locations. Fetch that checkpoint detail only when a shipment is opened, not for the whole list.
Put an Export button on the page that writes the current filtered view into a fresh spreadsheet using Google Sheets Create Spreadsheet, then fills it with Append Values. Name the spreadsheet after the selected date range, and give it one tab for the courier scorecard, one for the lane breakdown, and one for the shipment list behind the current filter. Show me the spreadsheet link when it finishes so I can drop it straight into our quarterly carrier review deck.
Remember my last selected date range so the dashboard reopens where I left it. While the first load for a range is running, show progress rather than a blank screen, since a wide range means paging through a lot of shipments. If a range has no shipments, or a carrier has too few shipments to judge fairly, say so plainly instead of showing a misleading percentage.
What does this prompt do?
- Pick any date range and see a scorecard of every courier you use: shipment volume, on-time delivery rate, average transit days, and exception rate side by side.
- Break the same numbers down by shipping lane, so you can spot which origin and destination pairs are dragging a carrier's average down.
- See promised delivery dates next to what actually happened, so you can tell a genuinely slow carrier from one that just quotes optimistically.
- Click any courier or lane to see the shipments behind the number and each one's checkpoint history, then export the current view to a fresh Google Sheet.
What do I need to use this?
- An AfterShip account where your shipments are already being tracked
- A Google account, so the export can create a spreadsheet in your Drive
- Shipments that carry origin and destination country details, which is what the lane view groups by
How can I customize it?
- Change the date range that loads by default when you open the dashboard, such as last 30 days or last quarter.
- Adjust what counts as on time, for example allowing a one day grace period against the promised date.
- Change how lanes are grouped, such as by state or city instead of country, or add your own columns to the scorecard.
FAQs
Do I need a paid analytics plan to use this?
How far back can I look?
Where do the carrier names come from?
What does the promised versus actual column actually tell me?
Can I share the results with people who do not open the dashboard?
Related templates
Stop buying stale lists. Reps run a saved search, work the results like an inbox, and only the accounts they approve ever reach your CRM.
Drag creators through Sourced to Wrapped on a board grouped by campaign, with audience stats on every card and a one-click brief for each creator.
Pick a repricing rule, send an assistant out to check competitor pages, then approve the new prices that clear your margin floor.
See the projected bounce rate for any outbound send before it goes out, and keep the launch button locked until the list is clean enough to be safe.
Pick any date range and see what each device in your home actually cost to run, not just how many kilowatt-hours it used.
Search three months of global coverage on your topic, rank the outlets actually writing about it, and draft a tailored pitch for each one.
Stop guessing which carrier is actually underperforming.
Open one dashboard, pick a date range, and see every courier and every lane ranked on the numbers that decide the contract.