Orders5 min read

Shopify Flow to Google Sheets: One Row per Order, Not One per Product

Shopify Flow writes one Google Sheets row per product, which breaks label imports. Why it happens, and how to get one row per order without sending twice.

In this guide
  1. Why does Shopify Flow give me one row per product?
  2. Which row shape does each team need?
  3. How do I get one row per order in Columna?
  4. How do I get the orders into Google Sheets?
  5. How do I stop the same order from being sent twice?
  6. A quick check before the first label run
  7. FAQ
  8. Try Columna: Order Export & Sheets

When you use Shopify Flow to export orders to Google Sheets, a workflow that adds product details usually loops over the line items and writes one row on each pass, so an order with three products becomes three rows. To get one row per order, write the order once without looping over its items, or export from a template set to one row per order. To avoid sending the same order twice, tag each order once it is in the sheet.

This matters most when the sheet feeds a GLS or UPS label import. The label tool reads each row as a parcel, so a three-item order turns into three labels, or someone deletes rows by hand every morning. Below: why Flow writes the sheet that way, which row shape each team needs, and the steps in Columna: Order Export & Sheets for one row per order.

Why does Shopify Flow give me one row per product?

A Shopify order is one record with several line items inside it. A spreadsheet row is flat. To get product details such as SKU, title or quantity into the sheet, a Flow workflow typically uses a loop over the order’s line items and adds a row inside that loop. Every pass writes a row, so the number of rows equals the number of line items.

That shape is right for some jobs, such as a workshop that makes each item separately. It is wrong for a shipping label import, where one order should be one parcel with one address.

Two other things tend to come up with a home-made Flow setup:

  • Nothing records which orders reached the sheet. If a workflow runs again for the same order, or a second trigger fires, the order is written again.
  • Line-item properties have to be mapped by hand. Engraving text, gift messages and upload links sit in line-item properties, and each one needs its own step in the workflow.

Which row shape does each team need?

Ask who reads the sheet before you change anything.

Who reads the sheet Row shape Why
Shipping and label printing One row per order One address, one parcel, one label
Production, engraving, packing by item One row per line item Each item keeps its own engraving text or gift message
Accounting One row per order Each order and its totals sit on a single row

You may need two layouts. That is fine: keep one template for labels and another for the workshop. Our guide to one row per line item vs one row per order compares the two in more detail.

How do I get one row per order in Columna?

In Columna, the layout of an export comes from a saved template, and the template lets you choose one row per order or one row per line item.

  1. Open Columna and start a new export template, for example “Labels”.
  2. Choose one row per order for the row layout.
  3. Pick only the columns your label tool reads, such as order number, shipping name, company, address 1 and 2, city, province code, zip, country code and phone. Put them in the order the tool expects.
  4. Rename the headers to match the column names your label tool’s import asks for.
  5. Save the template.
  6. Filter the orders, for example paid orders that are not yet fulfilled, and export a test with a multi-product order in it. Check that the order has one row.

Leave prices and gift messages out of the label template. The people printing labels do not need them. If your workshop needs a per-item sheet, save a second template with one row per line item.

How do I get the orders into Google Sheets?

There are two routes:

  • Google Sheets sync. Columna can send orders to a Google Sheets spreadsheet you connect. The Free plan includes one Google Sheets sync and Pro includes up to 5, so a labels sheet and a workshop sheet can each have their own sync on Pro.
  • Export and import. Export the template as an XLSX or CSV file, built in your browser, then in Google Sheets choose File > Import, then Upload.

Whichever route you use, check the first run with a multi-product order before you print any labels from the sheet.

How do I stop the same order from being sent twice?

Turn on tagging in Columna to add a tag to the orders you export. The tag shows on each order in Shopify, so anyone can see which orders are already in the sheet, and you can filter by it on the Orders page. This is optional: if you turn it on, the app also asks for permission to write orders, only to add that tag.

For more on why rows repeat and how to keep them unique, see how to send Shopify orders to Google Sheets without duplicate rows.

A quick check before the first label run

  1. Pick a test order with three products.
  2. Export or sync it with your label template.
  3. Open the sheet and confirm the order takes one row, with the right shipping address.
  4. If tagging is on, check that the order now carries the tag in Shopify.
  5. Import the sheet into your label tool and confirm it creates one parcel for the order.

FAQ

Why does my Flow workflow add several rows for one order?

Because the row is added inside a loop over the order’s line items. Each line item adds a row, so three products give three rows with the same order number.

Can I keep one row per line item for the workshop and one row per order for labels?

Yes. Save two templates in Columna, one set to one row per order and one set to one row per line item, and use each for its own sheet or export.

Which columns does a label import need?

Usually the order number, shipping name, address lines, city, postcode, country and phone. Check your label tool’s import format and match the header names in your template to it.

Does Columna change my orders?

Only if you turn on tagging, and then only to tag the orders you exported. Otherwise it reads orders and products.

Try Columna: Order Export & Sheets

Columna: Order Export & Sheets exports Shopify orders to CSV or XLSX with line-item properties, such as engraving text, gift messages and upload links, each in its own column. The file is processed in your browser. It is made for shops that hand orders to production, fulfilment or accounting.

Build your label template with one row per order and test it on a multi-product order. Try Columna: Order Export & Sheets on the Shopify App Store.