Porter

Shopify product importer

Your whole catalog into Shopify, from one spreadsheet.

Porter reads a Google Sheet and loads products, variants and typed metafields straight into your store. Every row lands in a live import manifest. Successes, errors and all.

No CSV downloads · No duplicate products · Works with sheets you already have

Import job #4F2A
Running
spring-collection-2026.xlsx312 / 480
298 imported14 errors
310AURORA-KNIT-Mproduct set
311AURORA-KNIT-Lvariant updated
312TIDAL-TEE-XSmetafield: material
313TIDAL-TEE-Sinvalid metafield type!
314HARBOR-CAP-OSproduct created
ProductsVariantsOptionsSKUsMetafieldsTagsVendorsPricesHandlesInventoryProductsVariantsOptionsSKUsMetafieldsTagsVendorsPricesHandlesInventory

The problem

Hand-keying a catalog is where launches go to stall.

Your product data already lives in a spreadsheet. Getting it into Shopify shouldn't mean exporting CSVs, fighting column mappings, or discovering at row 480 that half your metafields imported as plain text. Porter takes the sheet as-is and does the careful part for you, then shows its work, row by row.

Everything a careful import needs.

Built for real catalogs: the messy, metafield-heavy, hundreds-of-rows kind.

01

Products & variants

Full products with options, variants and SKUs, created or updated in a single pass via the GraphQL Admin API.

02

Typed metafields

Metafields land with the correct type, not stringified guesses. Definitions are matched so values render properly.

03

Straight from Google Sheets

Paste a shared Sheet link and go. No CSV exports, no re-uploading files every time the data changes.

04

Live import manifest

Watch totals, processed, succeeded and failed rows update in real time while the job runs in the background.

05

Row-level error reports

Every failed row keeps its exact reason. Export the full results as a CSV and fix only what needs fixing.

06

Re-runnable upserts

Porter upserts by product handle. Run the same sheet again to patch your catalog. It never duplicates products.

How it worksThree steps
1

Paste a sheet link

Drop in a shared Google Sheet URL with a Products or Metafields tab.

2

Porter parses & queues

It validates the headers, counts the rows, and queues a background import job, with no waiting on a frozen browser tab.

3

Watch the manifest

Rows flip to done in real time. Anything that fails keeps its reason, ready to export and fix in seconds.

Nothing imports silently.

Porter keeps a manifest for every job. You see the running total, the rows that succeeded, and, when something's off, the precise reason it failed. No mystery, no guessing which products made it in.

480
rows in the sheet
466
products imported
14
errors, with reasons
1
CSV to fix them all
Resultsjob #4F2A · completed
row 477WAVE-SCARF-OSok
row 478WAVE-SCARF-XLok
row 479DUNE-SOCK-Mmetafield 'gsm': not a number
row 480DUNE-SOCK-Lok
Download results.csv ↓

Questions, answered.

Still curious? Reach us at hello@porterpim.com

How should my spreadsheet be set up?+

Porter reads a workbook with a Products tab and/or a Metafields tab using standard column headers. If your sheet already follows that layout, it works as-is.

Does it handle metafields properly?+

Yes. Metafields are written with their correct type rather than as plain strings, so values render and validate the way Shopify expects.

Will running an import duplicate my products?+

No. Porter upserts by product handle. Importing the same sheet again patches the existing products instead of creating copies, so it's safe to re-run.

What happens to rows that fail?+

Each failed row keeps its exact error message in the import manifest. You can export the full results as a CSV, fix the flagged rows, and re-import just those.

Does Porter use the deprecated REST API?+

No. Porter writes to the GraphQL Admin API using the productSet mutation, which is the supported path for bulk product creation and updates.

Do I need a paid Google Sheets plan?+

No. A shared Google Sheet link is all Porter needs to read your data, with no extra subscription required.

From spreadsheet to storefront

Stop hand-keying products.

Paste a sheet and watch your catalog land in Shopify, one trip.