# Shopify Personalised Product Import: Engraving and Options

> Personalised product import for Shopify: fixed options go in variants, freetext input goes in line item properties. Structure it right before going live.

- Published: 2026-08-23
- Author: Importier Team
- Category: Import Guides / File Imports
- Canonical: https://www.importier.app/blog/shopify-personalised-product-import

---

A gift retailer imports 150 product SKUs covering personalised rings with optional engraving, ceramic mugs with name printing, and tote bags in three colour options with a monogram add-on. The import runs cleanly. The products appear in Shopify admin with "Engraving: Yes / No" and "Colour: Rose Gold / Silver" showing correctly as variant selectors. Then two problems surface during quality checking: customers selecting "Engraving: Yes" have no input field anywhere to specify the engraving text, and the import file column labelled "Engraving Text" has disappeared entirely.

A shopify personalised product import differs from a standard catalogue import because Shopify handles personalisation data in two fundamentally different ways. Understanding which mechanism applies to each customisation type must happen before the import file is built, not after the products are live.

<Callout>Fixed personalisation options (Engraving: Yes/No, Gift Wrap: Yes/No, Packaging: Standard/Premium) belong in the product's variant structure. Freetext customer input (the actual text to be engraved, the name to be printed) is a line item property captured at checkout by a personalisation app. These two mechanisms require completely different import structures.</Callout>

## Two Types of Personalisation in a Shopify Personalised Product Import

Shopify's product model creates a hard separation between what a merchant defines at catalogue time and what a customer provides at purchase time.

Fixed personalisation options are choices the merchant sets and the customer selects from a predefined list. "Engraving: Yes / No" is a binary option. "Packaging: Standard Gift Box / Luxury Box / Branded Bag" is a three-way choice. Each combination of fixed options maps to a distinct variant with its own SKU, price, and stock level. In the import file, these appear as standard option columns: Option1 Name, Option1 Value, Option2 Name, Option2 Value. Every row for a given product shares a Handle and carries one combination of option values, so a ring with two colours and two engraving states produces four rows under the same Handle.

Freetext customer input is text the merchant cannot enumerate in advance. A ring with an engraved name has no fixed set of possible values. "Sophie", "Forever Yours", and "Est. 2019" are all valid inputs, and there are as many possible inputs as there are customers. Attempting to import an "Engraving Text" column as a product option produces an unsolvable SKU explosion: each unique value would need its own row and its own Handle-grouped variant. Shopify's variant system is designed for enumerable options, not customer-supplied freetext.

![Two parallel rows of polished metal discs showing engraved and plain surfaces representing two personalisation data types.](/blog/shopify-personalised-product-import/01.jpg)


