Shoperize Price Calculator is live on the Shopify App Store.Install it NEW
Install Price Calculator
← All guidesOctober 28, 2026 · 11 MIN READ

Shopify Variant Metafields CSV Import: A Step-by-Step Guide

Illustration of a supplier spreadsheet being reviewed and mapped into product variant cards

Shopify variant metafields CSV import: the short answer

You can bulk-update variant metafields from a supplier CSV by matching each row to a variant on SKU, mapping CSV columns to existing metafield definitions, and reviewing the changes before anything is written. Shopify's admin gives you manual editing and a bulk editor for this, and you can add an import app when the supplier file is large or recurring. Shoperize Variant CSV is built for exactly that task, and it has been live on the Shopify App Store since October 26, 2026.

This guide walks through one supplier file from upload to restore, so you can see where each check happens. It is part of the Shoperize Shopify apps family, alongside the Price Calculator.

What you can do natively vs. with an app

A variant metafield is a custom field attached to one variant (one width, one colorway, one pack size). A product metafield is attached to the product as a whole. If a fabric comes in three widths, the width belongs on the variant, because it differs per row of your supplier sheet.

Here is what Shopify gives you on its own:

  • Metafield definitions in Settings. A definition fixes the namespace, key and type (text, decimal, boolean, list and so on) so values stay consistent.
  • Manual editing on each variant page.
  • The bulk editor, a spreadsheet-style grid in the admin where you can show metafield columns and edit many rows.
  • Shopify's product CSV import, which is built around products and handles. Shopify's Help Center documents which metafield columns it supports, so check the current docs for your store before relying on it for variant-level fields.

What none of those are designed to do is take a supplier file keyed by SKU, show you a field-by-field before/after, and keep a restore history. That gap is what an import app fills.

Where Shoperize Variant CSV fits (live since Oct 26, 2026)

Variant CSV imports a supplier CSV into existing variant metafield definitions. It matches on exact, unique SKU, validates each value against the definition's type, and shows a before/after review that you must approve before it applies anything. Blank cells leave current values unchanged, and eligible updates can be restored from a 90-day history.

It is deliberately narrow. It does not create products, edit prices or inventory, or read XLSX. More on that in the limits section.

Why supplier spec sheets are painful to load into variant metafields

Picture a fabric store with 400 variants. The supplier emails a new spec CSV each quarter with widths, material names and care text. Some values changed, most did not, and a few rows use new SKUs you have not created yet. Nobody wants to open 400 variant pages to find the 60 that changed.

Manual editing and the bulk editor: where each stops being practical

Be fair to the native tools: for 10 or 20 variants, editing by hand is fine, and the bulk editor is a good fit for a one-off cleanup of a single field. The trouble starts when the source of truth is a file someone else sends you.

  • Manual editing means finding each variant and retyping values. It is slow and typo-prone.
  • The bulk editor works inside the admin grid. You select and edit rows there, and you can paste values, but there is no step where it reads a supplier file, lines rows up by SKU, and tells you which rows did not match. Check Shopify's current docs for how many rows and columns it loads at once.
  • Neither gives you a saved mapping from this supplier's column names to your metafields, so you rebuild the process every quarter.

What goes wrong: wrong SKU matches, text in number fields, blanks wiping data

Three failures show up again and again with supplier files:

  1. Wrong or ambiguous SKU matches. A trailing space, a changed case or a duplicate SKU in the store sends a value to the wrong variant, or nowhere.
  2. Text in typed fields. Suppliers write "approx 48 in" or "48in" into a column that your definition stores as a decimal. Depending on the tool, that is either rejected late or silently mangled.
  3. Blanks wiping data. If an empty cell is treated as "set to empty", a supplier file with missing care text erases the care text you wrote yourself.

A good import process catches all three before data is written.

Your options compared

Option Best for Review before write SKU matching Undo Remote or scheduled import
Manual / bulk editor Small batches, one-off fixes You see the grid as you edit You find rows yourself No dedicated restore history in the editor No
Shoperize Variant CSV Supplier spec updates to variant metafields Required before/after approval Exact, unique SKU 90-day history, conflict checks No

Manual / bulk editor

Free, built in, and the right answer when the batch is small. Use it first if your catalog is small or your supplier file rarely changes.

Shoperize Variant CSV

