# Ship-today desk for eBay orders with rates and labels

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

- Workflow type: app
- Services: eBay, Shippo, Google Sheets
- Categories: Operations, Sales
- Published: 2026-08-21

## What it does

- Opens on a queue of paid orders that still need shipping, sorted by ship-by deadline, with anything close to breaching your handling time highlighted so you work the urgent ones first.
- Every row shows the buyer's address, the items and SKUs, and the shipping service the buyer picked at checkout, so you never have to open Seller Hub to work an order.
- Hit Get rates on any row to compare live carrier prices side by side. Pick one and the label is bought, the tracking number goes back to eBay so the order marks as shipped, and the cost is logged to your shipping spreadsheet.
- A Plan today's batch button sends an assistant through the whole queue to price every order, pick the cheapest service that still meets the delivery promise, and flag problems like a bad address or an oversized parcel, so you can approve everything and buy the labels in one pass.

## What you'll need

- An eBay seller account with permission to view orders and create shipping fulfillments
- A Shippo account with your carrier accounts connected and a payment method on file for buying labels
- A Google Sheets spreadsheet to use as your running shipping log
- Your usual box sizes and package weights, so the rates that come back are accurate

## Prompt

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.

## How to customize

- Change how early an order gets flagged as at risk, for example anything due within the next four hours instead of the next day.
- Set the rule the batch assistant follows when it picks a service: cheapest that still arrives on time, fastest, or always prefer one carrier.
- Point the shipping log at a different spreadsheet or tab and add columns like item cost, buyer location, or the person who bought the label.

## FAQ

### Will the order actually show as shipped on eBay?

Yes. After the label is bought, the app sends the tracking number and carrier back to eBay as a shipping fulfillment, which is what marks the order shipped and starts tracking for the buyer. You do not have to re-enter it in Seller Hub.

### Does buying a label here charge me?

Labels are bought through your own Shippo account using your own connected carrier accounts and payment method, at whatever rates you already get. The app never buys a label without you confirming a specific rate first.

### What if I already shipped an order somewhere else?

On every refresh the app checks each order against the shipping records already on eBay, so anything that was fulfilled elsewhere drops out of the queue instead of showing up as still needing a label.

### Does the batch planner buy labels on its own?

No. It only proposes. It prices every order in the queue and writes a suggested carrier, service, and cost onto each row, along with any problems it hit. Nothing is purchased until you review the batch and approve it.

### What happens to orders the planner cannot price?

They stay in the queue with the reason attached, such as an address that failed validation, a parcel that is oversized for the chosen service, or an order where no carrier returned a rate. You can fix those by hand and price them individually.

Use this prompt in General Input: https://www.generalinput.com/prompts/ship-today-desk-for-ebay-orders-with-rates-and-labels