Shopify Bulk Edit Variant Metafields: Methods for 2027

Short answer: how to bulk edit variant metafields in Shopify
Use Shopify's built-in bulk editor when you are typing or pasting values for up to a few hundred variants. Use a supplier-CSV import when the values arrive in a file keyed by SKU, change repeatedly, and you want a review step before anything is written. Many stores never need more than the native editor, and that is a fine answer.
| Method | Best for | Stops at |
|---|---|---|
| Bulk editor | Hand-entered or pasted values, a few hundred variants | No SKU matching, no rules, no undo after saving |
| Product CSV | Full product-level exports and imports | Check current docs for variant metafield support; blank cells can overwrite |
| Shopify Flow | Ongoing automation on a trigger | Not built for a one-time supplier file |
| Supplier-CSV import app | Repeat supplier files matched by SKU | Needs existing definitions; limits vary by app |
Before you start: metafield definitions and variant metafields
A variant metafield is a custom field attached to one variant instead of the whole product. It is addressed as namespace.key, for example custom.thickness. Bulk tools generally work only with metafields that have a definition, because the definition tells Shopify the type and where the field lives.
Create the definition first
Go to Settings > Custom data > Variants and add a definition for each field. Pick the type carefully, since changing types later is painful once values exist. If a metafield is missing from the bulk editor's column list, the most common cause is that it has no definition at the variant level (or was defined for products by mistake).
The types that matter for supplier specs:
- Single-line text: materials, finish names, notes.
- Number (integer or decimal): PEI class, pieces per carton.
- Dimension: one measurement with a unit, such as 9.5 mm. It holds a single value, so a "600 x 300" size needs two fields (length and width) or a text field.
- Boolean: true or false.
- List: several values in one field, such as a list of single-line text. Lists have a maximum number of entries and each value has its own length limit, so check Shopify's current documentation for the types you use.
Back up first
Before any bulk change, copy the current values somewhere. In the bulk editor you can add the metafield columns and copy them into a spreadsheet. Whichever tool you use, keep a dated file of the "before" state, because native editing gives you no one-click revert.
The scenario used in this guide
A tile store has these variant definitions: thickness (dimension, mm), pei_class (integer), is_rectified (boolean), finish_options (list of single-line text), plank_length and plank_width (dimension, mm). Once specs like these are clean, a Shopify tile calculator can use box coverage data to sell by area, and the same applies to a flooring calculator for Shopify: wrong carton data means wrong orders.
Method 1: Shopify's bulk editor for variant metafields
The bulk editor is a spreadsheet-style grid inside the Shopify admin. Menu names change over time, so confirm against the current Shopify Help Center, but the flow is:
- Open Products and select the products you want (or use filters, then select all).
- Click Edit products (bulk edit).
- Click Columns and add your variant metafield columns from the metafields section. Only metafields with definitions appear.
- Expand products so each variant has its own row. Variant metafields are edited on the variant rows, not the product row.
- Type values, or paste a column copied from a spreadsheet. Fix any red-flagged cells, then save.
Paste a column from a spreadsheet
If you can line up your spreadsheet rows in exactly the same order as the variant rows in the grid, you can paste a whole column. This works for a handful of products. The risk is the "same order" part: one sorted column or one missing row shifts every value below it onto the wrong variant, and the grid will not tell you.
Where it stops
- No SKU matching. The grid does not look values up by SKU from your supplier file. You match them by eye or by sorting.
- No rules or mapping. Supplier headers like "Rectified (Y/N)" must be converted by hand.
- No undo after saving. Shopify does not offer a one-click revert of a saved bulk edit.
- Re-keying every time. The supplier sends a new file next quarter and you start again.
- Error-prone at scale. Hundreds of variants across many pages is where mismatches creep in.
Good enough when: the values are entered by you, the variant count is in the dozens or low hundreds, and the job is occasional. In that case you do not need an app.
Method 2: Product CSV and Flow, and why they rarely fit
Product CSV
Shopify's product CSV is designed around product rows with variants listed beneath them, keyed by handle. Support for metafield columns has grown over time, but we have not seen it be a clean fit for "update one spec column on existing variants by SKU". Check the current Shopify Help Center page on importing and exporting products to see whether variant metafield columns are included for your store, and test with a two-row file before running a real one.
Two things to watch with any native CSV import:
- Blank cells. A blank cell in an overwrite-style import can clear a value that already exists. Test on a copy of a few products before trusting it with the catalog.
- Full-row files. A product CSV carries many other columns (titles, prices, inventory, SEO fields). A supplier spec update should not put those at risk.
Shopify Flow
Flow runs when something happens (a product is created, a tag is added). It can set metafields, which is useful for ongoing rules such as "when a variant is tagged X, set Y". It is not a good tool for applying a 3,000-row supplier file once, because the data is not in Shopify to trigger from.
Method 3: Update variant metafields from a supplier CSV (worked example)
Here is the supplier's file, shown as a table. Six rows, one deliberately bad each in several ways.
| SKU | Thickness (mm) | PEI | Rectified | Finishes | Size (L x W mm) |
|---|---|---|---|---|---|
| 00412 | 9,5 | 4 | Y | Matte; Polished | 600 x 300 |
| 00413 | 9.5 | 4 | Y | Matte | 600 x 300 |
| 00520 | 10 | 3 | N | Matte; Textured | 900 x 150 |
| 00521 | 10 | (blank) | N | Matte | 900 x 150 |
| 00630 | 12 | 5 | maybe | Polished | 1200 x 600 |
| 00999 | 8 | 2 | N | Matte | 300 x 300 |
The problems: row 1 uses a comma decimal, row 4 has a blank PEI, row 5 has "maybe" in a yes/no column, and row 6 has a SKU that may not exist in the store. The "Size" column also combines two values that map to two dimension fields.
Step 1: Confirm SKU is unique and exact
SKU is the join key, so it has to match exactly and appear once. Check for:
- Leading zeros stripped by Excel. "00412" becomes "412" when the file is opened and re-saved. Format the SKU column as text before saving.
- Case and whitespace. "ab-100 " with a trailing space is not "AB-100".
- Duplicate SKUs in Shopify. If two variants share a SKU, the match is ambiguous. Fix the duplicate first rather than guessing which to update.
Step 2: Map supplier columns to definitions
Mapping connects "Thickness (mm)" to the thickness definition, "PEI" to pei_class, and so on. Split "Size (L x W mm)" into two columns in the file (600 and 300) so each can map to a dimension field. A good mapping is reusable, since the supplier's headers will be identical next time.
Step 3: Fix typed values
| Supplier value | Problem | Fix before import |
|---|---|---|
| 9,5 | Comma decimal | Use 9.5 (and quote or avoid commas in the CSV) |
| Y / N | Not a boolean | Convert to true / false |
| maybe | Not valid for boolean | Ask the supplier, or leave blank |
| Matte; Polished | Needs to be a list | Make sure the separator is one the tool reads as a list |
| 600 x 300 | Two dimensions in one cell | Split into length and width columns |
| 12 (no unit) | Dimension needs a unit | Set mm in the mapping or add the unit |
Step 4: Review the before/after, then apply
A review step shows what each row will do before any write happens. For this file it would look like this:
| SKU | Field | Before | After | Status |
|---|---|---|---|---|
| 00412 | thickness | 9 mm | 9.5 mm | Ready (after decimal fix) |
| 00413 | is_rectified | false | true | Ready |
| 00521 | pei_class | 3 | 3 | Unchanged (blank cell) |
| 00630 | is_rectified | false | "maybe" | Rejected: not true/false |
| 00999 | all fields | n/a | n/a | SKU not found, skipped |
Approve only when the rejected and not-found rows are ones you understand. Fix them in the file and re-run, or leave them alone.
Step 5: Keep the report and know the rollback
Download the result report and keep it with the supplier file. Rollback depends on the tool: native editing has none, while some apps keep history. Read what "undo" actually covers (for example, whether metafields created by the import can be reversed) before you rely on it.
Blank cells: the quiet risk
Suppliers leave cells blank because they did not update that field, not because the value should be erased. In a tool where blank means "clear", a partial supplier file can wipe good data across hundreds of variants. Know which behavior your method has before the first real run.
Where Shoperize Variant CSV fits (and where it doesn't)
Shoperize Variant CSV is one of the Shoperize apps, listed on the Shopify App Store. It is built for exactly the workflow above.
What it does:
- Saves reusable supplier column mappings.
- Matches rows to variants by exact, unique SKU.
- Validates values against the metafield type.
- Shows a before/after review that you approve before anything is applied.
- Leaves a value unchanged when its CSV cell is blank.
- Provides CSV reports and exports of selected fields.
- Keeps 90 days of history and restores eligible updates with conflict checks. Newly created metafields cannot be automatically undone.
Limits: UTF-8 CSV up to 20 MB, 10,000 rows, 100 columns and 20 selected metafields per import. It writes to existing metafield definitions only.
What it does not do: create products, edit prices or inventory, delete anything, read XLSX files, fetch supplier files from a URL, or schedule imports. You upload each file yourself.
Pricing: $14.99/month with a 7-day free trial. Upload, mapping and validation work before purchase, so you can test your supplier file first.
To be plain about it: if you update a few dozen variants now and then, use the native bulk editor. The app earns its place when the same supplier file shape comes back repeatedly and you want mapping, validation and a review step. Spreadsheet-style sync apps are another category worth a look if you want to work in a grid with formulas and live editing rather than file imports.
Common errors and fixes
| Symptom | Likely cause | Fix |
|---|---|---|
| SKU not found | Leading zeros stripped, trailing space, or SKU not in store | Format SKU column as text, trim spaces, check the variant exists |
| SKU matches more than one variant | Duplicate SKUs in Shopify | Make SKUs unique first |
| Dimension rejected | No unit, or two values in one cell | Add the unit, split length and width |
| Boolean rejected | Y/N, yes/no or free text | Use true or false |
| List shows as one long value | Wrong separator | Use the separator your tool expects and check the review |
| Metafield not in the list | No variant-level definition | Add it under Settings > Custom data > Variants |
| Values cleared unexpectedly | Blank cell treated as "erase" | Test on a few rows; use a tool where blank means unchanged |
| Garbled characters | Wrong encoding | Save as CSV UTF-8 |
Pre-import checklist
- Definitions exist at the variant level, with the right types.
- Current values are exported and saved.
- SKU column is text, trimmed, with no duplicates.
- Decimals use a point, booleans are true/false, dimensions have units.
- Blank cells mean "no change" in your method, confirmed on a test.
- File is saved as CSV UTF-8.
- You tried a small slice first.
Which method should you use?
- Under a few hundred variants, values typed by you, occasional: native bulk editor.
- Values live in a supplier file keyed by SKU, repeated several times a year: a supplier-CSV import with mapping and review.
- Thousands of variants, and you want to work in a spreadsheet-like grid: consider a sync app of that type.
- Rule-based updates triggered by store events: Shopify Flow.
- You need to review changes first or reverse mistakes: pick the method with a review step and history, and read exactly what it can restore.
Once your supplier specs are clean, the next step is using them: here is how to sell by square foot on Shopify. More guides are on the Shoperize blog.
If your supplier files come back regularly, you can try Shoperize Variant CSV from the Shopify App Store (details at shoperize.com/apps/variant-csv) and run your own file through upload, mapping and validation during the free trial. Setup help is at help.shoperize.com.
Frequently Asked Questions
Can Shopify's bulk editor edit variant metafields?
Yes, for metafields that have a variant-level definition. Select products, choose Edit products, add the metafield columns under Columns, and edit on the variant rows. It works well for hand-entered values, but it has no SKU matching and no undo after you save.
Can I update variant metafields from a CSV?
Check Shopify's current product CSV documentation for variant metafield columns, and test with two rows first. For supplier files keyed by SKU, an import app can map columns, validate types and show a review before writing. Variant CSV is one such option, limited to existing definitions.
Does a blank cell delete a metafield?
It depends on the method. In some overwrite-style imports a blank cell can clear an existing value, so test on a small copy first. In Shoperize Variant CSV, a blank cell leaves the existing value unchanged.
Can I undo a bulk metafield update?
Shopify's bulk editor has no one-click revert once you save, so export your current values first. Shoperize Variant CSV keeps 90 days of history and can restore eligible updates with conflict checks, but metafields it newly created cannot be automatically undone.