Skip to Content

Magento

Magento 2.3 and 2.4 are supported. Graftport authenticates using an admin username and password and then talks to the standard Admin REST API.

Credentials

The migration wizard asks for three fields:

FieldExampleNotes
Store domainmagento2-b2b.example.comHostname only — no protocol, no trailing slash.
Admin usernamegraftport-readonlyUse a dedicated admin user, not a person’s account.
Admin passwordStored encrypted at rest. Update from the migration’s Settings when it rotates.

Don’t reuse the merchant’s day-to-day admin login. Create a service account so the merchant can revoke Graftport specifically without locking themselves out.

Required permissions

Create a Magento admin user with a custom role that grants read access to:

  • Catalog — products, attributes, categories, prices.
  • Customers — accounts, addresses.
  • Sales — orders, invoices, shipments, credit memos.
  • Marketing — cart price rules (discount codes), gift cards.
  • Content — blocks, pages (used for blog content if migrated).
  • Stores — store views, websites (used for market mapping).

The user does not need write or admin permissions. Read-only is sufficient for everything Graftport does on the source side.

Quirks Graftport handles

  • Configurable products vs simple products — the default mapping template flattens configurable + child simples into a single Shopify product with variants.
  • Multi-store views — Graftport extracts the default store view’s values; per-locale overrides need a forked mapping today.
  • Image base URLs — pulled from the store’s media URL; if the merchant uses a CDN with a different host, override the images[].src line in the products mapping.
  • Stock per source — the default mapping sums quantities across Magento sources into a single Shopify location. Use a fork if the merchant maintains separate Shopify locations.

Validating the connection

The fastest way to verify credentials is to start an extract-only run with products enabled. Graftport pulls a small page first; if auth fails you’ll see the error on the run item within seconds.

See Runs → Phases for what extract-only does and doesn’t do.

Last updated on