Staged records
A staged record is one Shopify-shaped payload, ready to load.
There’s at most one per (migration, resource, source row). Staged
records are produced by the transform phase from the raw source data
plus your mapping, and consumed by the load phase when it pushes them
to Shopify.
Where to find them
Open the migration and switch to the Data tab. The table lists the latest staged record for every source row across all your runs — newest update first.
Click any row to expand the transformed payload. The payload is fetched on demand so the table stays fast even with tens of thousands of records, and you can flip between two views:
- Preview (default) — a resource-aware rendered view. Each field is labelled and grouped (core, images, variants, metafields, SEO, etc.) so you can read the staged record without parsing JSON. Use this to share a record with a non-technical stakeholder for sign-off before the load phase pushes it to Shopify.
- JSON — the exact JSON the loader will send to Shopify. Pick this when you need to copy a value, debug a precise field, or audit what landed.
The toggle lives next to the payload metadata at the top of the expanded row.
Filters
The filter bar lets you narrow the list down to what you’re looking for. All filters combine with AND.
| Filter | What it does |
|---|---|
| Resource | Limit to one resource type — products, customers, collections, etc. |
| Status | Limit by sync state. Clean = pushed and unchanged since. Dirty = unpushed changes waiting for the next load. Error = the last load attempt failed. Untouched = no transform has run yet. Dry-run only = a dry-run staged a payload but no real run has. |
| Search source ID | Substring match on the originating source ID — useful when you know the SKU, the customer ID, etc. |
Click Advanced for two more:
- Shopify GID — exact match on the destination Shopify GID
(
gid://shopify/Product/12345…). Use this to jump from the Shopify admin straight back to the staged payload that produced a record. - Payload field equals… — generic JSON-path filter on the payload
itself. Type a dotted path on the left (e.g.
descriptionHtml,variants.0.title,tags) and the value to match on the right. Works on any field your mapping emits.
How to use it
- Pre-load review — after a transform, scan a few payloads to confirm the mapping’s output is what you expect before the load phase pushes them to Shopify. Pair this with a dry run to stage payloads without touching Shopify.
- Post-load audit — for any record, see the exact JSON that
landed, alongside its
payload_hashand the time it was loaded. - Failure triage — filter by Error to see only the records
whose last load attempt failed; the panel also shows the recorded
last_errorfor that row. - Find by Shopify object — copy a GID from the Shopify admin into the Shopify GID filter to walk back to the staged payload.
Status mechanics
A record becomes dirty when the transform produces new output for it (the new payload’s hash differs from the last loaded hash).
A record clears back to clean when a load successfully pushes it.
A record is marked error when the last load attempt failed and the payload still hasn’t been pushed. Retrying the load (or fixing the underlying cause and re-running) will pick it up automatically. See Retry.