This guide shows you how to replace your Wix site's editor-built frontend with a self-managed, externally hosted one, so that your frontend serves your public website while your Wix site's data and business logic keep running your business, and Wix-hosted pages keep handling checkout, login, and account processes. The result is a self-managed headless project made up of your own frontend, backed by that Wix site's business logic and data.
Because you're moving a public web address between 2 hosts, most of the work happens safely in advance, and a small set of changes happen together at launch. For the architecture behind these steps, including how the domains and redirects fit together, see About Wix Site Migration to a Self-Managed Headless Project.
When you're done:
This guide uses www.example.com for your public website and checkout.example.com for your Wix-hosted-pages subdomain.
Make sure you have:
checkout.example.com.Confirm that you're working with your production site, not a proof-of-concept or test site in the same account.
Do everything in this step while your Wix site keeps serving your public domain. For example, www.example.com. Nothing in this step affects your published website.
https://preview.example.com/login/callback.TTL on your public-website and Wix-hosted-pages records to 300 seconds, 24 to 48 hours before you launch, so the switch propagates quickly. For example, lower the TTL for www.example.com and checkout.example.com.At the end of this step, your published website is unchanged and your frontend works against preview addresses.
Note: You can test checkout and login end to end before launch, but not in full isolation. Wix-hosted pages still run on your site's current primary domain, for example, www.example.com, until you migrate, so a hybrid test runs checkout on your current domain and returns visitors to your preview URL.
Deploy your production build to your external host, and confirm it loads correctly on the host's own URL. Don't change any DNS or domain settings until you've verified the production build.
www and the apex domain if you use both. For example, www.example.com and example.com.https://www.example.com/login/callback.https://www.example.com.Caution: The remaining steps change your site's domain. Don't start them until your production frontend is deployed and verified. Pointing your public domain at your external host, unassigning it from Wix, or reassigning your primary domain before the frontend is ready takes your public website offline.
At your domain registrar, update only the web DNS records for your public website:
www CNAME record or your apex A record to your external host. For example, www.example.com or example.com, respectively.MX, SPF, DKIM, and DMARC records unchanged, so your email keeps working.On your host, configure permanent (301) redirects for hostname canonicalization and for any old Wix page paths that changed in your frontend. For example, redirect http://www.example.com to https://www.example.com, and example.com to www.example.com. Then wait for DNS to propagate, which can take up to 48 hours.
In your site dashboard, go to Settings > Domains:
www.example.com and example.com, respectively.checkout.example.com, and set it as your site's primary domain. Complete any DNS steps Wix provides for the subdomain.At the end of this step, your public domain serves your frontend, and your Wix-hosted-pages subdomain serves Wix-hosted pages on your Wix site. For example, www.example.com and checkout.example.com, respectively.
checkout.example.com. For details, see Set a Domain for Wix-Hosted Pages.On your production frontend, test each flow:
www.example.com.http, apex, or another hostname: Permanent (301) redirect to your canonical address. For example, https://www.example.com.checkout.example.com, then back to your frontend.checkout.example.com, then a callback to your frontend.checkout.example.com, then a return to your frontend.TTL values to normal.If your frontend uses several regional domains, such as .com, .eu, and .cz, a single OAuth client and Wix-hosted-pages subdomain can serve all of them:
window.location.origin on each redirect, so visitors return to the region they came from.Last updated: 10 August 2026