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.

App
AfterShipGoogle SheetsOperationsResearch & Monitoring
PromptCreate

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?
No. The dashboard reads the shipment records already in your AfterShip account and calculates the scorecard itself, so the comparisons live in a view your team controls and can reshape.
How far back can I look?
Any date range your AfterShip account still holds shipments for. A wide range takes a little longer to load the first time while it reads through the shipments, then stays quick as you sort and drill in.
Where do the carrier names come from?
They are pulled from your AfterShip account, so the scorecard shows friendly names like FedEx or DHL Express rather than internal codes.
What does the promised versus actual column actually tell me?
It compares the delivery date a carrier would normally quote for that lane against the date shipments really arrived. A carrier can look slow simply because it quotes optimistically, and this column separates the two.
Can I share the results with people who do not open the dashboard?
Yes. The Export button writes whatever you are currently looking at into a new spreadsheet, with the scorecard, lane breakdown, and shipment list on their own tabs, ready to drop into a review deck.

Related templates

Prospecting desk that builds account lists from the live web

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.

Hyperbrowser
HubSpot
Google Sheets
App
Influencer campaign roster board with AI creator briefs

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.

HypeAuditor
Google Sheets
Notion
App
Morning repricing console for Shopify with margin-safe rules

Pick a repricing rule, send an assistant out to check competitor pages, then approve the new prices that clear your margin floor.

Hyperbrowser
Shopify
Google Sheets
App
Pre-flight bounce check before you launch a cold email sequence

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.

Hunter
Google Sheets
App
Per-device electricity cost explorer for your smart home

Pick any date range and see what each device in your home actually cost to run, not just how many kilowatt-hours it used.

Home Assistant
Google Sheets
App
Build a PR media list from real worldwide news coverage

Search three months of global coverage on your topic, rank the outlets actually writing about it, and draft a tailored pitch for each one.

GDELT
Google Sheets
Gmail
App

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.