Ship-today desk for eBay orders with rates and labels

By General Input

Work every paid eBay order from one screen: see the ship-by deadline, compare carrier rates, buy the label, and mark the order shipped.

Integrations

  • eBay
  • Shippo
  • Google Sheets

Type

App

Categories

  • Operations
  • Sales

Build me a "ship today" desk for my eBay orders so I can stop bouncing between Seller Hub and my label provider. The app opens on a single queue of orders that are paid but not yet shipped, loaded from eBay with Get Orders filtered on fulfillment status. Sort the queue by ship-by deadline, soonest first, and visually highlight any order that is close to breaching my handling time so I work the urgent ones first. Each row shows the buyer name and full shipping address, the line items with quantities and SKUs, the shipping service the buyer selected at checkout, and the order total. eBay Sell API calls need the X-EBAY-C-MARKETPLACE-ID header set to my marketplace, so make the marketplace a setting on the app.

Each row has a "Get rates" button. Pressing it calls Shippo Create Shipment with my ship-from address, the buyer address parsed from the eBay order, and the parcel dimensions and weight, using default parcel presets I can configure and edit per order before requesting. Then show the results of Retrieve Shipment Rates in a panel side by side with the order details: carrier, service level, cost, and estimated days in transit, with the option that best matches the buyer's selected service called out. Shippo label buying is a two step flow, so hold the created shipment object and its rates in app state between the rates view and the confirm action instead of re-creating the shipment.

Confirming a rate calls Shippo Create Transaction (Buy Label) against that rate id. Label purchase is asynchronous, so poll Retrieve Transaction (Label) until the status settles and the label URL is populated, then surface the label for printing and show any error messages returned on the transaction rather than assuming success. Once the label exists, push the tracking number and carrier back to eBay with Create Shipping Fulfillment for that order so it marks as shipped, and append a row to my Google Sheets shipping log with Append Values containing the order id, buyer, carrier, service, label cost, tracking number, and date.

Add a "Plan today's batch" button at the top that kicks off a background agent. The agent walks every order in the current queue and for each one creates the shipment in Shippo and pulls its rates, then picks the cheapest service whose transit time still meets the delivery promise on the order. It writes its proposal back into the app so each row shows the proposed carrier, service, and cost, plus any exception it hit, such as an address that fails validation, a parcel that is oversized or overweight for the chosen service, or an order where no rates came back. Persist the proposals and exceptions so they survive a refresh.

Once the agent finishes, I review the batch, uncheck anything I do not want, and hit approve to buy all the approved labels in one pass. Approving runs the same confirm flow per order: buy the label, poll until it settles, create the eBay shipping fulfillment with the tracking number and carrier, and append to the shipping log. Orders with exceptions stay in the queue with their reason attached so I can fix them by hand and price them individually.

On refresh, drop rows that are already fulfilled, verified against eBay Get Shipping Fulfillments for the order rather than relying only on the order status field, so anything I shipped elsewhere disappears from the queue. Show a running count at the top of how many orders are left to ship today and how many are at risk of a late shipment.

Related prompts

Explore more prompts
Call overdue Xero customers with an AI collections agentLocal listing health board for every location you manageLet support send one-off Loops emails without an engineerStop cold emails to anyone with a live deal in PipedriveiMessage campaign console with pre-flight checks and delivery boardLinkedIn Ads budget pacing dashboard for every client accountFront desk appointment confirmation board for the next 3 daysGive your team Looker numbers without buying more seatsBuild audience segments from product usage and push to LoopsTurn the people who engage with your posts into Pipedrive leads