Conflict strategy
When a record has already been loaded once (so it exists on Shopify), the conflict strategy decides what happens on the next load.
| Strategy | Behavior |
|---|---|
| Overwrite (default) | Push the current payload, replacing whatever Shopify holds. |
| Skip | Leave the existing Shopify record alone; bump the run item’s skipped count. |
You pick the strategy in the Start run modal, and it applies to the whole run.
When to use overwrite
The default. Use this when:
- Graftport is the source of truth for the data.
- The merchant hasn’t been editing products in Shopify admin.
- You want any drift between Graftport’s view and Shopify’s view to be resolved in Graftport’s favor.
When to use skip
Use skip when:
- The merchant has been editing the destination store in parallel with the migration and you want their hand-edits preserved.
- You’re loading a new resource type after the rest of the migration is live, and the load might touch already-existing records you shouldn’t overwrite.
- You’re rerunning to pick up only the records that don’t already exist (e.g. the first load failed mid-way and you’re filling in the gaps).
Per-record control
Conflict strategy is a run-level setting today. If you need per-field control, use the field filter (see only-dirty) to narrow what an update actually writes — combine that with overwrite to safely push only the fields you intend.
What’s deferred
“Update only the fields that changed” — auto-detecting which fields drifted on the destination side and patching only those — is on the roadmap but not yet available. Today the choice is binary: overwrite the whole payload, or skip.
Last updated on