Shipping guide

How do I print shipping labels from a CSV file?

Export your orders, check that every row has a name, full street address, city, state, five-digit ZIP and weight, then import the file into a label tool that maps columns and prices the batch. Most failed runs come from the file: a ZIP that lost its leading zero, or one order split across several item rows.

Reviewed by Jared Ford

The columns every label needs

A carrier label needs less than an order export carries. Find these columns first and ignore the rest: payment, tax, discount and billing columns do nothing for a label, and the billing address is the one most often mapped by mistake. Weight is the column a store export is most likely to be missing. If your file has none, decide before the run where it comes from: a saved package, the listing, or a scale at the bench.

ColumnWhy the label needs itWatch for
Recipient nameThe first line of the address blockA buyer name on a gift order, where the recipient is someone else
Street, line 1The delivery address lineThe billing street sitting beside the shipping street
Street, line 2Apartment, suite or unitLeft empty when the unit was typed into line 1, which is fine
City, state, ZIPRouting and the zone, which sets the priceA four-digit ZIP, which means a leading zero went missing
CountryWhether the label needs a customs formBlank on domestic rows in some exports; treat blank as US only if the store is US-only
Weight and its unitThe price, and the service it qualifies forOunces read as pounds, or a per-item weight that was never multiplied by quantity
Box sizeDimensional weight on bigger boxesMissing from every store export; it comes from your saved packages
Order numberMatching the label back to the order and the packing slipLong numbers turned into scientific notation by a spreadsheet

Six ways an export breaks a label run

None of these show up until the batch is priced, and some only show up when a parcel comes back. Check for each one before you import, because a fix in the file is quicker than a fix on fifty labels.

What brokeHow it showsFix
ZIP lost its leading zero02134 reads as 2134 and the row fails or rates to the wrong placeOpen the CSV with the ZIP column set to Text, or pad it back to five digits
Weight in the wrong unitA 12 oz mailer priced as a 12 lb boxConfirm the unit in the header and convert grams or decimal pounds before mapping
One row per itemA three-item order becomes three labelsUse the per-order file, or group rows on the order number
Line 2 merged into line 1Unit numbers vanish, or two addresses run togetherKeep the unit at the end of line 1 or on line 2, never in the city field
International rows mixed inA row that cannot print without customs detailsSplit them out and add contents, values and tariff codes first
Duplicate rows from re-exportsThe same order shipped twiceExport by date range once, and dedupe on the order number

USPS prefers the apartment or suite at the end of the delivery address line, and allows it on the line immediately above when it does not fit. Either is fine on a label; losing it is not.

Exports that are ready to use

Every store hands you a different file, and the grain matters more than the brand. Etsy offers an orders file with one row per order and an order items file with one row per item. eBay's orders report comes from Manage orders or Seller Hub Reports, for a range of 1 to 90 days, with one row per order line. Shopify's orders export puts each line item on its own row, with a shipping block and an identical billing block, and no weight column. WooCommerce core exports products, not orders, so an orders file needs the Customer / Order / Coupon Export extension or another route.

Whatever the store, open one file before you build anything on it. Neither Etsy nor eBay publishes a full column list for these files, so map from the headers you actually got.

StoreFileOne row per
EtsyOrders, or Order itemsOrder, or item
eBayOrders reportOrder line
ShopifyOrders exportLine item
WooCommerceCustomer / Order / Coupon ExportDepends on the export format

Importing the file

  1. Count the orders in the store's own unshipped view, so you know how many labels to expect.

  2. Open the file and check the ZIP, weight and order number columns before anything else.

  3. Take international rows out into their own batch.

  4. Import the file and map each label field to one column, shipping block only.

  5. Compare the row count after import with the count from step 1. More rows means items were split; fewer means a filter or a duplicate.

  6. Price the batch, change any row that needs a different service, then buy and print.

  7. Put the tracking numbers back on the orders, by upload or by hand.

Printing the labels does not tell your store anything. A file is one way, so the tracking step at the end is yours unless the store is connected.

Key takeaways

  • A label needs a name, street, city, state, a five-digit ZIP, a weight and a box size. Billing columns are noise.
  • Check ZIPs for a lost leading zero and weights for the wrong unit before importing.
  • Know your file's grain: one row per order, or one per item.
  • Count the rows after import against the store's unshipped count.
  • Tracking still has to go back to the store after a file-based run.
With I'd Ship That

Drop in the export you already have

The Workbench, which is part of Pro, takes a CSV or Excel file and recognises many order exports on its own, among them eBay, Amazon, Shopify, WooCommerce and Squarespace, and the order files other label tools export. It also tries to read Etsy's, TikTok Shop's and Wix's files; check the column matches on your first import. A file it does not recognise gets a mapping step, one column per label field.

Rows that share an order number come in as one order, an Excel file's ZIP column gets its leading zeros back, and the import flags recipients who appear twice. Every row starts on the cheapest rate shown, and you can change any row before you buy. The batch prints as one 4x6 or letter PDF, and the tracking numbers export as a CSV for the stores you update by file.

If your store is eBay, connecting it skips the file: paid orders arrive with the address and the listing weight, and tracking goes back to eBay when the label is bought.

Open I'd Ship That

One row per order, if the store offers it, because a label is per parcel. Take the per-item file only when you need the line items for picking, and then group the rows on the order number before you price anything, or a three-item order turns into three labels.

No. A connected store sends paid orders in without a file and takes the tracking back, which removes both the export and the upload. In I'd Ship That that is the eBay connection; other stores come in by file. See bulk shipping labels for both routes side by side.

Not in I'd Ship That. File import lives in The Workbench, which is part of Pro. On the free Starter plan you create labels one at a time, from the web or the phone apps. Billing has the plan details.

By an upload or by hand, unless the store is connected. Most stores accept a bulk tracking upload with the order number, the carrier and the tracking number; uploading tracking numbers in bulk covers where each store puts it. On Etsy, tracking goes on each order through Complete order.