Shopify destination
Shopify is the only destination Graftport writes to today. The destination is configured per migration in step 2 of the wizard.
What you need
A custom app installed on the destination Shopify store, with an
Admin API access token (shpat_…).
To create one in Shopify admin:
- Open Settings → Apps and sales channels → Develop apps.
- Create an app, name it
Graftport Migration. - Configure Admin API scopes (table below).
- Install the app on the store.
- Copy the Admin API access token. This is the value you paste into Graftport.
The token is shown once at install time. If you lose it, you must uninstall and reinstall the app to get a new one. Save it in the merchant’s password manager before closing the tab.
Required scopes by resource
The token needs read + write for every enabled resource. Don’t grant more than the migration uses — narrow scopes are easier to audit and the merchant feels better about it.
| Resource | Scopes |
|---|---|
| Product | write_products, write_inventory |
| Collection | write_products (collections live under products scope) |
| Customer | write_customers |
| Order | write_orders, plus write_assigned_fulfillment_orders if shipments are migrated |
| Discount code | write_discounts, write_price_rules |
| Gift card | write_gift_cards |
| Blog | write_content |
| Market | write_markets |
| Redirect | write_online_store_pages |
Locations
If the merchant has more than one Shopify location, you’ll need to resync locations before the first load run so Graftport knows the location IDs to assign inventory to. The migration page has a Resync locations button under destination settings.
The default mapping assigns all inventory to the first active location. To split inventory across locations, fork the products mapping and emit per-location quantities.
Idempotency
Once a record is loaded, Graftport remembers its Shopify identity. The next load that targets the same record either:
- Updates in place if the payload changed, or
- Skips if the payload is unchanged.
This is what makes re-running a load on the same migration safe — Graftport won’t duplicate records.
Conflict strategy
When a record already exists on Shopify and the new payload differs, the conflict strategy decides what happens. See Runs → Conflict strategy.