The correct mechanism for freetext personalisation is a [line item property](https://help.shopify.com/en/manual/checkout-settings/line-item-properties), captured at checkout by a personalisation app or checkout extension, and stored on the order line rather than on the product. This is why the "Engraving Text" column disappeared from the import review: it has no valid Shopify product mapping. That is the correct result, not an error.

## What Goes Into a Shopify Personalised Product Import File

The import file for personalised products requires clear decisions about which customisation data belongs in variants and which does not.

**Option columns for fixed choices.** Every fixed personalisation option becomes an option column. A ring available in Rose Gold or Silver, with or without engraving, needs two option columns: Option1 Name (Colour), Option1 Value (Rose Gold or Silver), Option2 Name (Engraving), Option2 Value (Yes or No). Four rows per product Handle, one for each combination. Each variant row carries a distinct Variant SKU so the merchant can track each combination in inventory. A common convention is to encode the options in the SKU: RNG-RG-Y for Rose Gold with engraving, RNG-SL-N for Silver without.

**Pricing per variant.** Most personalised products charge more for the customised version. Engraving adds a labour cost that the plain variant does not have. In the import file, the Variant Price column carries a distinct price for each row. Importier preserves these per-variant prices through the import without flattening them to a single product price. A merchant who sets a product-level price instead of per-variant prices will find Shopify applies the same price to every option combination, requiring manual correction after the import.

**Images per variant.** Where the product looks different depending on the option selected, Shopify supports variant-level images. The import file can specify a different image URL for the "Engraving: Yes" row (showing an engraved surface) versus the "Engraving: No" row (showing the plain surface). For products where both variants look identical, a single featured image on the parent product row is sufficient.

**What to exclude.** Freetext personalisation columns from the supplier's file must be removed before uploading. A "Personalisation Text", "Name to Print", or "Custom Message" column in the source file has no valid Shopify product mapping. Importier's Import Review step will flag these columns as unmapped, which is the correct signal. Remove them from the import file and configure a personalisation app to capture this input at checkout after the products are live.

![Overhead view of fabric colour swatches arranged in a precise grid representing variant combination options.](/blog/shopify-personalised-product-import/02.jpg)


<Divider label="Smart Variant Detection" />

## How Importier Handles Personalised Product Variants

Importier's Smart Variant Detection reads the option columns and groups product rows into the correct Shopify variant structure before the import commits.

For a personalised product file with "Colour" and "Engraving" option columns, Smart Variant Detection identifies that all four rows sharing a Handle represent one product with two option dimensions, then builds a 2×2 variant matrix. The Import Review step shows the full matrix before anything is written to Shopify, with each row identified by its combination (Rose Gold / Yes, Rose Gold / No, Silver / Yes, Silver / No) and its SKU and price.

The Import Review step is where structural problems in personalised product files become visible before they become live issues. The most common problem in personalised product imports is inconsistent option value capitalisation: "yes" in one row and "Yes" in another creates two separate Engraving options in Shopify instead of one. The variant matrix table in the review step makes this visible at a glance. Fixing the source file and re-uploading takes less than two minutes, while correcting 150 live products in Shopify admin takes significantly longer.

For a detailed walkthrough of how Smart Variant Detection groups options across product rows, the [shopify-variant-detection-import](/blog/shopify-variant-detection-import) article covers the full grouping logic including ambiguous notation patterns.

<Steps items="Remove freetext personalisation columns from the supplier file: any column labelled Personalisation Text, Custom Message, Engraving Text, Name, or similar. These have no Shopify product mapping. Leave only fixed option columns. | Check option value consistency: verify every option value uses consistent capitalisation across all rows for a product. 'yes' and 'Yes' in the same column creates duplicate option values in Shopify. Correct in the source file before importing. | Set up option columns: Option1 Name and Option1 Value carry the first fixed dimension (Colour). Option2 Name and Option2 Value carry the second dimension (Engraving). Every row for the same product shares a Handle and carries one option combination. | Set Variant Price per row: the Engraving: Yes rows carry the higher price (including the engraving surcharge). The Engraving: No rows carry the base price. Every row needs its own Variant Price. | Check the Import Review matrix: verify each product shows the correct number of variant combinations. Confirm SKUs are unique across all rows. Confirm prices are correct per combination. Proceed when the matrix is clean. | After the products are live in Shopify, configure your personalisation app or checkout extension to capture freetext input as a line item property on the order." />

![Wooden tokens in a sorting tray arranged in a matrix of shapes and colours representing variant grouping.](/blog/shopify-personalised-product-import/03.jpg)


## AI Descriptions for Personalised Products

AI-generated descriptions for personalised products perform most effectively when they lead with the personalisation as the core value rather than listing it as an available option.

A description that opens with "Silver ring available in Rose Gold and Silver, with or without engraving" buries what makes the product worth buying. Most customers arriving at a personalised product page are already thinking about the recipient. A description that opens with "A ring made to carry a name, a date, or a line that matters" leads with why someone buys it, not what it is.

Importier's Emotional Storytelling description style suits personalised and gift products because it frames the object in terms of human experience rather than product specification. The Benefits-First style works for more utilitarian personalisation, such as custom-printed workwear or branded merchandise, where the practical value of having the recipient's name or logo on the product is the lead.

When generating descriptions for personalised products, enter the specific option dimensions as enrichment context before running the AI: "Rose Gold or Silver finish, optional engraving of up to 20 characters." This gives the AI the specific constraints that make the output accurate. A description that says "engraving of up to 20 characters" tells the customer what they can write; a description that says "personalised engraving available" does not. The specificity difference is what separates a description that converts from one that hedges.

[Brand voice settings](https://www.importier.app/blog/shopify-product-description-brand-voice) amplify the personalisation positioning consistently across every product in a batch. If the store's brand voice emphasises sentiment and gift-giving, that tone carries through every description without manual editing of individual product pages.

<Compare withoutTitle="Option listed as product feature" withTitle="Personalisation as value proposition" withoutItems="Silver ring available in Rose Gold and Silver with optional engraving | Engraving adds 3-5 business days | Option2: Engraving: Yes / No" withItems="A ring made to carry a name, a date, or a line the wearer returns to | Rose Gold or Silver, engraved with up to 20 characters or left clean for those who let the metal speak | Same product data, different frame: Emotional Storytelling leads with intent, not inventory" />

![Open jewellery presentation box on marble surface holding a single slim silver ring.](/blog/shopify-personalised-product-import/04.jpg)


## How Checkout Extensions Read Import-Time Variant Data

Once personalised products are live in Shopify, the personalisation app or checkout extension captures freetext input at purchase and stores it as a line item property on the order. This is configured in the app, not in Importier.

The import-time variant structure determines what the checkout extension has to work with. A product imported with "Engraving: Yes / No" as a variant dimension gives the extension a clear signal: when the customer selects the "Engraving: Yes" variant, the extension presents the engraving text input field. When they select "Engraving: No", no input appears. This conditional logic depends on the variant structure being correct from the import. A product without a clear Engraving option structure requires the extension to show the text input to every customer regardless of their choice, which leads to fulfilled orders missing their personalisation details.

For the technical detail of how metafield namespace and key data from the import feeds into checkout extension attribute queries, the [shopify-checkout-product-attributes-import-customisation](/blog/shopify-checkout-product-attributes-import-customisation) article covers this flow with a jewellery engraving example.

According to [Shopify's product variant documentation](https://help.shopify.com/en/manual/products/variants), each product supports up to three option types with up to 100 variant combinations. Personalised products with multiple fixed option dimensions (colour, size, engraving, and packaging) can approach this limit quickly. A product with five colours, three sizes, two engraving states, and two packaging options produces 60 combinations and stays within the limit. Adding a fourth binary option (gift message: Yes / No) pushes it to 120, which exceeds the cap. Planning the variant structure at import time avoids discovering this ceiling after the products are already live.

<TipBox />

## Key Takeaways for a Shopify Personalised Product Import

Getting personalisation right at import time saves significant post-launch remediation. The structure set in the import file determines what the checkout experience can and cannot do.

- **Two mechanisms, two import treatments:** fixed personalisation options (Engraving: Yes/No, Packaging: Standard/Premium) belong in variant option columns with their own SKUs and prices. Freetext customer input (name, message, engraving text) belongs in line item properties at checkout, not in product data.
- **Remove freetext columns before uploading:** supplier files often include a "Personalisation Text" or "Custom Message" column. This column has no valid Shopify product mapping. Remove it from the import file before uploading. A personalisation app captures this input at checkout after the products are live.
- **Smart Variant Detection groups fixed options correctly:** Importier groups "Colour: Rose Gold / Silver" and "Engraving: Yes / No" into a 2×2 variant matrix automatically. The Import Review matrix shows the full structure before it commits, making capitalisation errors and duplicate values visible before they reach Shopify admin.
- **Pricing and images belong per variant row:** if the personalised variant costs more, set the Variant Price for each row. If the product looks different with and without engraving, specify variant-level image URLs. Importier carries distinct prices and image references for each combination.
- **Checkout extension configuration comes after the import:** the personalisation app reads the variant structure created at import time. A clean "Engraving: Yes / No" variant structure enables the extension to show the text input field conditionally. A missing or inconsistent option structure removes that conditional logic.

![Fan of paint chip cards spread in a semi-circle showing a spectrum of colour options from warm to cool tones.](/blog/shopify-personalised-product-import/05.jpg)


Import personalised products to Shopify with correct variant structures, per-variant pricing, and AI descriptions written for gift buyers at [importier.app](https://importier.app).
