Free guide · JWillum products
How to fill the blank rows in a Shopify orders CSV export (for pick and pack lists)
Why a Shopify orders CSV has blank rows for multi-item orders and how to fill them for pick lists, pack slips and 3PL files.
Published · Updated
Export your orders from Shopify Admin and open the CSV, and something looks off. An order with three items takes up three rows, but only the first row has the customer email, shipping address, payment status and shipping method. Rows two and three hold just the line item. That layout is fine for Shopify, but it breaks pick lists, pack slips, pivot tables and anything you send to a warehouse or 3PL, because every row needs to stand on its own.
Here's how to fill those rows in safely by hand, and the mistakes that quietly mix one customer's address into another order.
Why "fill down" in Excel is risky
The obvious fix is Excel's Go To Special → Blanks, then =cell above. It fills every blank with the value above it, but it has two problems:
- It fills line-item columns too. A blank
Lineitemcell can be intentional (a discount field, a missing SKU). Filling it copies the previous product's data onto the wrong item. - It bleeds across orders. If order #1002 has a blank shipping phone, fill-down copies #1001's phone into it. Now a stranger's details sit on the wrong packing slip.
The safe rule: fill order-level columns only, and only within the same order.
Step 1: Export and back up
In Shopify Admin go to Orders → Export and pick your date range or the current filter. Save a copy of the untouched file before you edit anything. Don't sort the sheet yet: the fill depends on rows staying in their original order.
Step 2: Sort your columns into two groups
Look at the header row and split the columns into:
- Order-level:
Name(the order number),Email,Financial Status,Fulfillment Status,Shipping Method, everyShipping …address field,Notes,Currency,Created at, and so on. - Line-level: everything starting with
Lineitem(name, SKU, quantity, fulfillment status…). Never fill these.
Step 3: Make sure the order number is on every row
In many exports the Name column (like #1001) repeats on each line item. If yours is blank on continuation rows, fill that first. Every blank Name row belongs to the order above it. Put a helper column next to it with =IF(A2="",B1,A2) (where A is Name and B is the helper), copy it down, then paste the helper as values.
Step 4: Fill order-level columns within each order
For each order-level column, use a helper column that only copies from the row above if it's the same order. Say column A is the filled order number, column C is Email, and D is an empty helper column. In D2 enter:
=IF(AND(C2="",$A2=$A1),D1,C2)
In plain English: if this cell is blank and the order number matches the row above, take the value from above. Otherwise keep what's there. Copy it down, paste as values, and repeat for each order-level column. It's slow, but it can't leak into the next order.
Step 5: Trim to the columns your job needs
A full export has dozens of columns. Keep only what each job needs:
- Pick list: order number, SKU, item name, quantity, vendor, fulfillment status
- Pack list: order number, shipping name and address fields, item name, quantity, SKU, notes, shipping method
- 3PL handoff: order number, order ID, shipping fields, SKU, quantity, item name, email, currency, created date
Step 6: Save and use it downstream only
Save as CSV UTF-8. If Excel shows garbled characters, re-import through Excel's UTF-8 CSV import. Don't re-import this file into Shopify. It's for picking, packing and analysis.
Doing it faster: Shopify CSV Densifier
Shopify CSV Densifier is a single offline HTML file that applies exactly these rules. Drop in a native Shopify Admin Orders export and it:
- fills blank order-level cells only
- never fills
Lineitem*columns - resets whenever the order
Namechanges, so nothing bleeds between orders
Then pick a preset: Pick, Pack, 3PL, All, or Custom if your 3PL renamed headers. A Before | After preview highlights every filled cell, there's an optional Excel UTF-8 BOM, and you download the trimmed CSV. It also has a Products mode for analysis, with a clear banner saying not to re-import the result.
It doesn't upload to Shopify, print packing slips, or replace export apps like Matrixify. It post-processes the native Admin CSV, offline, and your order data stays on your computer.
Related tools
- Need a mailing list rather than a pack list? Shopify Customers MailMerge turns a Customers export into US/UK/CA/AU mail-merge address columns.
- Tidying a messy Etsy listings export too? Etsy Listing CSV Fixer checks titles, tags, prices and images offline.
Official documentation
The tool for this job
Shopify CSV Densifier
Shopify Orders CSV Densifier — Offline Pick, Pack & 3PL Presets
Fill the blank order-level cells in a Shopify Orders CSV, then trim it to Pick, Pack or 3PL column presets.
This guide is also published on Gumroad.