Runs
A run is one execution of one or more phases over a migration. Runs are the unit of work you start; everything else is configuration.
The three phases
| Phase | What it does |
|---|---|
| Extract | Pulls the latest data from the source platform’s API. |
| Transform | Runs the pinned JSONata mapping over that data, producing Shopify-shaped records ready to load. |
| Load | Pushes the staged records to Shopify. |
You can run any non-empty subset of phases. The most common combinations are:
- Extract only — first contact with a source. Confirms credentials and pulls in the data. Nothing reaches Shopify.
- Transform + load — re-do the work without re-pulling from the source. Common after a mapping fix.
- Full (extract + transform + load) — the production case once configuration is settled.
See Runs → Phases for the picker UX and what each combination implies.
Run status
| Status | Meaning |
|---|---|
| Pending | Queued, waiting to start. |
| Running | In progress. |
| Succeeded | All resources finished without fatal errors. |
| Failed | At least one resource hit a fatal error or the run was aborted. |
| Canceled | An operator canceled the run before it finished. |
Final statuses (Succeeded, Failed, Canceled) never change. You can’t “resume” a failed run — you start a new run, which automatically picks up where the data left off.
Run items
Each run produces one run item per enabled resource. The run item shows you:
- Which phase it’s currently in.
- The result once it’s done (Succeeded / Failed).
- Per-resource counts: extracted, transformed, loaded, skipped, errored.
- Any errors with the failing record IDs.
A failed item doesn’t fail its siblings. The run as a whole shows Failed if any item failed, but the others completed normally and their data is usable.
Why runs are cheap to repeat
Graftport keeps your extracted source data and your staged records between runs. That means:
- Re-running transform doesn’t re-pull from the source.
- Re-running load only pushes records that haven’t landed yet (or have changed).
- Re-running extract updates existing source rows in place rather than duplicating.
This is why you can iterate on a mapping in five-minute cycles instead of an hour each.