Migrating to StoreFronts
Moving an existing site onto a StoreFront is mostly a URL problem. Search engines and other sites already point at your old addresses, and every one of those that stops working costs you traffic you have already paid for. This page covers what to check before you start, how StoreFront URLs are built, and how to redirect the old ones.
Before you start
Use the same domain. If your existing site is at www.myproductsllc.com, use that exact
domain and prefix in the
Change Store Web Address
wizard. UltraCart automatically adds the bare myproductsllc.com as an alias, so both host
names reach the site.
Check for hard-coded URLs in your content. Content pointing at MID.ultracartstore.com or
MID.ultracartdev.com will break when you go live. Custom content URLs that start with /
survive the change. You can ignore the full URLs you see in page source for template-generated
content: templates build those from $baseUrl and $baseThemeUrl and pick up the new host
name immediately. Only HTML you typed into Pages or Item Content is at risk.
Turn on HTTPS. StoreFronts support HTTPS throughout, and serving all traffic over it is both better for customers and a ranking signal.
Set up tracking before the switch, not after. Configure Google Analytics or your tracker of choice so you can actually measure what the migration did.
Submit your sitemap once you are live. See Sitemaps and crawling. Registering the sitemap gets the new site crawled sooner.
How StoreFront URLs work
By default, item page URLs use the item ID:
/category-folder/ITEM-ID
/category-folder/ITEM-ID.html
A Custom URL overrides that with a readable path. Set it at StoreFronts → Pages → [product group page] → Items tab.
The important part is that a Custom URL is not cosmetic. It creates a real route in the StoreFront routing system, which is what makes it a valid target for a 301 redirect. A redirect pointing at a path that does not exist as a route will not save.
Plan the migration
Before you change anything, write down every URL search engines currently know about:
- Export the sitemap from your current platform.
- Use Google Search Console to list indexed pages.
- Crawl the site with a tool such as Screaming Frog.
- Build a spreadsheet with the old URL, the UltraCart item ID, the intended new URL, and a priority based on traffic or ranking.
The priority column matters. On a large catalog you will not finish everything before launch, and this tells you what to do first.
Build your page structure
At StoreFronts → Pages, create a category structure that matches or improves on your existing hierarchy. For each product group page:
- Set the URI, for example
/shop/streamers/. - Configure the SEO title and description. See Search Engine Optimization.
- Set the item template to
template_item.vm.
Set custom URLs on items
For each item you are migrating:
- Go to StoreFronts → Pages → [product group] → Items and assign the item.
- Select empty in the Custom URL column and enter your slug.
- Select the checkmark, then Save Page.
Leave the .html extension off. Periods are stripped when the field saves, so
product-name.html becomes product-namehtml and the slug breaks. UltraCart's routing handles
.html for backward compatibility without you adding it.
Slug conventions that hold up:
- Lowercase, words separated by hyphens rather than underscores.
- Short but descriptive.
- Matching your previous URL format where you can, which reduces how many redirects you need.
| Item ID | Old platform URL | Custom URL |
|---|---|---|
STRM-SLV-METALLIC | /products/metallic-sleeve-streamer/ | metallic-sleeve-streamer |
TEA-ORG-001 | /tea/organic-earl-grey.html | organic-earl-grey |
Trailing slashes and extensions
Item pages: use a plain slug in the Custom URL field, for example /product-name. Browsers
can still reach /shop/product-name.html, which redirects to the canonical form.
Group and category pages: use a trailing slash, for example /category/. Group pages behave
like directories.
Avoid spaces, special characters, session IDs or query parameters, and URLs long enough that nobody will read them.
Configure 301 redirects
Once custom URLs are set, map the old addresses. Go to StoreFronts → Advanced → URI Mapping and for each old URL:
- From URI: the old path, for example
/products/old-item-url. - To URI: the full new path including the category prefix, for example
/shop/streamers/metallic-streamer-sleeve. - Select Send Permanent Redirect (301).
- Save.
Always 301, never 302. A 302 is a temporary redirect and search engines do not pass ranking through it, so the link equity you are trying to preserve is lost.
Three shapes cover most cases:
| Situation | Old | New |
|---|---|---|
| Different structure | /products/item-name/ | /shop/category/item-name |
| Changed naming | /shop/STRM-SLV-MET | /shop/streamers/metallic-streamer-sleeve |
| Several old URLs, one new page | /products/widget-blue/, /shop/widget-blue.html, /WIDGET-BLUE | /shop/widgets/blue-widget |
Bulk import for large catalogs
For hundreds or thousands of products, use Import Spreadsheet or Import JSON on the URI Mapping screen.
The spreadsheet has to be Microsoft Excel format with four columns and no header row:
| Column | Contents |
|---|---|
| 1 | From URI, for example /old-url/ |
| 2 | To URI, for example /new-url |
| 3 | Send permanent redirect, true or false |
| 4 | Exclude from sitemap, true or false |
Wildcards
A single * matches a path segment and carries it through to the target:
From: /products/*/specs
To: /shop/product-guides/
One wildcard per mapping, and it acts as a catch-all from that point forward. Test the result before relying on it, because a wildcard that matches more than you expect is hard to notice.
Test before you launch
Work through this before the switch:
- Every migrated product has a Custom URL.
- Every legacy URL has a redirect in URI Mapping.
- Canonical links are on. See Canonical links.
- A sample of redirects has been tested.
- The sitemap is generated and ready to submit.
To test a redirect, open your browser's developer tools, go to the Network tab, and visit an
old URL. You want a 301 Moved Permanently status and a Location header carrying your new
URL, then the correct page.
After launch
Weeks 1 and 2: watch Google Search Console for crawl errors, add redirects for any 404s that show up, and check server logs for 404 patterns.
Months 1 to 3: watch organic traffic, rankings on key product pages, and entrance pages in your analytics. Keep adding redirects as gaps appear.
Ongoing: audit redirects monthly for new 404s, and quarterly for redirect chains. A chain like A to B to C is slower, loses some link equity, and search engines may not follow it all the way. Collapse chains to point straight at the final destination. Export the URI Mapping list periodically and remove entries that have been obsolete for a year or more.
Update your own internal links to the new URLs rather than relying on the redirects to do it.
Common scenarios
From Shopify, whose URLs look like /products/product-name: create a /products/ group
page and set the Custom URL to product-name, which reproduces the old URL exactly and needs no
redirect. If you would rather restructure to /shop/, redirect
/products/product-name to /shop/product-name.
From WooCommerce, whose URLs look like /product-category/product-name/: create a matching
group page and set the Custom URL to product-name, then redirect the trailing-slash form to
the new path.
From a static HTML site with URLs like /store/items/ITEM123.html: create a
/store/items/ group page and either match the old filename as the Custom URL, or move to a
friendly name and redirect.
Consolidating several domains into one StoreFront: handle the cross-domain hops at your DNS or hosting layer, and use URI Mapping only for the path portion once traffic has arrived.
Troubleshooting
"Invalid Page" when configuring a redirect
The target URL is not a recognized route. Confirm you set a valid Custom URL with no periods, that you are using the exact full path including the category prefix, and that you saved the page after setting the Custom URL. Load the target URL directly to prove it works before pointing a redirect at it.
A redirect creates duplicate content
You redirected to the item ID rather than the Custom URL. Point redirects at
/shop/product, not /shop/ITEM-ID.
A Custom URL does not work
The page was probably not saved, or the slug contained characters that were stripped. Go back to
Pages → [group page] → Items, confirm the field shows what you expect with no extension,
select Save Page, clear your browser cache, and try both /category/slug and
/category/slug.html.
Search engines still show the old URLs
This is normal and takes weeks to months. To speed it up, submit the new sitemap in Search Console with only canonical paths in it, use URL Inspection to request indexing on your important pages, confirm the redirects are 301 rather than 302, and update internal and external links where you can.
Frequently asked questions
The canonical link on my item pages includes .html. Can I enforce a trailing slash
instead?
Yes, but it is a merchant property UltraCart Support has to enable. Email Support to request it.
Once enabled, canonical links render as https://demo.ultracartstore.com/Mens-Hoodie/ rather
than https://demo.ultracartstore.com/Mens-Hoodie.html.


Where to go next
- Upgrading from a legacy checkout if you are an existing merchant turning StoreFronts on for the first time.
- Search Engine Optimization for the SEO fields, canonical links, and structured data referenced throughout this page.
- Sitemaps and crawling for submitting your sitemap once you are live.