Jobs and row results

Every import you've ever run is kept, with a durable outcome for each row. This is where you find out what happened, what it created, and what to fix.

The Jobs page

Jobs in the left nav splits into two sections:

Active
Jobs currently running, each with live progress. Cancel from here too.
Past imports
Everything finished, newest first, with the file name, import type, target, row counts and credits used. Click one to expand its detail.

The app's Home page shows the five most recent jobs as a shortcut, alongside your credit balance.

Screenshot

The Jobs page

One active job with a live progress bar above a list of past imports showing mixed statuses — Done, Cancelled, Error — with their counts.

assets/screenshots/jobs-list.png

A job's detail

Opening a job gives you five stat tiles:

TileMeaning
Total rowsData rows in the file, excluding the header.
SucceededRows written to Shopify.
FailedRows that couldn't be written. Refunded.
SkippedRows that matched something existing and wrote nothing. Not charged.
Credits usedThe actual charge, after refunds. Should equal Succeeded.

Plus the metadata: import type, target, file name, started and completed timestamps, and status. And, if the job has any, an uncertain count.

Status Done doesn't mean everything worked

Done means every row reached a final outcome. Read the Failed tile too — a job where 400 of 500 rows failed is still Done.

The per-row results table

Four columns: row number, title, status and details.

Row number
1-based, excluding the header — so results row 12 is spreadsheet row 13.
Title
A label identifying the row in your terms: the definition key, the metaobject handle, the article title.
Status
One of the six below.
Details
For a success, the Shopify ID of what was created. For a failure, the reason. Plus any warnings.

Results are paged 200 rows at a time. On very large jobs the detail view shows the first portion with a banner saying how many of how many you're looking at.

Screenshot

Job detail with per-row results

The five stat tiles above a results table containing a success with its gid://shopify/… ID, a failure with its message, and a success carrying a warning.

assets/screenshots/job-detail-rows.png

Row statuses

StatusMeaningCharged
Pending Not attempted yet. On a finished job this means it was cancelled or interrupted before reaching this row — Retry will pick it up. No
Success Written to Shopify. The created object's ID is in the details. Yes
Skipped Matched something that already existed; nothing written, per your conflict mode. No
Error Failed. Nothing was written. The reason is in the details. Refunded
Uncertain Interrupted mid-write, so it may or may not exist in Shopify. Never silently retried and never silently dropped — check this one by hand. Refunded

Warnings on successful rows

A row can succeed and still have something worth telling you. Warnings sit alongside the success in the details column, and they're easy to miss if you only read the counts.

Common ones:

Worth a scan after any migration. The data is in, but not always all of it.

Download errors as CSV

On a job with failures there's a Download errors as CSV button. It produces import-<jobId>-errors.csv:

import-42-errors.csv
Row,Title,Error
14,care_guide,"No product found matching ""merino-crewneck"""
27,highlights,"ownerType ""PRODUCTS_VARIANT"" is not valid — did you mean ""PRODUCTVARIANT""?"
58,loyalty_tier,"CUSTOMER metafields need the ""write_customers"" access scope, which this app hasn't been granted."

Open it next to your source file, use the row numbers to find the originals, fix them, and import just those rows as a new file. Full walkthrough →

Verifying against Shopify

Successful rows carry the ID of what they created, which is the link back to your store.

What you importedWhere to check
Metafield definitionsSettings → Custom data → the owner resource
Metafield valuesOpen the product, page or collection; the field is in its metafields section
Metaobject definitionsSettings → Custom data → Metaobjects
Metaobject entriesContent → Metaobjects → the definition
Blog articlesOnline Store → Blog posts

For a blog migration in particular, the ID list is how you tell which articles came from which run — useful if you need to unpick an accidental double import, since ImportKit can't delete anything for you.

How long results are kept

Job records and their rows are kept while the app is installed, so you can review or resume an import later. They're deleted when Shopify sends a shop redaction request after you uninstall, or sooner if you ask us.

The uploaded file itself is never saved — only the values from the columns you mapped, stored with the job so failures can be reviewed and imports resumed. What's stored, in detail →

Getting help with a job

Email support@importkit.app with your store domain and the job number — it's in the URL when you open a job. Attach the errors CSV if you have one. That's usually enough to answer without going back and forth.

Next