Pick it when a person uploads a supplier file, wants to see exactly what will change, and wants a way back. It trades breadth for a review-first workflow.

Worked example: a 6-row supplier CSV to variant metafields

This example uses illustrative data from an imaginary fabric store. The goal: update width, material and care text on six variants.

Step 0: metafield definitions must already exist

Variant CSV writes into existing definitions. Before uploading, create these in Settings, Custom data, Variants:

CSV column Namespace.key Type
SKU (used for matching) n/a
width custom.width_in Decimal (number_decimal)
material custom.material Single line text
care custom.care Multi-line text

Using a decimal named width_in keeps the unit in the key. If you prefer Shopify's dimension type, which stores a value plus a unit, check the app listing for how Variant CSV expects dimension values to be written.

Step 1: the CSV

Save the file as UTF-8 CSV. These are the raw lines of the file (one line per bullet, remove the bullet when copying):

  • SKU,width,material,care
  • LIN-NAT-48,48,Linen,"Machine wash cold, tumble dry low"
  • LIN-SAGE-48,48,Linen,"Machine wash cold, tumble dry low"
  • COT-WHT-56,56,Cotton,Machine wash warm
  • COT-NVY-56,approx 56 in,Cotton,Machine wash warm
  • VEL-RED-54,54,Velvet,
  • VEL-RED-54B,54,Velvet,Dry clean only

Note the quotes around care text that contains a comma. Without them, a CSV reader splits the cell in two and shifts every column after it.

Step 2: upload and map columns (save the mapping for this supplier)

Upload the file and map each column to its definition using the table above. Save the mapping as this supplier's profile. Next quarter the supplier's file will have the same headers, so you pick the saved mapping instead of rebuilding it. You select only the metafields you want to touch (the app caps this at 20 per import).

Step 3: exact SKU matching

Variant CSV matches on exact, unique SKU. In our file:

  • Rows 1 to 5 match one variant each.
  • Row 6, VEL-RED-54B, matches nothing in the store. It shows as unmatched and is skipped. Maybe it is a new variant you have not created, or a supplier typo. The app does not guess, and it does not create products or variants.
  • If a SKU appeared twice in your store, it would not be a unique match and would be flagged rather than written to one of the two at random.

Step 4: typed-value validation catches "approx 56 in"

Row 4 has approx 56 in in a column mapped to a decimal. That cannot be stored as a number, so validation flags the row before any write. You have two fixes: edit the CSV to read 56 and re-upload, or correct the value as the review prompts. We change it to 56 and re-run validation. All five matched rows now pass.

Step 5: before/after review and approval

The review shows old and new values for every matched row. Here is the result for our file:

SKU Width Material Care
LIN-NAT-48 empty to 48 Linen (no change) "Machine wash" to "Machine wash cold, tumble dry low"
LIN-SAGE-48 45 to 48 "Flax linen" to "Linen" empty to "Machine wash cold, tumble dry low"
COT-WHT-56 56 (no change) Cotton (no change) "Wash warm" to "Machine wash warm"
COT-NVY-56 54 to 56 "cotton" to "Cotton" Machine wash warm (no change)
VEL-RED-54 54 (no change) Velvet (no change) "Dry clean only" stays, because the CSV cell is blank
VEL-RED-54B unmatched, skipped unmatched, skipped unmatched, skipped

Two things to notice. The blank care cell on VEL-RED-54 leaves "Dry clean only" in place, which is what you want when a supplier file is incomplete. And the "Flax linen" change would have been easy to miss by hand: a review makes you decide on it. Nothing is written until you approve.

Tile stores follow the same pattern: keep carton coverage and thickness current in metafields, then sell by carton with the Shopify tile calculator.

Step 6: reports, selected-field export and restore from 90-day history

After applying, download the CSV report to see what was written, skipped or rejected. You can also export selected fields, which gives you a clean backup of current values before your next supplier file arrives.

