Orders8 min read
Export Shopify Orders With Line-Item Properties for Production
Engraving text, gift messages and upload links live in line-item properties. How to get them out of Shopify orders and into a production sheet without retyping.
In this guide
- What line-item properties are
- What Shopify’s own order export contains
- Why copying by hand goes wrong
- Step 1: Agree on property names
- Step 2: Decide what production actually needs
- Step 3: Choose one row per item
- Step 4: Export the batch and work from the file
- Step 5: Keep the sheet with the batch
- Pitfalls to check before your first batch
- FAQ
- Exporting line-item properties with Columna: Order Export & Sheets
If you sell personalised products, the most important part of an order is often not the product name or the price. It is the text the customer typed into the engraving field, the gift message, or the link to the file they uploaded. On Shopify, those details are stored as line-item properties.
Shopify’s built-in order export does not give you those properties. That is why the same question has appeared in the Shopify Community for years: how do I get the engraving text into a spreadsheet? Many engraving and print shops end up opening each order and copying the text by hand into CorelDraw, Illustrator or a production sheet.
This guide explains what line-item properties are, what the standard export does and does not contain, why copying by hand goes wrong, and how to set up an export your production team can work from.
What line-item properties are
A line-item property is a name and value attached to one item in an order. Your product form creates them when a customer fills in a custom field. In a theme, these are form inputs named properties[Engraving], properties[Font] and so on, as Shopify’s theme docs describe. Typical examples:
| Property name | Example value |
|---|---|
Engraving |
Anna & Tom, 12.06.2026 |
Font |
Script |
Gift message |
Happy birthday, Dad! |
Upload |
A link to the customer’s artwork file |
Three things matter for exporting them:
- They belong to the line item, not the order. An order with three engraved items carries three separate engraving texts. Your sheet has to keep each text with its own item, or the texts get mixed up.
- The same product can appear twice. When two items of the same variant have different properties, Shopify keeps them as separate line items in the cart. Two rings with two different names are two rows, not one row with quantity 2.
- Each product can have different properties. A ring might have
EngravingandFont, while a print hasUploadandSize. A useful export keeps each property name in its own column so you can sort and filter by it.
Shopify also lets a theme hide a property from customers at checkout by starting its name with an underscore, as the Liquid line_item reference notes. Apps often use names like _preview_id for their own reference data. Expect a few of these in your data and leave out the ones your makers do not need.
Properties are not the same as note attributes
Shopify has a second, similar field: note attributes (sometimes called cart attributes). They belong to the whole order, not to one item. A delivery date or “how did you hear about us” answer is usually a note attribute. When you plan your sheet, check which of the two your theme or app writes to, because they come out in different places.
What Shopify’s own order export contains
Shopify admin can export orders to a CSV file: filter your orders, click Export, choose which orders, and pick Export orders or Export transaction histories. Exports of more than 50 orders, or exports by date, are emailed to you and the store owner rather than downloaded.
The order CSV has columns for line items such as Lineitem name, Lineitem quantity, Lineitem SKU and Lineitem price, plus Notes and Note Attributes for the order. It has no column for line-item properties. That is the gap personalised shops run into.
| What you need | In the standard order CSV? |
|---|---|
| Order number, date, customer, address | Yes |
| Product name, SKU, quantity per item | Yes |
| Order note and note attributes | Yes, as order-level columns |
| Engraving text, font, upload link per item | No |
Why copying by hand goes wrong
Copying from the order page into a design file works for a handful of orders. As volume grows, the same problems show up:
- Typos in the one place a customer will notice. A wrong letter on an engraved gift is a remake, not a small error.
- Missed items. On orders with several personalised items, it is easy to copy the first and skip the rest.
- Lost upload links. Artwork links have to be opened and saved one by one, and a missing file stops the job.
- No record of what was sent to production. When a customer disputes the text, there is no sheet to check against.
Step 1: Agree on property names
Before you export anything, make sure your product forms use consistent property names. Engraving, engraving text and Text to engrave will end up as three different columns. Pick one name per field, write it down, and use it on every product that offers that option. If you use a product options app, check the label it saves, not just the label customers see on the page.
Step 2: Decide what production actually needs
Your production sheet is not the same as your accounting report. For most engraving and print shops, a useful sheet contains:
- Order number and order date
- Product name, variant and SKU
- Quantity
- Each property the maker needs: text, font, colour, upload link
- Any gift message that has to go in the box
Leave out what the maker does not need. A shorter sheet is faster to check. Keep prices and customer emails out of a file that goes to a workshop or an outside printer.
Step 3: Choose one row per item
For production, use one row per line item. Each engraved item gets its own row with its own text, and an order with three items becomes three rows that all carry the same order number. One row per order works for accounting, but it forces several items’ texts into one cell, which is exactly where mistakes start. We compare the two layouts in more detail in one row per line item vs one row per order.
If you also export order totals in the same file, make sure they appear only once per order. Otherwise anyone who sums the column will count an order’s total once for every item in it.
Step 4: Export the batch and work from the file
Export the orders you are about to produce, for example unfulfilled orders from today, with each item’s properties kept next to that item. Then:
- Sort by product or SKU so all items of the same type are made together.
- Check the text column once for obvious problems, such as an empty engraving field on a product that requires one, or text longer than your engraving area allows.
- Open the upload links and save the artwork into your job folder, named by order number.
- Paste or import the text into your design file instead of retyping it. Most design tools can merge variable text from a CSV.
A simple way to define “today’s batch” is an order tag. Tag orders as they go to production, then export only untagged unfulfilled orders next time. Our guide to bulk fulfilling and tagging orders covers tagging in bulk.
Step 5: Keep the sheet with the batch
Save the exported file with the date of the batch. If a customer asks why their item reads the way it does, you can show exactly what came in with the order.
Pitfalls to check before your first batch
- Excel and special characters. Names with accents or emoji can break when a CSV opens with the wrong encoding. Shopify’s own CSV files are UTF-8; if text looks garbled, import the file through Excel’s data import instead of double-clicking it.
- Separators. In many European Excel setups, a comma-separated file opens as one long column. Use a semicolon separator or an XLSX file.
- Line breaks inside a gift message. A message typed over several lines stays in one cell in a correct CSV. If it spills into new rows, the file was not quoted properly.
- Edited orders. If you change an order after export, your sheet is out of date. Re-export, or note the change on the sheet.
- Older orders. Apps that read orders through the API see orders from the last 60 days by default. Reading older orders needs the
read_all_orderspermission, which Shopify must approve for each app.
FAQ
Can Shopify export line-item properties without an app?
Not in the standard order CSV. It includes line items, the order note and note attributes, but no columns for line-item properties. You can see properties on each order page, copy them by hand, or use an app or a custom report that reads them through the API.
Why does one order show up as several rows?
Because the export is one row per line item. That is what you want for production: each item keeps its own engraving text. The order number repeats on each row, so you can still group by order.
What is the difference between line-item properties and note attributes?
Line-item properties belong to one item, such as the text on one ring. Note attributes belong to the whole order, such as a requested delivery date. Shopify’s order CSV includes note attributes but not line-item properties.
Why are some property names starting with an underscore?
A property whose name starts with an underscore is hidden from customers at checkout. Apps use these for internal data. They are still part of the order, so leave them out of your production sheet unless your makers need them.
Exporting line-item properties with Columna: Order Export & Sheets
Columna: Order Export & Sheets is a Shopify app on the Shopify App Store that exports orders to CSV or Excel with each line-item property and note attribute in its own column. You pick and order the columns in a reusable template (a “Personalized items” preset is included), choose one row per order or one row per line item, filter by date, payment status, fulfillment status or tag, and the file is built in your browser. If you want it for your next production batch, email us for early access. If you also ship to Germany or France, the same order data feeds the packaging figures described in packaging EPR for print-on-demand sellers.