Fieldloader

Bulk edit variant metafields with a CSV

Fieldloader takes one metafield out of Shopify as a CSV, lets you edit it in Excel or Google Sheets, and shows you exactly what would change before anything is written. Whatever you import, one click rolls it back.

How it works

  1. Export

    On Export, choose a metafield and download its CSV. It has a row for every variant, including the ones with no value yet, so the empty cells are there to fill in. A product metafield gets a row for every product. The file is separated by commas unless you choose semicolons before you download it.

  2. Edit in Excel or Google Sheets

    Open the file in Excel or Google Sheets and change the value column. Leave the other columns as they are: they are how each row finds its variant. Then save it as a CSV again — "CSV UTF-8 (Comma delimited)" in Excel, or File, Download, Comma-separated values (.csv) in Google Sheets.

  3. Check the diff preview

    On Import, choose the same metafield and your file, then press Check file. Fieldloader compares every row with what Shopify holds now and shows the diff: new values, changed values, cleared values, and rows that already match. Nothing has been written at this point.

  4. Import

    Press Apply to write the changes. Fieldloader records every current value first, then writes 25 values at a time. You can leave the page while it runs.

  5. Roll back in one click

    History lists your last 10 imports. One click on Roll back writes the values as they were immediately before that import — anything changed since then is overwritten — and a rollback can be undone the same way.

Questions

What does the CSV need to look like?

A CSV file with a header row, separated by commas or by semicolons. It needs a value column and an id or handle column, and the file Export gives you already has them: id, handle, sku, value for a variant metafield, id, handle, value for a product metafield. Any other column is ignored and named in the preview, so you can keep a column of your own notes.

Rows are matched by id. When the id is missing, or a spreadsheet has reformatted it — Excel turns a long number into something like 4.42844E+13 — the row is matched by handle and SKU instead. An empty value cell clears that value, and spaces around a value are removed.

Excel follows your computer's regional settings, and where the list separator is a semicolon — Dutch, German and French Excel, for instance — it saves CSV files with semicolons. Fieldloader reads the header row to see which of the two your file uses, so that file imports as it is. The same Excel opens a comma-separated file with every row in one column, so Export can write semicolons instead: choose Semicolon as the separator before you download. What it does not do is guess at a number: a decimal field needs 1.5, and a cell that says 1,5 is reported against its line number like any other value the field can't hold.

How many rows can a file have?

Up to 50,000 rows in one file, on both plans. A bigger store still exports to a single file; split it and import the parts one after another.

What is free?

Any import that writes up to 500 values is free, and there is no limit on how many imports you run. Values are counted as written, not as rows in the file: export 5,000 rows, change 20 of them and send the whole file back, and that import writes 20 values. Exporting, checking a file and rolling an import back are never metered.

What does the $19/month plan add?

It removes the 500-value limit, so one import can write any number of values. The 50,000-row limit on a file is the same on both plans. Subscribe on the Plan screen and Shopify asks you to approve the charge; you can go back to the free plan there at any time.

What happens when a row is wrong?

Nothing is written while any row is wrong. Check file lists every problem against its line number and column — a variant the store doesn't have, the same variant on two lines, a value the field can't hold — so you fix the file once and check it again.

Fieldloader checks the value itself for 5 field types (single_line_text_field, number_integer, number_decimal, boolean, date). For any other type Shopify has the last word when the values are written: a row it refuses is listed with what Shopify said, the other rows are still written, and you can roll the import back from History.