If the supplier file turns out to be wrong, eligible updates can be restored from the 90-day history. Restore runs conflict checks: if someone edited a value after your import (say a colleague changed LIN-SAGE-48's width to 47), that field is flagged rather than overwritten.

One limit to plan for: newly created metafields cannot be automatically undone. In our example, LIN-NAT-48's width and LIN-SAGE-48's care had no previous value, so those values were newly created and would need to be cleared by hand. Exporting before you import makes this easy to manage.

Typed values: what to put in the CSV

Each definition has a type, and every cell mapped to it must fit. Check Shopify's metafield type documentation for the full list, and the app listing for how lists and dimensions are handled.

Text, number, boolean, list, dimension: format examples

Type Example cell Notes
Single line text Linen No line breaks
Multi-line text Machine wash cold Quote cells that contain commas or line breaks
Integer 12 Whole numbers only
Decimal 48.5 Digits and a decimal point, no units or words
Boolean true Use true or false, not "yes" or "Y"
List See the listing Confirm the expected separator before importing a whole file
Dimension See the listing Stores value and unit, confirm accepted format first

When unsure, test with a two-row file first. Validation costs nothing, because the review stops before any write.

Common validation errors and fixes

  • "approx 48 in" or "48in" in a decimal. Strip the words and unit: 48. Put the unit in the key (width_in) or use a dimension definition.
  • "Yes" in a boolean. Replace with true.
  • Comma in an unquoted cell. Wrap the cell in double quotes.
  • Comma as decimal separator (48,5). Use 48.5, or the cell splits.
  • SKU with trailing space or different case. Clean it in the CSV. Matching is exact.
  • File not UTF-8. Re-save as CSV UTF-8, or accented characters (like "Velours" or "Étoffe") can arrive garbled.

Limits and what Variant CSV does not do

Limits: UTF-8 CSV, 20 MB, 10,000 rows, 100 columns, 20 selected metafields

  • UTF-8 CSV file, up to 20 MB
  • Up to 10,000 rows
  • Up to 100 columns
  • Up to 20 selected metafields per import

If your supplier file is bigger, split it by collection or product line.

Does not: create products, edit prices or inventory, delete, read XLSX, fetch remote files, schedule imports

  • It does not create products or variants. For that, use Shopify's native product import.
  • It does not edit prices or inventory.
  • It does not delete products, variants or metafield definitions.
  • It does not read XLSX. Export to CSV first.
  • It does not fetch supplier files remotely (no FTP, URL or email pickup) and does not schedule imports. Someone uploads each file.
  • Restore does not automatically undo newly created metafields.

If you need a feed that runs on its own every night, an automation tool is the better fit. If you need to load whole new catalogs, use a product import tool. Variant CSV is for the specific job of keeping supplier specs on existing variants accurate, with a review.

Pricing and how to try it

$14.99/month, 7-day free trial; upload, mapping and validation work before purchase

Variant CSV costs $14.99 per month with a 7-day free trial. You can upload a file, map columns and run validation before you buy, so you can test your own supplier CSV and see which rows would fail. Install it from the Shopify App Store listing or read the Variant CSV app page.

If your store also sells by area, length or package, the Shoperize Price Calculator turns shopper measurements into purchasable quantities. See the Price Calculator launch post and our square footage calculator guide for flooring and tile stores whose coverage specs come from supplier CSVs. More guides are on the Shoperize blog.

Ready to try it on your own supplier file? Install Shoperize Variant CSV (details at shoperize.com/apps/variant-csv), and find setup help at help.shoperize.com.

Frequently Asked Questions

How do I import a CSV file into Shopify?

For products, use Import on the Products page in the Shopify admin and upload a file that follows Shopify's CSV template. For supplier data going into variant metafields, an app like Shoperize Variant CSV matches rows by SKU and shows a review before it writes anything.

How do I bulk edit product metafields in Shopify?

Create the metafield definitions first, then open the bulk editor from the Products page and show the metafield columns you want to edit. It works well for small batches. For a supplier file with hundreds of rows, an import app that maps columns and validates values is faster.

How do I add products to Shopify?

Add them one at a time from the Products page, or use Shopify's native product CSV import for many at once. Shoperize Variant CSV does not create products or variants. It only updates metafields on variants that already exist in your store.

How to check product count in Shopify?

Open the Products page in your Shopify admin and use the filters or tabs to narrow the list. The admin shows the count for the current view, and the exact layout can change, so check Shopify's current help docs.

A GOOD PLACE TO START

Your store.
A little more personal.

Tell us where you sell. Let’s explore what a shopping companion could do for your customers.

Free to join. No payment details. We’ll use these details for early-access updates.Read our privacy notice