The fastest way to take an SEO hit on a replatform is to launch with
a redirect table that is 80% right. This guide walks through how
Graftport models the redirects resource for every supported source
platform, what to verify on staging, and the launch-week checklist
that protects your organic rankings during the re-crawl window.
The redirects resource
Every migration in Graftport has a redirects resource by
default. The wizard seeds it on Step 3. It is a normal mapping like
products or customers — versioned, dry-runnable, re-runnable.
What it captures depends on the source platform:
| Source | Redirect sources |
|---|
| Magento | url_key per entity, category path prefix, url_rewrite table |
| Shopify | All existing URLRedirect rows, plus old handle history |
| WooCommerce | Permalink structure, post and product slugs, manual redirects from common plugins |
What it produces on the destination:
- A row per source URL in Shopify's URL Redirects (Online Store
→ Navigation → URL Redirects), 301-ing to the corresponding
destination URL.
- Where a single source URL points at a record that has multiple
destination paths (a product in two collections, for instance),
Graftport picks the canonical destination URL — usually the
product page, not the collection-prefixed alias.
This is the same redirect machinery Shopify exposes natively. We
do not need a third-party app for redirects on the destination
side; we use Shopify's first-party storage.
Verifying on staging
The redirect verification step happens after the build and before
launch. The drill:
- Pull the top 200 ranking URLs from Search Console. Go to
the source store's Search Console property → Performance →
Pages → sort by clicks descending → Export. CSV.
- Sample 50 URLs at random. Whole-list verification is
overkill; stratified sampling catches everything that a whole
pass would.
- Hit each URL on staging. Append the path to your
destination domain:
<staging>.myshopify.com<path>. Confirm
Shopify 301s you to a real product / collection / page that
matches the original.
- Note any 404s or surprise destinations. That list is your
manual fix queue.
- Add the missing redirects on the destination. Either
directly in Shopify Admin's URL Redirects screen, or by
editing the redirects mapping in Graftport and re-running
that resource. The mapping path is the right one if the gap
is a pattern; the manual path is the right one for one-off
bespoke URLs.
What does not need a redirect
- Admin paths. Anything inside
/admin/, /customer/,
/sales/. Shopify owns those paths on the destination; the
source equivalents were always platform-internal.
- Search and faceted-navigation result URLs. Query-driven, not
indexed by Google in any meaningful way.
- Session and tracking query strings. Magento's
?___store=,
?SID=, and the like. They carry no SEO signal.
- Tag pages on WooCommerce. They tend to be thin-content
duplicates; many merchants disable them post-launch.
Things that go wrong, when they do
A category was renamed in the source and the rewrite was
deleted. The historical URL is no longer in the source's
rewrites table. Solution: tell us the URL and the new
destination, we add it as a manual redirect in the mapping
override.
A custom plugin produced URLs we cannot see. A bespoke
catalogue extension storing routes in its own table outside the
standard rewrite tables. Solution: dump the routes from that
table to CSV, send it to support, we add them in bulk.
The destination Shopify product handle is different from the
source slug. This is by design — Shopify normalises handles
(lowercase, dash-separated, trim repeats). The redirect from old
to new still works; only the new canonical differs. Search
engines follow the 301.
/products/<handle> returns the right product, but
/collections/<x>/products/<handle> 404s. Shopify supports both
URL shapes; some themes use one, some the other. The redirects
mapping captures the alias automatically. If yours does not,
re-run the redirects resource — the default template was updated
in template version 2.x to capture this.
The launch-week Search Console checklist
When you flip DNS to the destination Shopify store, your old
ranking URLs start returning 301 to the new ones. Google re-crawls
within days. To shorten the ranking-recovery window:
- Day of DNS flip — add the new property in Search Console.
The "domain" property type, not URL-prefix. Verify ownership
via DNS.
- Submit Shopify's auto-generated sitemap. Shopify writes
/sitemap.xml for free. In Search Console → Sitemaps, paste
https://www.<your-domain>.com/sitemap.xml and hit submit.
- URL-inspect your top 20 ranking pages. Paste each URL
into the URL inspection tool, hit Request indexing. This
is the single highest-leverage move you can make in week one.
- Watch Coverage → Not Found for the first two weeks.
Anything that surfaces is a missed redirect. Add it to the
destination's URL Redirects manually.
- Watch Performance → clicks and impressions. Most
replatforms see ranking dips of 10–20% for a week, recovery
to baseline within 14 days, and a small bump above baseline
within 30 days as Google re-evaluates the new architecture.
What Graftport gives you that prior platforms did not
- A dry-runnable redirects resource. Every prior load tool
treats redirects as a one-shot CSV import. In Graftport, the
redirects mapping is dry-runnable, versioned, and re-runnable
exactly like product or customer mappings. Test before you
ship.
- A proper destination preview. The staging Shopify store has
the full redirect table loaded before DNS flips. You can hit
every URL and see the 301 behaviour, in advance, on the actual
destination.
- Re-run safety on launch night. Re-running the redirects
resource on go-live night is idempotent. Anything already in
Shopify's URL Redirects is not duplicated. New rewrites since
the rehearsal load are added.
Related reading
A staging review of the redirect table is the highest-leverage
hour you will spend on the entire migration. Spend it.